首页 文章

PHP Pass变量到下一页

提问于
浏览
177

看起来很简单,但我找不到一个好方法 .

在第一页说我创建一个变量

$myVariable = "Some text";

表单对该页面的操作是“Page2.php” . 所以在Page2.php中,我怎样才能访问该变量?我知道我可以用会话来做,但我认为这对于一个简单的字符串来说太过分了,我只需要传递一个简单的字符串(文件名) .

我怎样才能做到这一点?

谢谢!

7 回答

  • 28

    HTML / HTTP是无状态的,换句话说,您在上一页上所做/所看到的内容与当前页面完全没有关联 . 除非你使用会话,cookie或GET / POST变量之类的东西 . 会话和cookie非常易于使用,会话比cookie更安全 . 更安全,但不是完全安全 .

    Session:

    //On page 1
    $_SESSION['varname'] = $var_value;
    
    //On page 2
    $var_value = $_SESSION['varname'];
    

    在尝试访问 $_SESSION 数组之前,以及在将任何输出发送到浏览器之前,请记住在这两个页面上运行 session_start(); 语句 .

    Cookie:

    //One page 1
    $_COOKIE['varname'] = $var_value;
    
    //On page 2
    $var_value = $_COOKIE['varname'];
    

    会话和cookie之间的最大区别在于,如果您正在使用会话,变量的值将存储在服务器上,如果您正在使用cookie,则会在客户端上存储 . 我想不出使用cookie而不是会话的任何好理由,除非你希望数据在会话之间保持不变,但即便如此,最好将它存储在数据库中,并根据用户名或ID检索它 .

    GET and POST

    您可以将链接中的变量添加到下一页:

    <a href="page2.php?varname=<?php echo $var_value ?>">Page2</a>
    

    这将创建一个GET变量 .

    另一种方法是在提交到第二页的表单中包含一个隐藏字段:

    <form method="get" action="page2.php">
        <input type="hidden" name="varname" value="var_value">
        <input type="submit">
    </form>
    

    然后在第二页:

    //Using GET
    $var_value = $_GET['varname'];
    
    //Using POST
    $var_value = $_POST['varname'];
    
    //Using GET, POST or COOKIE.
    $var_value = $_REQUEST['varname'];
    

    如果您想通过邮件将表单的方法更改为 post ,只需将其更改为 post . 两者都同样不安全,虽然GET更容易入侵 .

    除了会话数据之外,每个新请求都是一个全新的脚本实例,这在我第一次开始用PHP编写代码时就 grab 了我 . 一旦你习惯它,它就很简单了 .

  • 9

    感谢上面的答案 . 这里's how I did it, I hope it helps those who follow. I' m希望将注册号从一个页面传递到另一个页面,因此regName和regValue:

    创建您的第一页,将其命名为 set_reg.php

    <?php
    
    session_start();
    
    $_SESSION['regName'] = $regValue;
    
    ?>
    
    <form method="get" action="get_reg.php">
        <input type="text" name="regName" value="">
        <input type="submit">
    </form>
    

    创建第二页,将其命名为 get_reg.php

    <?php
    
    session_start();
    
    $regValue = $_GET['regName'];
    
    echo "Your registration is: ".$regValue.".";
    
    ?>
    
    <p><a href="set_reg.php">Back to set_reg.php</a>
    

    虽然不如上面的答案那么全面,但为了我的目的,这以简单的方式说明了各种元素之间的关系 .

  • 7

    在请求中传递数据

    您可以将其作为隐藏字段嵌入表单中,也可以将其添加到表单操作URL中

    echo '<input type="hidden" name="myVariable" value="'.
         htmlentities($myVariable).'">';
    

    要么

    echo '<form method="POST" action="Page2.php?myVariable='.
        urlencode($myVariable).'">";
    

    请注意,这也说明了在传递数据时使用htmlentitiesurlencode .

    在会话中传递数据

    如果不需要将数据传递给客户端,那么会话可能更合适 . 只需在每个页面的开头调用session_start(),就可以获取并将数据设置到$ _SESSION数组中 .

    安全

    由于您声明您的值实际上是文件名,因此您需要了解安全性后果 . 如果文件名已从客户端到达,则假定用户已篡改该值 . 检查它的有效性!当用户将路径传递给重要系统文件或其控制下的文件时会发生什么?您的脚本可以用来“探测”服务器上是否存在的文件?

    正如你刚刚开始在这里开始的那样,值得提醒的是,这适用于任何到达$ _GET,$ _POST或$ _COOKIE的数据 - 假设你最大的敌人精心制作了这些数组的内容,并相应编码!

  • 1

    在php中传递值有三种方法 .

    • 通过邮寄

    • 得到

    • 通过制作会话变量

    这三种方法用于不同的目的 . 例如,如果我们想在下一页接收我们的值,那么我们可以使用'post'($ _POST)方法: -

    $a=$_POST['field-name'];
    

    如果我们在多个页面上需要变量值,那么我们可以使用会话变量:

    $a=$_SESSION['field-name];
    

    在使用此语法创建SESSION变量之前,我们首先必须在php页面的最开头添加此标记

    session_start();
    

    GET方法通常用于在用于从用户输入的同一页面上打印数据 . 其语法如下:

    $a=$_GET['field-name'];
    

    POST方法通常比GET消耗更安全,因为当我们使用Get方法时,它可以显示URL栏中的数据 . 如果数据是更敏感的数据,如密码那么它可以是inggeris .

  • 5

    会话将是唯一的好方法,你也可以使用GET / POST,但这可能是不安全的 .

  • 16

    试试这段代码

    使用隐藏字段我们可以将php varibale传递给另一个页面

    page1.php中

    <?php $myVariable = "Some text";?>
    <form method="post" action="page2.php">
     <input type="hidden" name="text" value="<?php echo $myVariable; ?>">
     <button type="submit">Submit</button>
    </form>
    

    将php变量传递给隐藏字段值,以便您可以将此变量访问到另一个页面

    使page2.php

    <?php
     $text=$_POST['text'];
     echo $text;
    ?>
    
  • 405
    **page 1**
    <form action="exapmple.php?variable_name=$value" method="POST"> 
        <button>
            <input  type="hidden" name="x">
        </button>
    </form>`
    

    page 2

    if(isset($_POST['x'])) {
        $new_value=$_GET['variable_name'];
    }
    

相关问题