我是$_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);
?>
My 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>
,等等。
已解决+已学到的课程:-)
发布于 2014-11-01 04:51:58
首先,您必须在打开PHP 'tag‘(<?php session_start();... ?>
)之后直接通过session_start();
启动种子。
然后,您必须将变量保存到会话中。您可以使用$_SESSION['word'] = $word;
来实现此目的。
在另一个文件中,您还必须在<?php
'tag‘之后的第一个位置使用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;
?>
希望这能有所帮助;)
发布于 2014-11-01 04:50:39
要使用PHP会话,您需要执行以下操作:
启动会话,session_start();
PHP注意: session_start();
必须是文件的第一行。
创建会话$_SESSION['word'] = $word;
要在另一个页面上访问,请执行以下操作:
启动会话,session_start();
访问会话$word = $_SESSION['word'];
发布于 2014-11-01 04:51:02
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 */;
}
?>
https://stackoverflow.com/questions/26683125
复制相似问题