代码之家  ›  专栏  ›  技术社区  ›  deepcode.co.uk

不理解此代码为什么不起作用

  •  1
  • deepcode.co.uk  · 技术社区  · 6 年前

    我对会话不熟悉,但从我看来,应用起来很复杂 <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 回复  |  直到 15 年前
        1
  •  1
  •   TeckniX    15 年前

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

    类似:

    if(isset($_REQUEST['fname'])){
      $fname = $_REQUEST['fname'];
    }else if(isset($_SESSION['fname'])){
      $fname = $_SESSION['fname'];
    }
    
        2
  •  2
  •   Pekka    15 年前

    您正在从$请求中读取$fname,然后用$会话中的值覆盖它,然后将其放回$会话。到目前为止,它应该按设计工作:)你想做什么?如果要用通过$\u请求接收到的值设置$\u会话变量,请省去第二个“$fname=”行。

        3
  •  0
  •   Gumbo    15 年前

    试试这个:

    if (!isset($_SESSION['fname'])) {
        $_SESSION['fname'] = '';  // default value
    }
    if (isset($_POST['fname'])) {
        $_SESSION['fname'] = $_POST['fname'];
    }
    
    print<<<form
    
    …
    
    form;
    
    print $_SESSION['fname'];
    
    推荐文章