1

解決済み: この問題の原因となった愚かな間違いがありました。header.php で、$_SESSION["logged"] の代わりに $_SESSION["header"] (これは存在しません) を書きました。ご協力いただきありがとうございます。

正しいログイン情報を入力した後、Login.php はリダイレクトしたくありません。

ページが更新され、入力フィールドがクリアされます。

(また、セッションは /tmp フォルダーに作成されます)

誰にもアイデアはありますか?:S

前もって感謝します!:)

login.php:

<?php

$message = NULL;

if (isset($_POST["enter"])) {

    include 'cred.php';
    $newUser = $_POST["user"];
    $newPass = md5($_POST["pass"]);

  if ($newUser==$user AND $newPass==$pass) {

    session_start();
    $_SESSION["logged"]=1;
    $_SESSION["user"]=$newUser;
    header('Location: index.php');
    exit;

  } else {

    $message = 'failure';

  }

}



?>
<head>
<style type="text/css">

body {

    margin-top:120px;

}

</style>
</head>
<body>
<center>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
Uporabnik:<br /> <input type="text" name="user" /><br /><br />
Geslo:<br /> <input type="password" name="pass" /><br /><br />
<input type="submit" value="submit" name="enter"/><br /><br />
<?php if($message!=NULL) {echo $message;} ?>
</form>
</center>
</body>

cred.php:

<?php

$user = 'janeznovak';
$pass= md5('greek123');

?>

編集:すべての (index.php、second.php、second.php) ページの一部である header.php ファイルを追加しました。たぶん問題はここにあります:

<?php

session_start();

if(!isset($_SESSION["header"])OR $_SESSION["header"]!=1){

    header('Location: login.php');
    exit;


} else {

    $nuser = $_SESSION["user"];
}


?>
<head>
</head>
<body>
<div>
<a href="index.php">Prva</a> | 
<a href="second.php">Druga</a> | 
<a href="third.php">Tretja</a> | 
<a href="logout.php">Logout</a> | 
Prijavljeni ste kot <?php echo $nuser; ?>
</div> 
4

4 に答える 4

1

login.php にセッション変数をもう 1 つ追加します。

 session_start();
$_SESSION["logged"]=1;
$_SESSION["header"] = 1;
$_SESSION["user"]=$newUser;
header('Location: index.php');

今それがうまくいくことを願っています。

于 2012-04-24T12:57:18.817 に答える
1

action="" の代わりに action="" を使用してフォームを使用しようとしましたか?

また、入力タイプに ID を与え、session_start(); を追加します。PHPを開いた後:

編集:すでに含まれているheader.phpを含めながら、フォームページで使用する理由もわかりません。

セッション $_SESSION['header'] を設定した場所もどこにもありませんか?

これも変更します:

if(!isset($_SESSION["header"])OR $_SESSION["header"]!=1){

に:

if (!isset ($_SESSION['header'])) {

    header("Location: login.php");

} elseif ($_SESSION['header'] != 1) {

    header("Location: login.php");

}
于 2012-04-24T12:58:29.347 に答える
0

ユーザー名とパスワードを確認するifステートメントが実際にtrueと評価されるとは思いません。そこでリダイレクトを行う代わりに、print または echo ステートメントを使用してデバッグしないでください。

if ($newUser==$user AND $newPass==$pass) {
    session_start();
    $_SESSION["logged"]=1;
    $_SESSION["user"]=$newUser;
    $message = "success";
  }

print ステートメントが実行される場合は、他の人がすでに言っているように実行してください and include("cred.php"); if ステートメント内ではなく、ページの上部にあります。

于 2012-04-24T12:49:18.937 に答える
0

cred.php がどこに含まれているのかわかりませんか? 最初のコード行に login.php を追加します。

include("cred.php");
于 2012-04-24T12:44:51.683 に答える