【问题标题】:Php sessions and form actionPHP 会话和表单操作
【发布时间】:2016-05-10 13:11:45
【问题描述】:

我正在尝试从表单中获取数据并仅使用会话将其发送到另一个页面。不使用帖子

我已经阅读了this,但是如果我将页面名称放在动作属性中,则不会执行脚本,并且总是在按下按钮时首先执行动作。

这是我的解决方案

<html>
<body>
   <h3>a) Inserir uma nova pagina: </h3>
        <form action="" method="post">
            <p>userid: <input type="text" name="input_userid"/></p>                
            <p>Nome de Nova Pagina <input type="text" name="input_nova_pagina"/></p>
            <p><input type="submit" name="Submit" value="Adicionar nova pagina!"/></p>

            <?php
            session_start();
            if (isset($_POST['Submit'])) { 
                 $_SESSION['userid'] = $_POST['input_userid'];
                 $_SESSION['nova_pagina'] = $_POST['input_nova_pagina'];
                 header('Location: /xampp/Aptana/BDproj2/addp.php');
             } 
            ?>
        </form>
</body>

第二页是:

<?php
  session_start();
 ?>

还有这个

<html>
<body>
<?php
    echo "Favorite color is " . $_SESSION["userid"] . ".<br>";
    echo " nome da pag : " . $_SESSION["nova_pagina"];
    //$userid = $_REQUEST['input_userid'];
    //$nova_pagina = $_REQUEST['input_nova_pagina'];

?>
</body>

有没有更好的方法来做我想做的事?我希望我很清楚。

【问题讨论】:

  • 那是因为你在我的朋友标题之前输出
  • 在我一开始就有 session_start 之前,但它也没有让它工作。我显示的代码没有任何错误。我想这就是你所说的?
  • 将错误报告添加到您的打开 PHP 标记(例如 &lt;?php error_reporting(E_ALL); ini_set('display_errors', 1);)之后的文件顶部,然后是其余代码,以查看它是否产生任何结果。如果您看到发送的标头,您就会知道该做什么。
  • 尝试使用没有标题说明的原始版本,顶部有 php 会话并使用 action="addp.php" 但它在跳转到第二页时显示相同的错误行动:未定义的变量:_SESSION

标签: php html forms session


【解决方案1】:

我希望这次我明白了 :)。我已经删除了之前的答案。这只是一个有 action = "current_page.php" 的问题。我的是 php_sessions.php。如果这不是您想要的,那么您应该尝试 jquery 或 ajax....

第一页(名为 php_sessions.php):

 <?php
        ini_set('display_errors', 1);
        error_reporting(E_ALL); 
        session_start();

         if (isset($_POST['Submit'])) { 
             $_SESSION['userid'] = $_POST['input_userid'];
             $_SESSION['nova_pagina'] = $_POST['input_nova_pagina'];
             header('Location: xampp/Aptana/BDproj2/addp.php');
         } 

    ?>    
    <html>
        <body>
           <h3>a) Inserir uma nova pagina: </h3>
                <form action="php_sessions.php" method="post">
                    <p>userid: <input type="text" name="input_userid"/></p>                
                    <p>Nome de Nova Pagina <input type="text" name="input_nova_pagina"/></p>
                    <p><input type="submit" name="Submit" value="Adicionar nova pagina!"/></p>
                </form>

        </body>
    </html>

第二页 xampp/Aptana/BDproj2/addp.php:

<?php
    ini_set('display_errors', 1);
    error_reporting(E_ALL); 
    session_start();

?>

    <html>
        <body>
            <?php
                echo "Favorite color is " . $_SESSION["userid"] . ".<br>";
                echo " nome da pag : " . $_SESSION["nova_pagina"];
                //$userid = $_REQUEST['input_userid'];
                //$nova_pagina = $_REQUEST['input_nova_pagina'];

            ?>
        </body>
    </html>

【讨论】:

  • 您的第二页:将失败。他们的错误很明显。
  • 你测试了吗? :) 只要第二页是“addp.php”并且它的相对路径是“xampp/Aptana/BDproj2/”,这对我有用。我试图保留原始数据。
  • 你的意思是告诉我你的第二页没有session_start();可以工作?我觉得这很难相信。
  • 是的,我假设当我在第一页启动会话时,已经创建了一个 cookie 文件,因此第二页将保存会话并且不会出现任何错误。我希望这不是因为我在 cloud9 中测试过。
  • OP 在标题之前输出。这就是他们的代码不起作用的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
相关资源
最近更新 更多