-1

大学の講師から、PHP を使用してログイン システムを作成するように依頼されました。今、私はPHPに慣れていないので、PHPについて読みました。私はこのコードを使用し、自分でコーディングしました。

<?php

session_start();

$username = $_POST ['username'];
$password = $_POST ['password'];

if ($username&&$password) {
    $connect = mysql_connect("localhost","root","") or die("Couldn't Connect");
    mysql_select_db("phplogin") or die ("Couldn't find Database");
    $query = mysql_query("SELECT * FROM users WHERE username='$username'")'
     $numrows = mysql_num_rows ($query);
if ($numrows!=0) {

    while ($row = mysql_fetch_assoc()) {
        $dbusername = $row['username'];
        $dbpassword = $row['password'];
    }

    if ( ($username==$dbusername) && ($password==$dbpassword) ) {
        echo "you are in,<a href ='member.php'> Click here</a> to enter member page";
        $_SESSION['username']=$dbusername;
    } else {
        echo "Incorrect password";
} else {
    die ("That user does not exist");
}
echo $numrows;

} else {
    die("Please enter a username and password")
}

?>

これは私が使用している Index.php です。私のログイン ページはシンプルで、ユーザー名とパスワードの 2 つのフィールドと、ログインと登録ボタンがあります。データベースから取得したフィールドに詳細を入力すると、ページの一番上に表示されます。

ここをクリックしてメンバーページに入る"; $_SESSION['username']=$dbusername; } else echo "パスワードが正しくありません"; } else die ("そのユーザーは存在しません"); echo $numrows; } else die("Pleaseユーザー名とパスワードを入力してください") ?>

また、ユーザー名、電子メール、パスワード、パスワードの確認という 4 つのフィールドに入力しなければならない登録ページにも問題があります。また、ユーザーとして「登録」するための登録ボタンもあります。

<?php //Register process $submit = $_POST['submit'];

//フォームデータ $name = strip_tags ($_POST['name']); $username = strip_tags ($_POST['username']); $password = md5 (strip_tags ($_POST['password'])); $confirmpassword = strip_tags ($_POST['confirmpassword']); $date = date("Ymd");

もし ($提出) {

if ($username&&$password&&$confirmpassword) { //パスワードを暗号化 $password = md5 ($password); $confirmpassword = md5 ($confirmpassword); if ($password==$confirmpassword) { //文字の長さをチェック if (strlen ($username) >25 || strlen ($name) >25) { echo "ユーザー名または名前の長さが長すぎます"; } else { //パスワードの長さをチェック if (strlen ($password) >20||strlen($password)<5) { echo "パスワードは 5 ~ 20 文字でなければなりません"; } else { //ユーザーを登録します } } } else echo "パスワードが一致しません!";

      }           else        echo "Please fill in <b>all</b> feidls!"; } ?>

あなたの氏名: ユーザー名を選択してください: パスワードを選択してください: パスワードを確認してください:

ただし、フィールドに詳細を入力する前であっても、この大量のコードがページの上部に表示されます。

25 || strlen ($name) >25) { echo "ユーザー名または名前の長さが長すぎます"; } else { //パスワードの長さをチェック if (strlen ($password) >20||strlen($password)<5) { echo "パスワードは 5 ~ 20 文字でなければなりません"; } else { //ユーザーを登録します } } } else echo "パスワードが一致しません!"; } else echo "フィールドをすべて記入してください!"; } ?>

誰かが私がここで間違ったことを教えてもらえますか? Xampp を使用してデータベースを作成しています。

4

2 に答える 2

2

インラインコメントと実行可能コードを別々の行に配置する必要があります。

あなたはこれを持っています:

//check character length            if (strlen ($username) >25 || strlen ...

ifその声明をコメントアウトしています。これである必要があります:

//check character length            
if (strlen ($username) >25 || strlen ...

あなたはそれを数回行っています://Register process $submit = $_POST['submit'];-コメントにあるので、$submitは決して定義されません。

どうぞ。気分がいいです。クロージング</td>sと<body>タグも追加しました。これらも欠落していたためです。

<?php

//Register process 
$submit = $_POST['submit'];

//form data 
$name            = strip_tags($_POST['name']);
$username        = strip_tags($_POST['username']);
$password        = md5(strip_tags($_POST['password']));
$confirmpassword = strip_tags($_POST['confirmpassword']);
$date            = date("Y-m-d");

if ($submit) {

    if ($username && $password && $confirmpassword) { //encrypt password
        $password        = md5($password);
        $confirmpassword = md5($confirmpassword);
        if ($password == $confirmpassword) {
            //check character length            
            if (strlen($username) > 25 || strlen($name) > 25) {
                echo  "length of Username or Name is too long";
            } else {
                //checks password length
                if (strlen($password) > 20 || strlen($password) < 5) {
                    echo "password must be between 5 and 20 characters";
                } else {
                    //registers user
                }
            }
        } else {
            echo "Your passwords to not match!";
        }

    } else {
        echo "Please fill in <b>all</b> feidls!";
    }
} // end if submit 

?>

<html>
    <body>
        <form action='register.php' method='POST'>
            <table>
                <tr>
                    <td> Your full Name:</td>
                    <td><input type='text' name='name'></td>
                </tr>
                <tr>
                    <td> Choose a Username:</td>
                    <td><input type='text' name='username'></td>
                </tr>
                <tr>
                    <td> Choose a Password:</td>
                    <td><input type='password' name='password'></td>
                </tr>
                <tr>
                    <td> Confirm your Password:</td>
                    <td><input type='password' name='confirmpassword'></td>
                </tr>
            </table>
            <p><input type="button" onclick="window.location.href='member.php'" value="Register"></p>
        </form>
    </body>
</html>
于 2013-03-07T19:30:56.597 に答える
0

実際には、form.html にリダイレクトするように要求しているように見えますが、既にいくつかの情報をブラウザーに出力しています。これにより、エラーが発生します。何かを出力する前に、リダイレクトを試みる必要があります。したがって、出力する前におそらく有効に呼び出す必要があります。

于 2013-10-07T10:31:00.610 に答える