不明白为什么这段代码不起作用

时间:2009-11-06 21:15:16

标签: php html session

我对会话不熟悉,但从我认为复杂起来应用<input>。你能看一下这段代码并告诉我它为什么不起作用。我让它早点工作然后就死在了我身上。该程序的功能是填写表单并使用正则表达式验证合法信息,我只需要帮助获取会话以保存数据。

<?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

$fname = $_REQUEST['fname'];

$fname = $_SESSION['fname'];


print<<<form

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

  <input type ="text"
             name="fname"
             value="">

    <input type ="submit">

</form>

form;

$_SESSION['fname'] = $fname;

 print $_SESSION['fname'];


?>

</body>
</html>

3 个答案:

答案 0 :(得分:2)

您正在从$ _REQUEST读取$ fname,然后使用$ _SESSION中的值覆盖它,然后将其重新放回$ _SESSION。到目前为止,它应该按照设计工作:)你想做什么?如果你想用$ _REQUEST接收的值设置$ _SESSION变量,请省略第二个“$ fname =”行。

答案 1 :(得分:1)

蒂莫西, 更改您的代码,以便检查会话/请求是否为空

类似的东西:

if(isset($_REQUEST['fname'])){
  $fname = $_REQUEST['fname'];
}else if(isset($_SESSION['fname'])){
  $fname = $_SESSION['fname'];
}

答案 2 :(得分:0)

试试这个:

if (!isset($_SESSION['fname'])) {
    $_SESSION['fname'] = '';  // default value
}
if (isset($_POST['fname'])) {
    $_SESSION['fname'] = $_POST['fname'];
}

print<<<form

…

form;

print $_SESSION['fname'];