我是$_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>';
}
}
}?>
期待您的建议。
--- UPDATE会话仍无法在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会话设置,但一切都是正确的设置。解决方案是&#34;简单地&#34;将session_start();
放在page2.php的最顶层。最重要的是我在一切之前的意思是<!DOCTYPE html>
等。所解决的经验教训: - )
答案 0 :(得分:2)
要使用PHP会话,您可以执行以下操作:
发起会话session_start();
注意: session_start();
必须是文件中PHP的第一行。
创建会话$_SESSION['word'] = $word;
要在其他页面上访问它:
发起会话session_start();
访问会话$word = $_SESSION['word'];
答案 1 :(得分:2)
首先,您必须在打开PHP'标记'(session_start();
)之后直接通过<?php session_start();... ?>
启动视频
然后您必须将变量保存到会话中。
您可以将$_SESSION['word'] = $word;
用于此目的。
在另一个文件中,您还必须在session_start();
'代码'之后的第一个位置使用<?php
。
然后您可以通过$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;
?>
希望这会有所帮助;)
答案 2 :(得分:0)
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 */;
}
?>
答案 3 :(得分:0)
首先,您应该使用函数'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'];
请注意,在使用共享虚拟主机时,会话数据通常存储在Web服务器上的全局文件夹中,并且可供该服务器上的每个网站使用。要防止这种情况,您应该使用'session_save_path()'函数或创建自己的会话处理程序来更改会话保存路径。
答案 4 :(得分:0)
在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'];
?>
答案 5 :(得分:0)
有许多方法可以实现这一切,这取决于你想如何使用它。您可以将文件包含在该文件中,可以使用require或require_once,或者可以使用会话超级全局。
应用程序中的所有文件都可以访问$ _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'];
希望有所帮助