2009-11-05 3 views
0

Я не могу видеть, как сессии php работают, im пытается создать форму, которая сохраняет данные, а затем помещает ее против регулярных выражений, чтобы проверить ее законную информацию. на данный момент я пытаюсь выяснить, как получить сессию для регистрации, но я не могу понять это, пожалуйста, помогите. им новое для сессийвыпуск с php-сессиями

<?php session_start(); ?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>regex</title> 


</head> 

<body> 

<?php 

$_SESSION['fname']=$fname; 

$ufname = $_SESSION['fname']; 

print<<<form 
<form method="post" action=""> 
form; 

print<<<firstname 
First Name: 
<input type="text" 
      name="fname" 
    value="$fname"> 

firstname; 

print<<<submit 

<input type="submit"> 

submit; 
print "</form>"; 


if($fname == NULL){ 
print "lets go"; 
}else{ 
print "good"; 
}// end if 

print "$ufname"; 

$_SESSION['ufname'] = $ufname; 
?> 

</body> 
</html> 
+0

Возможно, вы забыли session_start() [см. Http://fr2.php.net/manual/ ru/function.session-start.php] – 2009-11-05 06:25:36

+0

@RC - у него есть это! – mauris

+0

у него не было, когда я добавил комментарий (тот же для комментария Kaivosukeltaja) – 2009-11-05 06:29:43

ответ

-1

Вам нужно позвонить session_start(), прежде чем вы можете получить доступ к $_SESSION. Кроме того, вы пишете до $_SESSION['fname'], прежде чем читать с него.

EDIT: обновленная версия кода показывает, что вы звоните session_start(), но и то, что вы действительно перезаписать значение $_SESSION['fname'] с $ имя_файла (который не определен в этой точке), прежде чем читать $ ufname от него. Попытайтесь изменить порядок этих строк, что, вероятно, должно устранить проблему.

+0

у него есть session_start прямо в начале – mauris

+0

session_start() наверху (я тоже пропустил), и он полагается на глобальные регистры для значения $ fname , – cletus

+0

В предыдущей, неформатированной версии, на которую я ответил, не было session_start(). Спасибо за downvotes, ребята. – Kaivosukeltaja

3

Нет проблем с обработкой сеанса. Однако вы устанавливаете $ _SESSION ['fname'] в $ fname, который ранее не был объявлен или не задан. Таким образом, значение, хранящееся в индексе $ _SESSION ['fname'], будет равно null. Вот почему вы не получаете никакого результата из переменной сеанса.

+1

$ fname устанавливается, если глобальные регистры включены. – cletus

+0

А, ладно ... Хорошо. – BraedenP

2

Ваша проблема в том, что вы напрямую обращаетесь к $ fname. Попробуйте использовать $ _POST ['fname']. Ваш способ использования переменной имеет угрозы безопасности, и по этой причине она отключена по умолчанию в более новых версиях.

0
<?php session_start(); ?> 

<html> 
<head></head> 
<body> 

<?php 
if (!isset($_SESSION['name']) && !isset($_POST['name'])) { 
    // if no data, print the form 
?> 
    <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> 
     <input type="text" name="name"> 
     <input type="submit" name="submit" value="Enter your name"> 
    </form> 
<?php 
} 
else if (!isset($_SESSION['name']) && isset($_POST['name'])) { 
    // if a session does not exist but the form has been submitted 
    // check to see if the form has all required values 
    // create a new session 
    if (!empty($_POST['name'])) { 
     $_SESSION['name'] = $_POST['name']; 
     $_SESSION['start'] = time(); 
     echo "Welcome, " . $_POST['name'] . ". A new session has been activated for you. Click <a href=" . $_SERVER['PHP_SELF'] . ">here</a> to refresh the page."; 
     echo "<br>Your session id is: ".session_id(); 
    } 
    else { 
     echo "ERROR: Please enter your name!"; 
    } 
} 
else if (isset($_SESSION['name'])) { 
    // if a previous session exists 
    // calculate elapsed time since session start and now 
    echo "Welcome back, " . $_SESSION['name'] . ". This session was activated " . round((time() - $_SESSION['start'])/1) . " seconds(s) ago. Click <a href=" . $_SERVER['PHP_SELF'] . ">here</a> to refresh the page."; 
    echo "<br>Your session id is: ".session_id(); 
} 
?> 
</body> 
</html> 
Смежные вопросы