PHP的打开和关闭标签和范围语法

时间:2019-06-09 11:24:53

标签: php html sql session scope

我应该如何正确使用“ <?php”和“ ?>”语法。我发现您可以将“打开”和“关闭”标签与“大括号”和“关闭大括号”混合使用,以允许两者之间使用其他语言,但是我做得对吗?欢迎页面在应输入if语句时触发else语句。

除非用户已登录,否则我想使每个页面都无法访问,因此我以这种方式进行设置。

这是登录文件代码

    <?php
$uname=$_POST['uname'];
$password=$_POST['password'];
$password = md5($password);

require_once('connection.php');

$query = "SELECT * FROM `login_info` WHERE `uname`='$uname' && `password`='$password'";

$stmt = $pdo->prepare($query);

$stmt->execute();

$count=$stmt->rowCount();
if($count==1)
{
    echo "Login success";
    $_SESSION['log']=1;
    $_SESSION['uname'] = $_POST['uname'];
    header("refresh:1;url=welcome.php");

}
else
{
    echo "Login Credentials Not Found";

    echo"<a href='index.php'><br/><br/>Back to Login Page</a>";
}
?>

这是welcome.php

<?php
require_once('connection.php');

session_start();

if(isset($_SESSION['log']))
{
?>

<!DOCTYPE html>
<html>
<style>
#quicklinks 
{
  padding-right: 15px;
}
</style>
<body>
    <h2>LINKS</h2>
    <a id="quicklinks" href="welcome.php" >Welcome</a>
    <a id="quicklinks" href="findwords.php" >search users favourite words</a>
    <a id="quicklinks" href="editwords.php" >edit your favourite word</a>
    <a id="quicklinks" href="antclicker.php" >play the ant game</a>
    <a id="quicklinks" href="antgameleaderboard.php" >ant game world leaderboard</a>
    <a id="quicklinks" href="chat.php" onclick="window.open('chat.php','newwindow','width=450,height=650'); return false;">chat</a>
    <a href="index.php" >logout</a>
    <p>Hello and welcome to my website!</p>
</body>
</html>

<?php
}
else
{
    echo "You are not logged in, please login";

    echo"<a href='index.php'><br/><br/>Login Page</a>";
}

?>

如您所见,php代码在html代码周围破裂,但是单独的php块直接相关。我想象$_SESSION['log']=1;if(isset($_SESSION['log']))的简单性应该起作用。问题是,尽管必须设置'log'索引,但欢迎页面恢复为else语句,对吗?这就是为什么我认为这一定是一个范围问题。

2 个答案:

答案 0 :(得分:1)

您忘记将session_start();添加到登录文件中。没有这个,SESSION超级全局将无法工作。

答案 1 :(得分:1)

简短答案:您正确使用了语法。除了在第一个示例中您忘记调用session_start();

更长的答案:您还可以使用alternate syntax,使代码更具可读性:

<?php
  require_once('connection.php');

  session_start();

  if(isset($_SESSION['log'])):
?>

<!DOCTYPE html>
<html>
<style>
#quicklinks 
{
  padding-right: 15px;
}
</style>
<body>
    <h2>LINKS</h2>
    <a id="quicklinks" href="welcome.php" >Welcome</a>
    <a id="quicklinks" href="findwords.php" >search users favourite words</a>
    <a id="quicklinks" href="editwords.php" >edit your favourite word</a>
    <a id="quicklinks" href="antclicker.php" >play the ant game</a>
    <a id="quicklinks" href="antgameleaderboard.php" >ant game world leaderboard</a>
    <a id="quicklinks" href="chat.php" onclick="window.open('chat.php','newwindow','width=450,height=650'); return false;">chat</a>
    <a href="index.php" >logout</a>
    <p>Hello and welcome to my website!</p>
</body>
</html>

<?php else: ?>
    You are not logged in, please login
    <a href='index.php'><br/><br/>Login Page</a>
<?php endif; ?>

最后,选择一个样式并坚持使用以保持一致是一个问题。