【问题标题】:how to submit php session varibles into form in hidden fields?如何将 php 会话变量提交到隐藏字段中的表单中?
【发布时间】:2015-01-18 20:39:28
【问题描述】:

我有一个创建服务器会话变量的脚本。

我需要使用隐藏的表单字段将其中 2 个变量插入一个简单的表单(在 php 页面上)。

<?php
session_start();
?><pre><?php
print_r($_SESSION);
?> 

我用上面的代码创建了一个简单的 php 页面。我可以在页面上轻松看到会话变量,正如您在我从页面复制的这部分代码中看到的那样:

[login] => andrew8855
[pass] => $P$BIsPUTQ/e4mJSlaDsRLA48mB20xxIC1
[email] => andrew@mysiteaddress.com
[name_f] => Andrew
[name_l] => 
[street] => 
[street2] => 
[city] =>

在自定义表单中,我需要将上面的变量获取/打印到表单中:

<input type="hidden" name="login_email" id="login_email" value="[email]" />
<input type="hidden" name="login_user" id="login_user" value="[login]" />

所以当提交表单时,会话中存在的变量会在隐藏的表单字段中提交。

在搜索了几个小时后,我发现我可以用 session_start();.... 以某种方式做到这一点,但我不清楚如何做到这一点。感谢您的任何建议。

【问题讨论】:

标签: php html forms session php-shorttags


【解决方案1】:

更改您的 html 模板:

<input type="hidden" name="login_email" id="login_email" value="<?php echo $_SESSION['email'];?>" />
<input type="hidden" name="login_user" id="login_user" value="<?php echo $_SESSION['login'];?>" />

请注意,如果您启用了short_open_tags,您可以这样做:

<?=$_SESSION['email']?>

而不是:

<?php echo $_SESSION['email'];?>

【讨论】:

  • 我在表单中尝试了这两种方法,但都没有工作。测试时,我检查了源,并且没有一个服务器变量在表单中显示为值。在查看源代码时,似乎变量会被插入隐藏的表单字段中。当我尝试提交表单时,它只是停滞不前。
  • 我需要在表格前添加session_start();吗?
  • 您的 html 代码是否在 .php 文件中? (它必须是这个工作)。
【解决方案2】:

使用 session_start() 函数启动会话。

使用 PHP 全局变量设置会话变量:$_SESSION。

如果您没有使用任何自动会话处理框架...如果您使用自己的脚本,那么您必须在使用之前启动会话。您可以尝试

<?php
// Start the session<br/>
session_start();
?>

这是设置脚本的开头。之后您可以使用会话变量。

更改您的 html 模板:

<input type="hidden" name="login_email" id="login_email" value="<?php echo $_SESSION['email'];?>" />
<input type="hidden" name="login_user" id="login_user" value="<?php echo $_SESSION['login'];?>" />

从 PHP 5.4 开始,无论 short_open_tag (php.ini) 设置如何,内联 echo 短标签始终处于启用状态。

如果没有启用,请设置

short_open_tag=在 php.ini 中打开

之后重启你的Apache服务器,然后你就可以使用了

<?=$_SESSION['email']?>

而不是:

<?php echo $_SESSION['email'];?>

您可以尝试http://www.w3schools.com/php/php_sessions.asp 进行会话。我认为这对您有帮助。

How to enable PHP short tags? 用于启用 php 短标签。

【讨论】:

    【解决方案3】:
    <?php
     // I suppose (and I can tell by the code you wrote that it is so) that you already have some values 
     // in the $_SESSION array
    
     session_start();
    
     echo "<input type=\"hidden\" name=\"login_email\" id=\"login_email\" value=\"" . $_SESSION['email'] . "\"";
    
    ?>
    

    也许“”和反斜杠有问题,但想法是您必须将 $_SESSION['mail'] (或登录)作为值

    【讨论】:

    • 我不太清楚您的解决方案。您提供的代码会在表格上方、表格之外吗?如果是这样,隐藏表单的 html 是什么?谢谢。
    • 就是表格,我只是写在php的一行,因为input的值是一个var,所以中间没有引入php() 我把整行写成 PHP 行
    猜你喜欢
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多