2016-07-27 96 views
-2

我有2個PHP頁面,一個用於登錄表單和第二個內容。 當用戶點擊提交按鈕並且頁面將重定向到另一個頁面時,會話的值缺失並在第二頁顯示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」],那麼您將如何在第二頁上獲取它? – user3782114

回答

0

你在第一頁上的代碼確實是沒有感覺,試試這個:

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["contract"] = $name; 
     $_SESSION["birth"] = $birth; 

     header('Location: http://yoursite.com/page/details/'); 
    } 
} 

我改變了條件來檢查是否fie lds並非爲了讓它變得更好,我把頁面轉換移到了一個合理的地方,並且使用了合適的PHP而不是糟糕的JavaScript hack。

還要注意的是變量$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; 
    } 
} 
?> 

第二頁: -

<?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

來自login.php的會話值在第二頁中缺失 – User014019

+0

支票帖子名稱與您的表單帖子輸入匹配。 –