PHP会话变量在表单提交后没有进行

时间:2015-05-23 15:38:05

标签: php session

我刚刚开始使用会话变量,而且我遇到了一些问题。

我试图将表单处理脚本中的变量回显到另一个页面,但目前我没有得到任何结果。

在开始之前,让我说我已经检查了其他问题,包括这个问题:

  

Session variables not working php

我检查了第一个答案清单上的所有内容,但仍然没有 我得到的唯一错误是:

  

注意:未定义索引:id

我假设是因为当页面首次启动时,它并不知道id是什么,但即使在提交错误后仍然存在。

的index.php

<?php
    session_start();
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
?>
<!DOCTYPE html>
<html>
<head>
    <title>PHP Sessions</title>
</head>
<body>
    <?php echo $_SESSION['id']; ?>

    <form action="submit.php" method="post">
        <input type="text" name="number" id="number">
        <button type="submit">Submit</button>
    </form>
</body>
</html>

submit.php

<?php
    session_start();

    try {
        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
            $id = $_POST['number'];
        };

        header('Location: http://home.com/');
        exit();
    } catch (Exception $e) {
        echo $e->getMessage();
    }
?>

2 个答案:

答案 0 :(得分:1)

正如我的评论中所提到的,你没有给它任何东西,这就是你得到这个通知的原因。因此,请使用isset()

来使用条件语句
if(isset($_SESSION['id'])) { 
   echo "The session is set."; 
} else{ 
   echo "Sorry, it's not set."; 
} 

if(isset($_SESSION['id'])) { 
   echo "The session is set.";
} 
   else{ 
    $_SESSION['id'] = "ID123"; 
}
  • 将会话数组传递给POST数组:

从初始页面开始,您可以使用三元运算符(参见参考注释)来回显它是否已设置。

<?php
    session_start();
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
?>
<!DOCTYPE html>
<html>
<head>
    <title>PHP Sessions</title>
</head>
<body>
    <?php echo isset($_SESSION["id"]) ? $_SESSION["id"] : '' ?>

    <form action="submit.php" method="post">
        <input type="text" name="number" id="number">
        <button type="submit">Submit</button>
    </form>
</body>
</html>
  • 然后在你的&#34; submit.php&#34;页面,将会话数组传递给POST数组:

旁注:我对这些内容进行了评论,将这些内容放回去时,请评论echo $id;;否则会抛出通知。

// header('Location: http://home.com/');
// exit();

submit.php 并使用条件!empty()作为POST数组。

<?php
    session_start();

    try {
        if ($_SERVER['REQUEST_METHOD'] === 'POST') {


    if(!empty($_POST['number'])){

       $_SESSION['id'] = $_POST['number'];

    // $id = $_POST['number'];

       $id = $_SESSION['id'];

        echo $id;

    }

        };

// header('Location: http://home.com/');
// exit();
    } catch (Exception $e) {
        echo $e->getMessage();
    }
?>

如果您愿意,''末尾的isset($_SESSION["id"]) ? $_SESSION["id"] : ''可用于输入默认文字/数字。

即:

isset($_SESSION["id"]) ? $_SESSION["id"] : 'default value'

<强>参考(S):

答案 1 :(得分:0)

$ _SESSION变量与所有变量一样,必须先创建。在您的表单上,您尝试显示变量但它尚不存在。

如果您尝试在之前初始化会话,则可以正常运行。

//If the variable exists, display it.
if ( isset($_SESSION['id'] )
    echo $_SESSION['id'];