2015-08-28 3 views
0

Я совершенно новый программист, и я пытаюсь разработать веб-сайт на php. Все, что я хочу сделать в этой части кода, - это «прочитать» входные данные пользователя и сохранить их в качестве переменных сеанса, чтобы делать/вычислять что-то еще на другой подстранице. Чтобы убедиться, что все работает нормально, я добавил строки echo "Welcome ",$_SESSION["firstname"];echo "ok", но он не работает. Вы можете мне помочь? Это мой код:

<!DOCTYPE html> 
<html> 
<body> 
<form method="post" action=""> 
     <b>First Name:</b> <input name="firstname" type="text" value=""></br></br> 
     <b>Last Name:</b> <input name="lastname" type="text" value=""></br></br> 
     <b>Age:</b> <input name="age" type="number" min="0" value=""></br></br> 
     <b>Number of people in household:</b> <input name="numberofpeopleinhousehold" type="number" min="1"value=""></br></br> 

     </br></br> 
     <input type="submit" name="submit" value="Submit"> 
</form 

<?php 
session_start(); 
if (isset($_POST["submit"])){ 
$_SESSION["firstname"]= $_POST["firstname"]; 
$_SESSION["lastname"]= $_POST["lastname"]; 
$_SESSION["age"]= $_POST["age"]; 
$_SESSION["numberofpeopleinhousehold"]= $_POST["numberofpeopleinhousehold"]; 
} 
echo "Welcome ".$_SESSION["firstname"];//here is.... 
echo "ok" 
?> 

</body> 
</html> 
+0

Включить 'error_reporting (E_ALL),' 'перед тем session_start();' – mario

+4

Место session_start(), прежде чем что-либо в файле. Для этого требуется установить заголовки, поэтому они должны быть до выхода. – Ahmad

+0

Какова ваша ошибка ?? –

ответ

1

Это действительно работает. Если вы посмотрите на исходный код, вы увидите, что ваше имя отозвано.

Одна проблема заключается в том, что вам не хватает знака в конце тега формы.

</form 

должен быть

</form> 

Кроме того, вы должны начать сеанс до любого HTML. Попробуйте это ...

<?php 
session_start(); 
if (isset($_POST["submit"])){ 
$_SESSION["firstname"]= $_POST["firstname"]; 
$_SESSION["lastname"]= $_POST["lastname"]; 
$_SESSION["age"]= $_POST["age"]; 
$_SESSION["numberofpeopleinhousehold"]= $_POST["numberofpeopleinhousehold"]; 
} 
?> 
<!DOCTYPE html> 
<html> 
<body> 
<form method="post" action=""> 
     <b>First Name:</b> <input name="firstname" type="text" value=""></br></br> 
     <b>Last Name:</b> <input name="lastname" type="text" value=""></br></br> 
     <b>Age:</b> <input name="age" type="number" min="0" value=""></br></br> 
     <b>Number of people in household:</b> <input name="numberofpeopleinhousehold" type="number" min="1"value=""></br></br> 

     </br></br> 
     <input type="submit" name="submit" value="Submit"> 
</form> 

<?php 
if ($_SESSION["firstname"] != ""){ 
    echo "Welcome ",$_SESSION["firstname"]; 
    echo "ok"; 
} 
?> 

</body> 
</html> 
+0

Может показаться, что он работает, но сеанс не начинается с вызова seession_start, где он находится. –

1

Что session_start() делает это посылает куки в заголовке страницы, когда он служил в браузере. Если вы уже отправили некоторые данные в браузер, например, в вашу форму, PHP не сможет запустить сеанс. Вам нужно переместить session_atart() в начало страницы, выше формы или любого echo s. Кроме того, вам не хватает полуколонии, как отмечают другие. Кроме того, вам необходимо правильно закрыть тег <form>.

+0

Хотя это может и не быть точным ответом, который ищет OP, я переместил session_start на самый верх, и это сработало! (Да, другие ответы сказали это, но у этого не было ничего, кроме этого решения) ' ' – BillyNair

1

эхо-выход внутри, если сеанс delcare начинается сверху, проверен и работает 100%. Примечание- добавить код PHP на верхней и закрытия тега формы

<?php 
session_start(); //session start must be first line 

if (isset($_POST["submit"])){ 
    $_SESSION["firstname"]= $_POST["firstname"]; 
    $_SESSION["lastname"]= $_POST["lastname"]; 
    $_SESSION["age"]= $_POST["age"]; 
    $_SESSION["numberofpeopleinhousehold"]= $_POST["numberofpeopleinhousehold"]; 
    echo "Welcome ".$_SESSION["firstname"]; //inside if condition 
    echo "ok"; 
} 
?> 
<!DOCTYPE html> 
<html> 
<body> 
<form method="post" action="#"> 
    <b>First Name:</b> <input name="firstname" type="text" value=""/></br></br> 
    <b>Last Name:</b> <input name="lastname" type="text" value=""/></br></br> 
    <b>Age:</b> <input name="age" type="number" min="0" value=""/></br></br> 
    <b>Number of people in household:</b> <input name="numberofpeopleinhousehold" type="number" min="1"value=""/></br></br> 

    </br></br> 
    <input type="submit" name="submit" value="Submit"/> 
</form> <!-- close form tag --> 

</body> 
</html> 

enter image description here

+1

' [! [

+0

Можете ли вы объяснить мне роль задержек с косой чертой между именами суперглобала и скобками ID ключа массива? –

+0

@AedixRhinedale :) извините обновленный ответ :) ... –

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