我是$_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>';
}
}
}?>
期待您的建议。
---更新会话仍然不能在page2.php上工作---
我不明白$_SESSION
为什么不起作用。一个page1.php我可以echo($_SESSION['word'])
并得到正确的值,但一个page2.php我得到('$'."_SESSION['word'] isn't set because you had never been at file one");
我测试了以下所有的解决方案,但没有一个有效=在page2.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>
等等。
已解决+经验教训:-)
首先,您必须在打开PHP"标记"(<?php session_start();... ?>
)后直接通过session_start();
启动seesion
然后必须将变量保存到会话中。您可以将$_SESSION['word'] = $word;
用于此目的。
在另一个文件中,您还必须在<?php
"标记"之后的第一个位置使用session_start();
。
然后您可以通过$word = $_SESSION['word'];
访问旧的变量。
现在,您还可以在第二个文件中使用$word
。但只有在设置好它的情况下才能使用它(并且您之前在第一个文件的位置)。
文件一:
<?php
session_start();
if (isset($_POST["search"])) {
//include database connection
$word = mysql_real_escape_string($_POST["search"]);
$word = htmlentities($word);
$_SESSION['word'] = $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>';
}
}
}?>
文件二:
<?php
session_start();
if(isset($_SESSION['word'])) {
$word = $_SESSION['word'];
} else {
die('$'."_SESSION['word'] isn't set because you had never been at file one");
}
echo $word;
?>
希望这能有所帮助;)
要使用PHP会话,您需要执行以下操作:
启动会话,session_start();
注意:session_start();
必须是文件中PHP的第一行。
创建会话,$_SESSION['word'] = $word;
要在另一个页面上访问它:
启动会话,session_start();
访问会话,$word = $_SESSION['word'];
session_start()
表示您正在使用会话变量,请确保它位于页面顶部。要进行会话,请执行以下操作:$_SESSION['word'] = [some value]
。只要顶部有session_start()
,就可以在页面之间使用。如果没有设置初始化,请确保先设置它。
<?php session_start(); ?>
...
<?php
if ( isset($_SESSION['word']) ) {
$_SESSION['word'] = /* change existing session value */;
} else {
$_SESSION['word'] = /* new session value */;
}
?>
首先应该使用函数"session_start()"启动会话。将其放在index.php/bootstrap.php(加载网站时总是加载的文件)中。
之后,您可以使用"$_SESSION"全局设置数据。
//In your index.php/boostrap.php
session_start();
在您要保存$word的文件中:
$_SESSION['myword'] = $word;
从那时起,你可以在另一个页面上使用这个变量。
//On another page, after the variable is being set
echo $_SESSION['myword'];
请注意,当您使用共享网络托管时,您的会话数据通常存储在网络服务器上的全局文件夹中,该服务器上的每个网站都可以使用。为了防止这种情况,您应该使用"session_save_path()"函数或创建自己的会话处理程序来更改会话保存路径。
在PHP文件的开头调用session_start();
,如果在$_SESSION
超级全局数组中设置了任何内容,则可以重新访问它。
如果未设置,则可以使用以下设置:$_SESSION['a name']= 'some thing';
因此,以您为例:
PHP FILE1
<?php
session_start();
$_SESSION['word'] = $_POST['word']
?>
PHP FILE2
<?php
session_start();
echo $_SESSION['word'];
?>
有很多方法可以实现这一点,这完全取决于你想如何使用它。你可以在该文件中包括你的文件,你可以使用require或require_sonce,或者是的,你可以用会话超全局。
应用程序中的所有文件都可以访问$_SESSION超级全局文件。您唯一需要确保的是将页面上的session_start()作为该页面上的第一件事。如果在任何输出进入浏览器后使用session_start(),它将不起作用。通常,您希望将session_start()作为index.php文件的第一行运行。然后你可以使用。。。
<?php
if (isset($_POST["search"])) {
//include database connection
$word = mysql_real_escape_string($_POST["search"]);
$word = htmlentities($word);
$_SESSION['word'] = $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>';
}
}
}?>
然后在任何你想访问它的页面上,只需点击它。。。
<?php
echo $_SESSION['word'];
希望对有所帮助