2016-07-27 4 views
-2

У меня есть 2 php-страницы, одна для формы входа и 2-го контента. Когда пользователь нажал кнопку отправки, и страница переадресовывается на другую страницу, значение сеанса отсутствует и отображается ошибка Undefined index на второй странице.PHP Session не работает после перенаправления с использованием 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(); 
} 

вторая страница: Вот строка, где отображается ошибка (неопределенная индекс: имя и рождение)

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

это не сработает, потому что вы положили! в условии if, он не пойдет в этот блок и не будет создавать сеанс –

+0

@FaranAli, даже я удаляю! in, если все еще сеанс не сохраняется – 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/'); 
    } 
} 

Я изменил условия, чтобы проверить, 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; 
    } 
} 
?> 

Вторая страница: -

<?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 с, попробуйте что-то добавить к сессии за их пределами:

$_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 отсутствует на 2-й странице – User014019

+0

Проверить, что имя отправителя соответствует вашему сообщению формы. –

Смежные вопросы