2014-01-24 5 views
0

Я пытаюсь справиться с сессиями, поскольку это часть PHP. Я не очень хорош. Не могли бы вы помочь мне объяснить, что здесь происходит на двух страницах, которые у меня есть? Это дает неопределенный индекс, и я не знаю, почему.Новое для сессий в PHP

Благодаря

Файл 1

<strong>Test Form</strong> 
    <form action="test2.php" method"post"> 
    <input type="text" name="picturenum"/> 
    <input type="submit" name="Submit" value="Submit!" /> 
    </form> 

    <?php 

    // starting the session 
    session_start(); 


    if (isset($_POST['Submit'])) { 
    $_SESSION['picturenum'] = $_POST['picturenum']; 
    } 


?> 

Файл 2

<?php 

session_start(); 

echo $_SESSION['picturenum']; 

?> 
+0

Какой ваш 'test2.php', это «Файл 1» или «Файл 2»? – Rikesh

+4

Вам не разрешено выводить ничего перед вызовом session_start(). Переустановите код так, чтобы он находился в верхней части файла, перед любым выходом. – MasNotsram

+0

Test2 является файлом 2. – Strobes

ответ

1

Это работает:

формы (teste1.php)

<?php 
session_start(); 
// Opening <html>, etc goes below 
?> 
<strong>Test Form</strong> 
<form action="test2.php" method"post"> 
<input type="text" name="picturenum"/> <!-- make sure you type something here --> 
<input type="submit" name="Submit" value="Submit!" /> 
</form> 

Файл 2 (test2.php)

<?php 
if (isset($_POST['picturenum'])) { 
$_SESSION['picturenum'] = $_POST['picturenum']; 
echo $_SESSION['picturenum']; 
}else{ 
echo "something wrong with the POST"; 
} 
?> 
6

session_start() должны идти в верхней части страницы:

<?php 
session_start(); 
// Opening <html>, etc goes below 
?> 
<strong>Test Form</strong> 
    <form action="test2.php" method"post"> 
    <input type="text" name="picturenum"/> 
    <input type="submit" name="Submit" value="Submit!" /> 
    </form> 

<?php 
    if (isset($_POST['Submit'])) { 
    $_SESSION['picturenum'] = $_POST['picturenum']; 
    } 
?> 
+1

Также как насчет упоминания об обращении к ошибкам PHP? – Rikesh

+0

Он должен быть включен, чтобы получить ошибку, которую они получают –

+0

Или лучше: ** прочитать журнал ошибок **. – AD7six

1

Насколько я могу видеть , Вы начальный сеанс после формы в первом файле. Правило следующее: вы должны начать сеанс до любым echo или любым выходом HTML, даже перед пробелом. Итак, в основном, session_start() должен быть вашей первой линией после <?php.
Затем, как вы доберетесь до второй страницы? Если вы закроете браузер и затем снова его откроете, сеанс, конечно, не будет сохраняться, и вы получите свой неопределенный индекс.
Прокомментируйте это, если вам нужны дальнейшие объяснения.

+0

То, как я попадаю на следующую страницу, является действием формы, это правильно? – Strobes

+0

Strobes

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