PHP открыть и закрыть теги и синтаксис области - PullRequest
1 голос
/ 09 июня 2019

Как правильно использовать синтаксис "<?php" и "?>"? Я обнаружил, что вы можете смешивать открывающие и закрывающие теги с открывающими и закрывающими скобками, чтобы использовать другие языки, но правильно ли я это делаю? Страница приветствия вызывает оператор else, когда она должна вводить оператор if.

Я хочу сделать каждую страницу недоступной, если пользователь не вошел в систему, поэтому я настроил ее следующим образом.

Вот код файла логина

    <?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'])) должна работать. Проблема в том, что страница приветствия возвращается к оператору else, хотя индекс 'log' должен быть установлен, верно? Вот почему я думаю, что это должно быть проблемой.

Ответы [ 2 ]

1 голос
/ 09 июня 2019

Краткий ответ: Вы правильно используете синтаксис.За исключением того, что вы забыли вызвать session_start(); в первом примере.

Более длинный ответ: Вы также можете использовать альтернативный синтаксис , чтобы сделать код более читабельным:

<?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; ?>

В конце концов, нужно выбрать один стиль и придерживаться его, чтобы оставаться последовательным.

1 голос
/ 09 июня 2019

Вы забыли добавить session_start(); в свой логин.Без этого супер-глобал SESSION не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...