首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在不同的php文件之间使用会话变量

在不同的php文件之间使用会话变量
EN

Stack Overflow用户
提问于 2014-11-01 04:44:34
回答 5查看 24.3K关注 0票数 7

我是$_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>,等等。

已解决+已学到的课程:-)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 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;
?>

希望这能有所帮助;)

票数 3
EN

Stack Overflow用户

发布于 2014-11-01 04:50:39

要使用PHP会话,您需要执行以下操作:

启动会话,session_start();

PHP注意: session_start();必须是文件的第一行。

创建会话$_SESSION['word'] = $word;

要在另一个页面上访问,请执行以下操作:

启动会话,session_start();

访问会话$word = $_SESSION['word'];

票数 2
EN

Stack Overflow用户

发布于 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 */;
    }
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26683125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档