0

私はphpが初めてです。ユーザーがセッションを使用してログインしているかどうかを確認し、ユーザーを許可するコードを次に示します。

検証

<?php

session_start();

$uname = $_POST['uname'];
$pass = $_POST['pass'];

if($uname  == "admin"  &&  $pass == "admin")
{
    $_SESSION['uname'] = $uname;
    $_SESSION['auth'] = 1;
    echo "Welcome Mr ".$uname.". You are now logged in ";
    echo "<br>";
    echo "<a href='TakeMeHome.html'>Click here to access the application </a>";
}
else
{
    echo "Invalid username or password";
}

?>

ページ

<?php

session_start();


if($_SESSION['auth'] != 1)
{
    echo "You are not logged in! ";
    echo "<a href = \"TakeMeHome.html\">";
    echo "Access Application";
    echo  "</a>";
    exit();
}

?>

<html>
You are now logged in
</html>

しかし、リンクタグは表示されています

"; echo "Access Application"; echo ""; exit(); } ?> 

html データと一緒に。検証は行われません。ユーザーがログインしているかどうかを検証するためのより良い方法がたくさんあることを私は知っています。しかし、私はセッションを学習しているため、セッションを使用しています。どこが間違っているのか教えてください。
よろしく。

4

2 に答える 2

1

次のように、エコー コードで一重引用符を使用します。

<html>
  <head>
  </head>
  <body>
    <?php
      echo "<a href='pageToGoTo.html' title='Page to go to' class='whatEver'>Anchor text</a>";
    ?>
  </body>
</html>

すでに言われていることは、htmlを本文に入れる必要があるということです...

于 2013-03-13T14:14:21.503 に答える
0

@AndyがPHPをヘッドタグに入れることを提案した理由がわかりません-それはjavascriptではありません。PHP と HTML をフォーマットする方法は 2 つあります。1 つ目は、すべての PHP を HTML の開始タグの上に配置する方法です。

<?php
    session_start();
    if($_SESSION['auth'] != 1) {
      $message = 'You are not logged in! <a href="TakeMeHome.html">Access Application</a>';
    } else {
      $message = 'You are logged in!';
    }
?>
<html>
  <head>      
  </head>
  <body>
    <?php echo $message; ?>
  </body>
</html>

または、次のようにページの本文に配置します。

<?php
    session_start();
?>
<html>
  <head>      
  </head>
  <body>
    <?php
      if($_SESSION['auth'] != 1) {
        echo 'You are not logged in! <a href="TakeMeHome.html">Access Application</a>';
      } else {
        echo 'You are logged in!';
      }
    ?>
  </body>
</html>

それでも目的の結果が得られない場合は、 を使用var_dump($_SESSION);してセッション配列を出力し、正しい情報が保持されていることを確認してください。

于 2013-03-13T18:21:41.957 に答える