2015-05-23 4 views
0

Является новым для сеансов PHP и сталкивается с проблемой при передаче переменной session.Couldn't выяснить, в чем проблема в этом коде. Page1Невозможно передать переменную сеанса на другую страницу с помощью PHP

<html> 
<head><title>My First PHP</title></head> 
<body> 
<FORM NAME ="form1" METHOD ="POST" ACTION = "main1.php"> 
<table > 
<tr><td>First Name: <INPUT TYPE = "TEXT" VALUE ="" NAME = "first"></td></tr> 
<tr><td>Last Name: <INPUT TYPE = "TEXT" VALUE ="" NAME = "last"></td></tr> 


<tr><td><INPUT TYPE = "Submit" Name = "Submit1" VALUE = "Click Here"></td></tr></table> 
</FORM> 
<?php 
session_start(); 


if(isset($_POST['Submit1'])){ 

$firstname = $_POST['first']; 
$lastname = $_POST['last']; 
$firstname=ucwords($firstname); 

$_SESSION["firstname"] = $_POST['first']; 
$_SESSION["lastname"] = $_POST['last']; 

echo $_SESSION["firstname"] ."-" . $_SESSION["lastname"] ; 

echo "Hello, ".$firstname. " " .$lastname ."!" . "<br>"; 
} 
?> 


</body> 
</html> 

страница 2

<html> 
<head><title>My second PHP</title></head> 
<body> 

<?php 
session_start(); 
$first = $_POST["first"]; 
$last = $_POST["last"]; 
$first = ucwords($first); 
$last = ucwords($last); 
$firstname = $_SESSION["firstname"]; 
echo $firstname; 
?> 



<FORM NAME ="form1" METHOD ="POST" ACTION = "main1.php"> 
<table align="center" > 
<tr><td>First Name: <INPUT TYPE = "TEXT" NAME = "first" VALUE="<?php echo htmlentities($first); ?>"/></td></tr> 
<tr><td>Last Name: <INPUT TYPE = "TEXT" VALUE ="<?php echo htmlentities($last); ?>" NAME = "last"></td></tr>  
</table> 

</FORM> 


</body> 
</html> 

Здесь я не в состоянии получить доступ к $ ПгвЬЫате с помощью сессии. Может кто-то помочь, в чем проблема?

Undefined index: firstname is th error. Вы проверили много сообщений об этом, но все еще ошибка сохраняется.

+0

session_start(); должен быть на самом верху, прежде чем запускать любой html. Вам не нужно проходить сеанс вручную, это происходит автоматически. – Samir

ответ

0

переменная сеанса может использоваться на протяжении всего сайта, на любой странице

Однако, это могло быть ошибкой с POST? попробуйте просто установить переменные сеанса в строку и посмотреть, были ли они получены на другой веб-странице.

1

Посмотрите, что из вашего кода ваша переменная сеанса инициализируется после отправки данных, я имею в виду после нажатия кнопки отправки вашего первая страница. Но когда вы отправляете его, он переходит на следующую страницу без инициализации переменной сеанса. Это означает, что переменная сеанса не инициализируется. Таким образом, вы можете создать другую страницу, которая связана между двумя страницами. Создайте другую страницу с именем linkingPage.php. Изменение первое действие страницы на linkingPage.php и вырезать эти строки кода PHP и вставьте его на вновь созданную страницу

<?php 
session_start(); 
if(isset($_POST['Submit1'])){ 

    $firstname = $_POST['first']; 
    $lastname = $_POST['last']; 
    $firstname=ucwords($firstname); 

    $_SESSION["firstname"] = $_POST['first']; 
    $_SESSION["lastname"] = $_POST['last']; 

    //echo $_SESSION["firstname"] ."-" . $_SESSION["lastname"] ; 

    //echo "Hello, ".$firstname. " " .$lastname ."!" . "<br>"; 

    header('Location:main1.php'); 
} 
?> 

последние две строки закомментированного, вызывают теперь это unnesseceray. Теперь запустите код, и я надеюсь, что он сработает. Наслаждаться.

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