0

私はプログラミングの初心者です。コードが理解できない行にコメントしました。データベースへの接続は問題ないので、なぜ機能しないのかわかりません。

ここにLOGIN.PHPがあります

<?php

include("connectiondbs.php");
include("javascript.js");
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST")
{
$u=$_POST['username'];
$p=$_POST['password'];

$sql="SELECT userID FROM users WHERE login='$u' and password='$p'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);

$active=$row['active'];            //I AM NOT SURE ABOUT THIS ONE

$count=mysql_num_rows($result);

if($count==1)
{
session_register("username");
session_register("password");     //HAS TO BE THE PASSWORD IN REGISTER?
$_SESSION['login_user']=$u;

header("location:succesfulllogin.php");  // HAS TO BE THIS FILE? OR I CAN GO TO THE MENU.HTML RIGHT NOW

}
else {
echo "Wrong Username or Password";
}}
?>

<form action="" method="post">
<label>Login :</label>
<input type="text" name="username"/><br />
<label>Password :</label>
<input type="password" name="password"/><br/>
<input type="submit" value=" Submit "/><br />
</form>

JAVASCRIPT.JS

<script Language="JavaScript">
    <!-- 
        function check_empty_field()
        {
        if (form.username.value == "" || form.password.value == "")
        {
           alert("Please fill in the password or login field.");
           return (false);
        }
        return (true);
        }
        -->
</script>

succesfulllogin.php

<?php
session_start();
if(!session_is_registered(username)){
header("location:login.php");
}
else{
header ("location:menu.html");
}
?>
4

2 に答える 2

1

まず、JavaScript が実行されていません。関数を作成していますが、呼び出しは行っておらず、PHP とはまったく対話しません。これを行うには、フォーム タグを次のように変更します。

<form action="login.php" method="post" onsubmit="return check_empty_field()">

これで、フォームを送信するたびに関数 check_empty_field が実行されます。true が返された場合、フォームが送信され、PHP が実行されます。そうでなければ、そうではありません。関数については、次のように変更します (jQuery を入れたのは、10 倍簡単にするためです。プログラミングに慣れていない場合は、必ず調べてください)。

<script Language="JavaScript">
  <!--
    function check_empty_field()         // This is called when the submit
    {                                    // button is pressed
      if (form.username.value == "" || form.password.value == "")
      {
        alert("Please fill in the password or login field.");
        return false;                    // This doesn't submit the form
      }
      else
      {
        return true;                     // This submits the form
      }
    }
  -->
</script>

jQuery を使用すると、この多くの作業がはるかに簡単になります。そのため、jQuery を追加しました。詳細については、こちらを参照してください。もちろん、jQuery を機能させるには、これをページの上部に配置する必要があります。

<script language="javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.1.min.js"></script>

これにより、Microsoft CDN から jQuery 定義が取得されます。むしろ信頼できる。ただし、サイトに jQuery を配置してから、ファイルへのパスを配置する方がよいでしょう。

次に、PHP にはいくつかの問題があります。一部は他の人によってカバーされており、以前の回答に注意してください。ただし、いくつかの問題を指摘するために、session_registerもう使用されていません。でセッション変数を設定します$_SESSION['variablename'] = 'value'。検証など、他にも心配すべき問題があります。あなたはそれをグーグルするべきです。

これについてもっと知りたい場合は、お気軽にコメントしてください。ソースも提供できるので、私が使用したコードのさまざまな部分について詳しく知ることができます。

于 2013-06-16T22:09:14.917 に答える