我正在尝试使用文本框值作为会话变量

时间:2013-09-10 06:31:00

标签: php html session textbox

我在单击按钮时尝试使用文本框值作为会话变量,到目前为止,我已将其工作但是硬编​​码,如何让它使用文本框值?

这是会话代码:

<?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'])"

3 个答案:

答案 0 :(得分:1)

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

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

要做相反的事情,让文本框显示会话的价值,你会:

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

请务必注意,如果您希望文本框实际上执行某事,则需要将输入框包裹在表单标记周围。

<form>标记告诉浏览器表单的开始和结束位置。您可以在<form></form>标记之间添加各种HTML标记。 (thanks echoecho!)

如果您正在RESTful工作,GET应该用于您只获取数据的请求,POST应该用于您正在进行某些操作的请求。

一些例子:

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

Thanks Skilldrick!

形式&amp; 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>';

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

答案 1 :(得分:1)

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

<input type='text' id='starurl' name='url' value=''/>

文本框需要name属性,该属性由$_POST$_GET$_REQUEST超全球使用。

然后根据您的表单提交方法(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>

我希望这会有所帮助。

答案 2 :(得分:1)

只需使用这个

// 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'];
    }

?>