我刚接触$_SESSIONS
,但需要在不同的php文件之间重复使用变量。在下面的代码中,我想在另一个php文件中使用变量$word
,但我不确定如何做到这一点。
我的php文件看起来像这样:
<?php
if (isset($_POST["search"])) {
//include database connection
$word = mysql_real_escape_string($_POST["search"]);
$word = htmlentities($word);
$sql = ("SELECT task_id, task_date FROM customer JOIN task ON customer.id = task.customer_id WHERE mobil = $word ORDER BY task_date DESC LIMIT 0, 10");
$results = mysql_query($sql);
if (mysql_num_rows($results)==0) {
echo $word, " text bla";
}else {
echo $word, " text bla bla";
while ($row = mysql_fetch_assoc($results)) {
echo '<pre>', print_r($row), '<pre>';
}
}
}?>
期待收到您的建议。
---更新:页面2.php上仍然无法使用会话?---
我不明白为什么 $_SESSION
无法正常工作。在页面1.php上,我可以使用 echo($_SESSION['word'])
并获得正确的值,但是在页面2.php上,我得到了 ('$'."_SESSION['word'] isn't set because you had never been at file one");
我尝试了下面所有的解决方法,但它们都没有起作用,在页面2.php上得到了相同的结果。
我的page1.php文件。
<?php
session_start();
//if we got something through $_POST
if (isset($_POST["search"])) {
// include database connection
$connect = mysql_connect('localhost', 'root', 'NomiS123') or die(mysql_error());
mysql_select_db('workcard');
// sanitize user input
$word = mysql_real_escape_string($_POST["search"]);
$word = htmlentities($word);
// build search query to the database
$sql = ("SELECT task_id, task_date FROM customer JOIN task ON customer.id = task.customer_id WHERE mobil = $word ORDER BY task_date DESC LIMIT 0, 10");
// get results
$_SESSION['word'] = $word;
$results = mysql_query($sql);
if (mysql_num_rows($results)==0) {
$_SESSION['word'] = $word;
echo($_SESSION['word']. "<br>");
var_dump($_SESSION);
echo "<br>";
echo "link link <br>";
echo "<a href=\"../page2.php/\">new card</a> <br>";
echo "<a href=\"//cykelc/\">New Search</a>";
} else {
echo $word, " bla bla text <br> Create card <br>";
echo "Edit info on: ", $word, "<br>";
echo "<a href=\"//cykelc/\">New Search</a> <br>";
while ($row = mysql_fetch_assoc($results)) {
echo '<pre>', print_r($row), '<pre>';
}
//$results->free();
}
}
// mysql_close($connect);
?>
我的PAGE2.php文件。
<?php
session_start();
if(isset($_SESSION['word'])) {
$word = $_SESSION['word'];
echo($word);
} else {
die('$'."_SESSION['word'] isn't set because you had never been at file one");
}
?>
我对此感到非常疯狂。
更新 - 已解决
我测试了下面的所有建议,但都没有起作用,这很奇怪,因为我可以在page1.php和page2.php上设置和回显sesson_id()
,但在page2.php上,我得到了一个不同的sesson_id()
。我开始查看我的MAMP会话设置,但一切都正确设置。解决方案是“简单地”将session_start();
放置在page2.php的顶部。而且我指的是在所有内容之前,甚至是<!DOCTYPE html>
等。
已解决+吸取了教训 :-)
mysql_*
函数,它们已经不再维护并且已被官方弃用。请学习使用预处理语句,并使用PDO或MySQLi。这篇文章将帮助您做出决定。 - Jay Blanchard$_SESSIONS
的建议。 - Nomis