2016-07-27 12 views
-2

ログインフォーム用と2番目の2つのPHPページがあります。 ユーザーが[送信]ボタンをクリックしてページが別のページにリダイレクトされると、セッションの値が失われ、第2ページにUndefined indexエラーが表示されます。PHPを使用してリダイレクトした後でPHPセッションが機能しない

Login.php

session_start(); 
if(isset($_POST['submit'])){ 
    if(!($_POST['name'] == '' && $_POST['birth'] == '')){ 
     $name = $_POST['name']; 
     $birth= $_POST['birth_Y'].'-'.$_POST['birth_M'].'-'.$_POST['birth_D']; 
     $_SESSION["birth"]=$birth; 
     $_SESSION["name"]=$name; 
    } 
} 

$var = (strlen($birth)>0 && strlen($_POST['name'])>0); 
if($var){ 
    echo("<script>location.href = '/page/details/';</script>"); 
exit(); 
} 

2ページ目: ここでエラーが(未定義のインデックス:名前と誕生を)表示された行だ

session_start(); 
$url = 'http://example.com/folder/test.php?service=123455566666&submit=Data&name='.$_SESSION["name"].'&birth='.$_SESSION["birth"].''; 
+0

あなたが入れているので機能しません!もし条件が満たされていれば、そのブロックには行かず、セッションを作成しません。 –

+0

@FaranAli、私も削除します!セッションがまだ保存されていない場合は – User014019

+0

最初のページに$ _SESSION ["name"]を設定していない場合、どのようにして2ページ目に移動しますか? – user3782114

答えて

0

最初のページにあなたのコードは本当にありませんになります感覚で、これを試してみてください:

私は、 ldsはそれをより良くするために空ではありません。適切なPHPを使用するとともに、厄介なJavaScriptハックではなく、意味のある場所でページの変更を行いました。

ここでも変数$name$birthは役に立たないことに注意してください。これらの変数の内容をセッション配列に直接入れることはできますが、混乱させないために残しました。

+0

まだセッションが保存されておらず、あなたのコードを試した後にリダイレクトしていません – User014019

+0

現在のコードを試してみて、使用していたフィールドに注意を払わなかった...あなたは本当にPHPの基本に戻るべきです。 – AntoineB

0

コード全体を書き換えます。

最初のページ: -

<?php 
session_start(); 
if(isset($_POST['submit'])){ 
    if(!empty($_POST['name']) && !empty($_POST['birth_Y') && !empty($_POST['birth_M']) && !empty($_POST['birth_D'])){ 
     $name = $_POST['name']; 
     $birth= $_POST['birth_Y'].'-'.$_POST['birth_M'].'-'.$_POST['birth_D']; 
     $_SESSION["birth"]=$birth; 
     $_SESSION["name"]=$name; 
    } 
} 
?> 

2ページ目: -

<?php 
session_start(); 
$url = 'http://example.com/folder/test.php?service=123455566666&submit=Data&name=' .$_SESSION["name"]. '&birth=' .$_SESSION["birth"]. ''; 
echo $url; 
?> 
+0

私はあなたのコードが動作していない試みた。セッションはまだ保存されていません – User014019

+0

どのようなエラーが発生したか教えてください。 –

+0

エラーはありませんが、 '$ url'をエコーし​​て、名前と出生に値がありません – User014019

0

あなたは途中でセッションがあることを約束していない、その場合にはexit、とスクリプトを終了しています持続した。あなたは自分のリダイレクト前session_write_closeを追加することにより、手動で行うことができます。

session_write_close(); 
echo "<script>location.href = '/page/details/';</script>"; 
// Or better, for many reasons: header('Location: /page/details'); 
exit; 

をそれらの外にセッションに何かを追加してみてください、あなたのif Sをデバッグするには:

$_SESSION['foo'] = 'bar'; 
if(isset($_POST['submit'])){ 
    if(!($_POST['name'] == '' && $_POST['birth'] == '')){ 
     // ... 
    } 
} 
+0

あなたの提案を試みましたが、リダイレクト後にセッションの値がまだ失われています – User014019

0

あなたは以下のコードで試してみて下さい。それは正常に動作しています。

<?php 
session_start(); 
if(isset($_POST['submit'])){ 
    if((isset($_POST['name']) && $_POST['name'] != '') && (isset($_POST['birth_Y']) && $_POST['birth_Y'] != '') && (isset($_POST['birth_M']) && $_POST['birth_M'] != '') && (isset($_POST['birth_D']) && $_POST['birth_D'] != '')){ 
     $_SESSION["name"] = $_POST['name']; 
     $_SESSION["birth"] = $_POST['birth_Y'].'-'.$_POST['birth_M'].'-'.$_POST['birth_D']; 

     $var = (strlen($_SESSION["name"])>0 && strlen($_SESSION["birth"])>0); 
     if($var){ 
      exit("<script>location.href = '/page/details/';</script>"); 
     } else { 
      exit("<script>alert('Something Wrong!');</script>"); 
     } 
    } else { 
     exit("<script>alert('Please fill all details.');</script>"); 
    } 
} 
?> 
+0

問題がある場合は、ここにコメントを付けてください! –

+0

2番目のページにlogin.phpのセッション値がありません – User014019

+0

チェック・ポスト名がフォーム・ポスト入力と一致していることを確認してください。 –

関連する問題