Php 您可以携带$POST变量吗?
可能重复:Php 您可以携带$POST变量吗?,php,html,variables,Php,Html,Variables,可能重复: 这是我目前的代码: $search = $_POST['s']; $search = strtoupper($search); $search = strip_tags($search); $search = trim($search); $search = mysql_real_escape_string($search); 我需要能够进行$search变量到我的第二、第三等页面 我是php的初学者,我有点被困在这里看来sessions是你的朋友。在最简单的形式中,会话只
这是我目前的代码:
$search = $_POST['s'];
$search = strtoupper($search);
$search = strip_tags($search);
$search = trim($search);
$search = mysql_real_escape_string($search);
我需要能够进行$search变量到我的第二、第三等页面
我是php的初学者,我有点被困在这里看来sessions是你的朋友。在最简单的形式中,会话只会将数据放入cookies中,cookies发送到用户的浏览器或从用户的浏览器发送出去。确保在对会话执行任何操作之前调用
session\u start()
,这将启动或恢复用户的会话。之后,您可以使用$\u SESSION
作为全局关联数组,该数组将在页面之间持久存在
Xander已将您链接到文档。确保您理解session\u start()
,否则会出现一些错误
注意:不要将此基本会话格式用于敏感数据。考虑使用类似memcache的东西来存储数据,只需将memcache键放入$\u会话即可。此外,考虑加密会话。这些是处理用户身份验证/登录时应该考虑的更高级的事情。虽然建议使用会话,但另一个选项是在后续生成的页面上使用隐藏字段(具有相同的名称并填充适当的值)。然后,当这些页面被发回时,它们也会在
$\u POSTS
中有可用的字段(这次由隐藏字段提供,而不是原始文本字段)
优点:
- “绑定到当前页面”;对于一些页面上下文敏感的东西来说真的很好!(会话的范围是浏览器,而不是页面。)
- 避免了对会话/cookie的需要(如果会话已被用于其他目的,则这不是问题)
- “绑定到当前页面”:当从后/下一个上下文外部导航时,值将丢失。(正如伯特所指出的,稍微修改一下就可以使用这种“面包屑”方法来更改URL并使用GET参数,这可以使数据普遍持久化,而代价是URL“不太漂亮”)
- 数据必须被视为不可信和不安全的,就像原始帖子一样
- 需要填充其他[隐藏]字段
session\u start()
在第一页
$search = $_POST['s'];
$search = strtoupper($search);
$search = strip_tags($search);
$search = trim($search);
$search = mysql_real_escape_string($search);
将会话变量设置为
$_SESSION['searchStr']=$search
然后在每一页
session_start(); // at the very begining
if(isset($_SESSION['searchStr'])) {
$search=$_SESSION['searchStr']
}
假设它是一个搜索字符串,则只有一个健全的方法: 首先,更改表单的方法以获取 接下来,只需使用GET方法在查询字符串中传递搜索变量 您必须应用的唯一修改是
urlencode()
所以,代码应该是
$query_string = 'search='.urlencode($_GET['search']);
echo "<a href='?page=2&$query_string'>page 2</a>";
$query\u string='search='.urlencode($\u GET['search']);
回声“;
生成HTML代码
<a href="?page=2&search=search+string">page 2</a>
因此,用户可以单击此链接,您将返回搜索字符串查看。
$\u会话
superglobal允许您在页面之间存储信息。请参阅mysql\u real\u escape\u字符串不是“hack-a-bout”。这个函数唯一的缺点是,普通PHP用户不知道如何使用它。@Col.Shrapnel我不同意。它继续推广手工构建SQL字符串的不良做法。考虑到mysqli
和PDO
在许多PHP系统上都是可用的,我认为没有理由继续捍卫任何其他现代广泛使用的编程语言都没有使用的旧方法。(哦,请确实说出-1的确切原因,因为如果是因为我不喜欢mysql\u real\u escape\u string
,那与答案无关。)哦,请不要向我兜售那个老故事。好吗?@Col.Shrapnel你可以随意做你想做的事(包括忽略我);我相信我是有道理的,关于这个话题有很多这样的帖子/答案mysql\u real\u escape\u string
之所以出现,是因为add\u slashes
和mysql\u escape\u string
。。。失败了。我可以随心所欲地思考!想想看!要考虑不同方法的真正含义,不要盲目追随某种福音!根据我的经验判断,不仅仅是上百个“主题”只是相互复制/粘贴