-2

私はphp/mysqlの初心者で、質問がばかげている場合は申し訳ありません。PHPとmysqlで登録/ログイン/ログアウトシステムを作ろうとしています。私はスキルが良くなく、プログラマーではないので、Web で見つけたスクリプトを変更しようとしました。ファイル、index.php、アクティブ化 php が含まれています。login.php、logout.php、register.php。

与えられた例を試してみるとうまくいきましたが、ユーザー名、パスワード、電子メールだけでなく、名、姓などの値を登録に追加するようにユーザーに求めたため、コードをかなり変更しました。そこで、コードを変更し、mysql データベースに列を追加しました。今は機能しません。アクティブ化しようとするとユーザーが見つからないと表示され、ログインもできません。

index.php: HTML 形式の非常に単純なファイルで、不明なユーザーにログインまたは登録するかどうかを尋ね、セッションを開始します

logout.php:セッションの設定を解除するだけです

login.php:

 <?php session_start(); ?>
<html>
<body>
    <?php
    if(isset($_POST["user"])){
        $con = mysql_connect("localhost","root","password");
        if (!$con)
          {
          die('Could not connect: ' . mysql_error());
          }

        mysql_select_db("myapp", $con);

        $sql = "SELECT * FROM `users` WHERE `user` LIKE '". mysql_real_escape_string($_POST["user"])
        ."' AND ".
            "`pass` LIKE MD5('". mysql_real_escape_string($_POST["pass"])
        ."') AND ".
            "`active` = 'DONE'";

        $result = mysql_query($sql);

        $found = 0;
        while ($row = mysql_fetch_array($result)) {
            if ($row[1]==$_POST["user"]) {
                $found = 1;
            }
        }

        if ($found) {
        $_SESSION["USER"] = $_POST["user"];
        ?>Thank you for logging in<?
        }
        else {
        ?>User/Pass is wrong!<?
        }

        mysql_close($con);
    }
    else {
    ?>

        Please log-in:<br/>
        <form action="login.php" method="POST">
            User: <input type="text" name="user"><br />
            Pass: <input type="password" name="pass"><br />
            <input type="submit" />
        </form>

    <?php
    }
    ?>

register.php:

<?php session_start(); ?>
<html>
<body>
<?php
    if(isset($_POST["user"])){
        $con = mysql_connect("localhost","root","password");
        if (!$con)
          {
          die('Could not connect: ' . mysql_error());
          }

        mysql_select_db("myapp", $con);

        $random = rand();

        $sql = "INSERT INTO `myapp`.`users` (`id`, `user`, `pass`, `active`, `firstname`, `lastname`, `mail`) ".
        " VALUES (NULL, '". mysql_real_escape_string($_POST["user"])
        ."', MD5('".mysql_real_escape_string($_POST["pass"])
        ."'), '".mysql_real_escape_string($random)
        ."'), '".mysql_real_escape_string($_POST["firstname"])
        ."'), '".mysql_real_escape_string($_POST["lastname"])
        ."')'".mysql_real_escape_string($_POST["mail"])
        ."');";

        mysql_query($sql);

        mysql_close($con);

        $message = "Please put this url http://localhost/mypage/activate.php?active=" . $random . " in your browser to activate your account.";
        @mail($_POST["mail"], 'Thank you for registering', $message);

        ?>Thank you <?php echo $_POST["user"]; ?> we send you a confirmation e-mail in <?php echo $_POST["mail"]; ?><?php

        echo $message;
    }
    else {
        ?>
        Please register:<br/>
        <form action="register.php" method="POST">
            User: <input type="text" name="user"><br />
            Pass: <input type="password" name="pass"><br />
            firstname:<input type="text" name="firstname"><br />
            lastname:<input type="text" name="lastname"><br />
            mail: <input type="text" name="mail"><br />

            <input type="submit" />
        </form>

        <?php
    }
?>

activate.php:

<?php session_start(); ?>
<html>
<body>
        <?php
    if(isset($_GET["active"])){
        $con = mysql_connect("localhost","root","password");
        if (!$con)
          {
          die('Could not connect: ' . mysql_error());
          }

        mysql_select_db("myapp", $con);

        $sql = "SELECT * FROM `users` WHERE `active` LIKE '".      
mysql_real_escape_string($_GET["active"])."'";

        $result = mysql_query($sql);

        $found = 0;
        while ($row = mysql_fetch_array($result)) {
            $found = 1;
        }

        if ($found) {

        $sql = "UPDATE `users` SET `active` ='DONE'";

        $result = mysql_query($sql);

        ?>Thank you for activating<?
        }
        else {
        ?>Can't find user!<?
        }

        mysql_close($con);
    }
    else {
    ?>Invalid activation<?php
    }
    ?>
</body>
</html>

どんな助けでも大歓迎です、ありがとう、そして長い投稿をごめんなさい!! ^_^

4

1 に答える 1

2

register.phpでは、SQL 構文にエラーがあり、閉じ括弧が多すぎます。
この部分を次のように置き換えます。

$sql = "INSERT INTO `myapp`.`users` (`id`, `user`, `pass`, `active`, `firstname`, `lastname`, `mail`) VALUES 
   (NULL,". 
   "'". mysql_real_escape_string($_POST["user"])."',".
   "MD5('".mysql_real_escape_string($_POST["pass"])."'),".
   "'".mysql_real_escape_string($random)."',".
   "'".mysql_real_escape_string($_POST["firstname"])."',".
   "'".mysql_real_escape_string($_POST["lastname"])."',".
   "'".mysql_real_escape_string($_POST["mail"])."');";
于 2012-05-24T15:14:12.087 に答える