1

単純なメンバーシップシステムに苦労しているすべての人。私はしばらくの間コーディングしましたが、php(主にjava)ではあまりコーディングしていませんので、何を見るべきかについてのヘルプや提案をいただければ幸いです。私はいつも単純な間違いを見ているようで、構文チェッカーでチェックしましたが、それは非常にマイナーなものだと確信しています

ここに行きます。

私のlogin.phpファイルを使用すると、ユーザーはユーザー名とパスワードを持っていればログインでき、そうでない場合は適切な応答を送信できます。しかし、既存のユーザー名とパスワードでログインすると、次のページに移動し、名前とリンクが表示されてメンバーセクションに移動しますが、リンクをクリックすると、メンバーセクションが$ _SESSION値を認識しないように見えるため、ユーザーに再度ログインするように求めます。

<?php
error_reporting (E_ALL ^ E_NOTICE);
session_start();
$userid = $_SESSION['$userid'];
$username = $_SESSION['$username'];
?>
<html>
<head>
<title>Member system - login</title>
</head>
<body>
<?php
    $form = "<form action='./login.php' method='post'>
    <table>
    <tr>
        <td>username :</td>
        <td><input type='text' name='user'/></td>
    </tr>
    <tr>
        <td>password :</td>
        <td><input type='password' name='password'/></td>
    </tr>
    <tr>
        <td></td>
        <td><input type='submit' name='loginbtn' value='Login'/></td>
    </tr>
    </table>
    </form>";

if($_POST['loginbtn']) {
    $user = $_POST['user'];
    $password = $_POST['password'];

    if($user) {
        if($password) {
            require("connect.php");

            $password = md5(md5("12345".$password."54321"));
            //make sure login info correct
            $query = mysql_query("SELECT * FROM user WHERE username='$user'");
            $numrows = mysql_num_rows($query);

            if($numrows == 1) {
                $row = mysql_fetch_assoc($query);
                $dbid = $row['id'];
                $dbuser = $row['username'];
                $dbpass = $row['password'];
                $dbactive = $row['active'];

                if($password == $dbpass) {
                    if($dbactive == 1) {
                        //set seesion info
                        $_SESSION['userid'] = $dbid;
                        $_SESSION['username'] = $dbuser;

                        echo "you have been logged in as <b>$dbuser</b> <a href='./member.php'>click here</a> to go to the member page";
                    }
                    else 
                        echo "You must be an active member. $form";
                }
                else
                    echo "you did not enter the correct password. $form";
            }
            else                    
                echo "The user name you entered was not found. $form";

            mysql_close();
        }
        else
            echo "you must enter your password. $form";
    }
    else
        echo "you must enter a user name. $form";
    }
else
 echo $form;
?>

これは私のログインフォームで、大部分の作業を行います

<?php
error_reporting (E_ALL ^ E_NOTICE);
session_start();
$userid = $_SESSION['$userid'];
$username = $_SESSION['$username'];
?>
<html>
<head>
<title> Member system : Members</title>
</head>
<body>
<?php
    if($username && $userid) {
        echo "Welcome <b>$username</b>, <a href='./logout.php'>logout</a>";
    }
    else 
        echo "Please login in to veiw this page <a href='./login.php'>Login in</a>";

?>
</body>
</html>

そして、これは私のメンバーフォームで、セッションを認識せず、ユーザーに再度ログインするように求めているようです。

私はこれが誰かにとって恥ずかしいほど明白であることを知っています、そして私は私の無知をお詫びします、しかし私はこれから学ぶでしょう、それで誰かが病気を助けることができれば非常に感謝しています。

よろしくマイク

4

1 に答える 1

1

まず第一に、少し間違いがあります。最初のスクリプトでは$_SESSION['userid']を使用し、2番目のスクリプトでは$ _SESSION ['$ userid](キー内にドルを含む)を使用します。

それで問題が解決するかどうかは正確にはわかりませんが、次のように置き換えてみてください。

if($username && $userid) {

これとともに:

if(isset($_SESSION['userid'],$_SESSION['username'])) {

悪ふざけ!

于 2013-03-11T20:54:00.373 に答える