0

わかりましたので、問題を説明する方法がよくわかりませんが、次のようになります。

入力がデータベース内のデータと一致するかどうかをチェックするログインがあります。そうであれば、$_SESSION["login"] を作成します。そして、ユーザーは現在ログインしています。

このセッションは問題なく作成されます。したがって、セッションが存在するかどうかを確認するために使用するコードは次のとおりです。

session_start();

if(!isset($_SESSION["login"])){
    $_SESSION["denied"]= "You need to be logged in to access this page";
    header("location:index.php");
}

たとえば、私のページ 'cart' (index.php ページにあるリンク) に移動すると、このページを表示するにはログインする必要があるため、上記のコードをページの先頭に配置します。ただし、ブラウザがそのページをロードするのを見ることができますが、何も起こりません。ほんの一瞬、自分のページ「カート」にいるようですが、それは...

誰でもこれで私を助けることができますか?PHPは私にとってほとんど謎です。

ありがとう!

OK、これがコードの更新です。この部分は、「cart.php」に入れたものです

<?php 

session_start();
include("inc/database.php");



if(!isset($_SESSION["login"])){
    $_SESSION["denied"]= "You need to be logged in to access this page";
    header("location: index.php");
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
    <head>
    <title>Cart</title>

    <link rel="stylesheet" href="style.css" type="text/css" />
    <script src="http://code.jquery.com/jquery-1.7.2.js"></script>


</head>
<body>

  testing if the page shows correctly
</body>
</html>

そして、これは私のログインチェック用のコードです

<?php

session_start();
include("inc/database.php");
include("inc/clean.php");

if(isset($_POST['login'])){

    $username2=clean($_POST['username2']);
    $password2=clean($_POST['password2']);

    $query=("SELECT *  
            FROM signup
            WHERE username='$username2' 
            AND password='$password2';");

    $result=mysql_query($query);

    $count=mysql_num_rows($result);

    $query2=("SELECT id
              FROM signup
              WHERE username='$username2';");

    $result2=mysql_query($query2);

    while(list($id)=mysql_fetch_row($result2)){
            echo($id);
    }


    if($count == 1){
        $_SESSION["username"] = $username2;

        header('location:index.php');
    }else{
    $_SESSION["error"] = "error";
    header('location:index.php');
}
}
?>
4

1 に答える 1

0

問題はヘッダー命令にあると思います。これは正しいものです。

 header("location: index.php");

おそらくあなたのコードはこの命令に到達しますが、リダイレクトは失敗します。

そしてもちろん、phpログをチェックして、エラーが報告されているかどうかを確認してください...

于 2012-04-05T14:39:09.273 に答える