将变量传递给下一页PHP

时间:2018-05-05 08:08:17

标签: php html database session-variables

我正在尝试使用PHP通过会话将变量传递到下一页。下面的代码保存最后一个值。我想通过这个名字'当用户点击"更多信息"链接,在那里我将显示有关点击名称的更多信息。

<?php while ($r = $q->fetch()):
 $city=$r['city'];
 $phone=$r['phone'];
 $name=$r['name'];
 if (session_status() == PHP_SESSION_NONE) {
   session_start();
  }
 $_SESSION['name'] = $name;
 $_SESSION['phone'] = $phone;
  $_SESSION['city'] = $city;

 ?>
        <tr>
       <td><?php echo (++$i); ?></td>
            <td><?php echo htmlspecialchars($name) ?></td>
            <td><?php echo htmlspecialchars($phone); ?></td>
            <td><?php echo htmlspecialchars($city); ?></td>
      <td> <a href="more_info.php" >More Info</a></td>
        </tr>
    <?php endwhile; ?> 

1 个答案:

答案 0 :(得分:2)

首先你需要把session_start()放在脚本的顶部。并且永远记住$_SESSION是超级全局变量。不需要传递给访问会话变量。你可以像这样访问。< / p>

echo $_SESSION['name'];
  

注意:确保session_start()应该是脚本的顶部。

如果你真的想将一个可变页面传递到另一个页面,请执行以下操作

<td> <a href="more_info.php?name=<?php echo $_SESSION['name']; ?>" >More Info</a></td> 

和你的more_info.php

if (isset($_GET['name'])) {
    $name=$_GET['name'];
    echo $name;
}
给出答案可以解决OP问题,但是这不是在while循环中使用session的好习惯。因为你试图在会话中插入名字但是名字可能不同。我建议你尝试这样的事情。< / p>

卸下:

if (session_status() == PHP_SESSION_NONE) {
   session_start();
  }
 $_SESSION['name'] = $name;
 $_SESSION['phone'] = $phone;
  $_SESSION['city'] = $city;

并像这样传递变量。

<td> <a href="more_info.php?name=<?php echo $name; ?>" >More Info</a></td>