-2

パスワードとユーザー名が一致するという条件を書きました。条件に従ってログインします。しかし、私はPHPが初めてなので、ログインできない理由がわかりません。

<html>
<head>
</head>
<body>
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong>Member Login </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input name="username" type="text" id="username"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="password" type="password" id="password"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
</body>
</html>
<?php
session_start();
if(isset($_POST['submit']))
{
include('connect.php');

// username and password sent from form 
$myusername=$_POST['username']; 
$mypassword=$_POST['password']; 

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1)
{
while($query4=mysql_fetch_array($result))
{
extract($query4);
$ul=$userlevel;

if ($ul=='A')
{
$_SESSION["username"]=$myusername;
$_SESSION["password"]=$mypassword;
header("location:projectmanager_main.php");
}
else if ($ul=='B')
{
$_SESSION["username"]=$myusername;
$_SESSION["password"]=$mypassword;
header("location:teamlead_main.php");
}
else if ($ul=='C')
{
$_SESSION["username"]=$myusername;
$_SESSION["password"]=$mypassword;
header("location:employees.php");
}
else 
{
$_SESSION["username"]=$myusername;
$_SESSION["password"]=$mypassword;
header("location:admin_main.html");
}

}

}

else
{
echo "<p align='center'>"."<font color='red'>"."Wrong Username or Password. Please Try Again"."</font>"."</p>";
}
}
?>
4

3 に答える 3

1

問題はheader()、ページのコンテンツを印刷する前に呼び出す必要があることです。

コードを次のように再編成する必要があります。

<?php
if(isset($_POST['submit']))
{
    // Try to log in the user and redirect with header if successful
}
?>
<html>
<!-- display the login page -->
    <?php
    // if user has not been redirected
    if(isset($_POST['submit'])){echo "login failed";}
    ?>
    <!-- display login form -->
</html>
于 2013-07-13T12:59:06.500 に答える
1

まだコメントできないので、回答します(ただし、これはコメントとしてより適切だと思います)

誰もがあなたの問題をさらに評価できるようにするには、まず次のことを行う必要があります。

  • エラー メッセージを入力します。それがどのレベルであっても、最初は良いリードです。
  • require()ページに, require_once(), include(),がある場合はinclude_once()、それも表示する必要があります。
  • すでに持っている結果データを提供します。あなたのコードのように、$query4=mysql_fetch_array($result)の値は$query4何ですか? したがって、その下の if-else で正しい値を抽出して比較しているかどうかがわかります。

あなたの質問に正確な回答を提供することはできないため、上記の少なくとも1 つを提供することで、問題をさらに分析することができます。

于 2013-07-13T13:12:04.060 に答える
0

これを試して:

<?php
if(!isset($_POST['submit'])){
?>

--your table in html here--

<?php 
} else {
include('connect.php');
$myusername= mysql_real_escape_string(stripslashes($_POST['username'])); 
$mypassword= mysql_real_escape_string(stripslashes($_POST['password'])); 
$num = mysql_num_rows(mysql_query("SELECT * FROM tablename WHERE username='$myusername'   AND password='$mypassword'"));
if ($num >= 1) {
session_start();
$_SESSION['loggedin'] = 'true';
header('Location:admin_home.html');
} else {
?>

-- table with error in html here --

<?php
}
}
?>
于 2013-07-13T12:57:40.670 に答える