【问题标题】:I'm trying to use a textbox value as a session variable我正在尝试使用文本框值作为会话变量
【发布时间】:2013-09-13 18:13:26
【问题描述】:

我正在尝试在单击按钮时将文本框值用作会话变量,到目前为止我可以使用它但它是硬编码的,我如何让它使用文本框值来代替?

这是会话代码:

<?php
session_start();
$_SESSION['url'] = "url";
?>

这是文本框:

echo "<input type='text' id='starurl' value=''/>";
echo "<br><button onclick='save_a9({$row99['starID']})'>Approve</button><button onclick='save_d9({$row99['starID']})'>Disapprove</button><br>";

这是 save_a9:

 function save_a9(id) {
        $.post('response6.php', {starID:id}, 
        function(result) { 
            alert(result); 
            window.location.reload();
    });
}



你是这个意思吗?该值不需要表单,只需转到另一个页面即可使用

<?php
session_start();
if (isset($_POST['url']) {
  $_SESSION['url'] = $_GET['url'];
}
?>

echo "<input type='text' id='starurl' value='" . htmlspecialchars($_SESSION['url'])"

【问题讨论】:

    标签: php html session textbox


    【解决方案1】:

    当您分配 _SESSION url 时,您将需要使用发布的变量来分配字符串。

    $_SESSION['url'] = $_GET['url'];
    

    相反,让文本框显示会话的值,您可以:

    echo "<input type='text' id='starurl' value='" . htmlspecialchars($_SESSION['url']) . "'/>";
    

    需要注意的是,如果你想让文本框真正一些事情,你需要将输入框包裹在一个表单标签上。

    &lt;form&gt; 标签告诉浏览器表单在哪里开始和结束。您可以在&lt;form&gt;&lt;/form&gt; 标签之间添加各种HTML 标签。 (thanks echoecho!)

    如果您以 REST 方式工作,GET 应该用于您只获取数据的请求,而 POST 应该用于您正在做某事的请求。

    一些例子:

    • 获取显示特定 SO 问题的页面
    • 发表评论
    • 点击“加入购物车”按钮并发送 POST 请求。

    (Thanks Skilldrick!)

    表单和 PHP 文件如下所示:

    <?php
    session_start();
    if (isset($_POST['url']) {
      $_SESSION['url'] = $_POST['url'];
    }
    
    echo '<form action="POST" method="?">';
    echo "<input type='text' id='starurl' value='" . htmlspecialchars($_SESSION['url']) . "'/>";
    echo '</form>';
    

    您会注意到表单更新时,会话也会更新。当您关闭浏览器并再次打开它时,您会在输入框中看到旧内容。 (按“回车”保存输入框,不带提交按钮)。

    【讨论】:

    • 不是url,是用户输入的字符串,还有名字
    • @babyoth 相同的区别:) 我在答案中添加了更多内容。
    • 感谢我在我的问题中添加了一些代码,以反映我认为您所说的代码明智,如果我走在正确的轨道上请告诉我
    【解决方案2】:

    只需使用这个

    //page1.php

    <form action="page2.php" method="post">
    
        <input type="text" name="session_value">
        <input type="submit" name="set_session" value="Set Session">
    
    </from>
    

    //page2.php

    <?php
        if(isset($_POST['set_session'])){
            session_start();
            $_SESSION['url'] = $_POST['session_value'];
        }
    
    ?>
    

    【讨论】:

    • 我不想使用我想使用按钮的表单
    【解决方案3】:

    要从文本框中获取值,首先将 HTML 修改为:

    &lt;input type='text' id='starurl' name='url' value=''/&gt;

    文本框需要$_POST$_GET$_REQUEST 超全局变量使用的name 属性。

    然后取决于您的表单提交方法(GET 或 POST):

    $_SESSION['url'] = $_GET['url']        // Default method for form submission
    $_SESSION['url'] = $_POST['url']       // For <form method="post">
    $_SESSION['url'] = $_REQUEST['url']    // Works for both  
    

    编辑:
    由于您使用的是按钮 onclick 事件来设置会话变量,因此您可以使用它(假设您使用的是 jQuery):

    Javascript:

    $('button').click(function(){
        var url = $('#starurl').val();
        $('#sessionURLDiv').load('save_session_url.php?url='+url);
    });
    

    PHP:save_session_url.php:

    <?php
    session_start();
    if ( isset ( $_GET['url'] ) ) {
        $_SESSION['url'] = $_GET['url'];
    }
    ?>
    

    HTML:
    只需在页面中的任何位置添加此 div。

    <div id = "sessionURLDiv"></div>
    

    我希望这会有所帮助。

    【讨论】:

    • 你能解释一下整个过程,你想要达到什么目的?这可能会有所帮助。
    • 我正在使用带有 onclick 事件的按钮。我正在尝试在文本框中输入一个值,然后单击将其添加到会话中并在另一个页面上使用的按钮,该页面更新了数据库中的一行,这有帮助吗
    • 这个div会显示什么?
      还是空白?
    • 它将为空白,因为 PHP 没有返回任何内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 2015-10-22
    • 1970-01-01
    相关资源
    最近更新 更多