0

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

这是会话代码:

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

3 回答 3

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

?>
于 2013-09-10T07:04:15.083 回答
1

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

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

要反其道而行之,并让文本框显示会话的值,您可以:

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

需要注意的是,如果您希望文本框实际执行某些操作,则需要将输入框包裹在表单标签周围。

<form>标签告诉浏览器表单在哪里开始和结束。<form>您可以在和标签之间添加各种 HTML</form>标签。(感谢回声!)

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

一些例子:

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

感谢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>';

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

于 2013-09-10T06:33:40.937 回答
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>

我希望这有帮助。

于 2013-09-10T06:53:30.653 回答