如何解决 PHP 中的未定义索引错误
How to resolve Undefined index error in PHP
我想根据用户的登录状态在 Web 应用程序的导航栏中显示或隐藏给定的一组链接。
下面是我的代码片段;
<nav>
<a id="mainpage">Main Page</a>
<?php if ($_SESSION['logged_in'] === false) { ?>
<a href="login2.php">Login</a>
<a href="register.php">Register</a>
<?php } else { ?>
<a href="post.php">Posting</a>
<a href="#">Members posts</a>
<a href="logout.php" class="outbutton">Logout</a>
<?php } ?>
</nav>
这里是我的登录页面脚本;
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = ($_POST['username']);
$password = ($_POST['password']);
$q = "SELECT * FROM users WHERE username='$username' AND pass='$password'";
$x = $conn->query($q);
if ($x->num_rows > 0) {
while ($row = $x->fetch_assoc()) {
$_SESSION['logged_in'] = true;
header("location: welcome.php");
}
} else {
die("Username or Password is incorrect");
}
我的登录脚本按预期工作,但在 index.php
页面中,当用户未登录时出现以下错误:
Notice: Undefined index: logged_in
另一方面,当用户登录成功时,链接会显示在导航栏中。
我在 PHP 脚本的开头使用 session_start()
,然后再使用任何其他代码。
您应该使用 isset
功能,例如
if(isset($_SESSION['logged_in'])){
// your code
}
详细信息:第一次会话未设置且用户注销并且 $_SESSION
中没有 logged_in
索引,这就是 php
到 warning
[=19= 的原因]
你也可以使用 @
for more details
PHP supports one error control operator: the at sign (@). When
prepended to an expression in PHP, any error messages that might be
generated by that expression will be ignored.
session_start()
if(isset($_SESSION['logged_in'])){
echo "SHOW MY LOGGED IN SESSION ".$_SESSION['logged_in'];
}else
在显示菜单的下方尝试
<nav>
<a id="mainpage">Main Page</a>
<?php if (!isset($_SESSION['logged_in'])) { ?>
<a href="login2.php">Login</a>
<a href="register.php">Register</a>
<?php } else { ?>
<a href="post.php">Posting</a>
<a href="#">Members posts</a>
<a href="logout.php" class="outbutton">Logout</a>
<?php } ?>
我想根据用户的登录状态在 Web 应用程序的导航栏中显示或隐藏给定的一组链接。
下面是我的代码片段;
<nav>
<a id="mainpage">Main Page</a>
<?php if ($_SESSION['logged_in'] === false) { ?>
<a href="login2.php">Login</a>
<a href="register.php">Register</a>
<?php } else { ?>
<a href="post.php">Posting</a>
<a href="#">Members posts</a>
<a href="logout.php" class="outbutton">Logout</a>
<?php } ?>
</nav>
这里是我的登录页面脚本;
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = ($_POST['username']);
$password = ($_POST['password']);
$q = "SELECT * FROM users WHERE username='$username' AND pass='$password'";
$x = $conn->query($q);
if ($x->num_rows > 0) {
while ($row = $x->fetch_assoc()) {
$_SESSION['logged_in'] = true;
header("location: welcome.php");
}
} else {
die("Username or Password is incorrect");
}
我的登录脚本按预期工作,但在 index.php
页面中,当用户未登录时出现以下错误:
Notice: Undefined index: logged_in
另一方面,当用户登录成功时,链接会显示在导航栏中。
我在 PHP 脚本的开头使用 session_start()
,然后再使用任何其他代码。
您应该使用 isset
功能,例如
if(isset($_SESSION['logged_in'])){
// your code
}
详细信息:第一次会话未设置且用户注销并且 $_SESSION
中没有 logged_in
索引,这就是 php
到 warning
[=19= 的原因]
你也可以使用 @
for more details
PHP supports one error control operator: the at sign (@). When prepended to an expression in PHP, any error messages that might be generated by that expression will be ignored.
session_start()
if(isset($_SESSION['logged_in'])){
echo "SHOW MY LOGGED IN SESSION ".$_SESSION['logged_in'];
}else
在显示菜单的下方尝试
<nav>
<a id="mainpage">Main Page</a>
<?php if (!isset($_SESSION['logged_in'])) { ?>
<a href="login2.php">Login</a>
<a href="register.php">Register</a>
<?php } else { ?>
<a href="post.php">Posting</a>
<a href="#">Members posts</a>
<a href="logout.php" class="outbutton">Logout</a>
<?php } ?>