내 코드가있는 돼지가 있습니다. 나는 이것에 초보이고 크게 고투하고있다.로그인 양식은 PHP/MySQL을 발행합니다.
몇 가지 문제가 있습니다. 첫째, 한 가지 문제는 SQL 데이터베이스에 연결된 로그인 양식을 사용하려고하지만 잘못된 데이터 또는 데이터가 입력되지 않은 경우 오류가 발생하지 않지만 로그에 표시됩니다. in.
두 번째로, 사용자가 로그인했을 때 각 페이지에 사용자 이름을 표시하려고하는데, 작동하는 것은 데이터베이스에 수동으로 입력 한 사용자에 대한 것입니다. 내 등록 양식을 통해 추가 된 사용자는 phpmyadmin에 표시 되더라도 표시되지 않습니다. 첫 번째 문제에 대한
내 로그인 페이지 코드는 다음과 같습니다 어떤 조언을
<?php
echo '<h3>Sign in</h3>';
if($_SERVER['REQUEST_METHOD'] != 'POST')
{
/*the form hasn't been posted yet, display it
note that the action="" will cause the form to post to the same page it is on */
echo '<form method="post" action="">
Username: <input type="text" name="Username" />
Password: <input type="password" name="Password" />
<input type="submit" value="Sign in" />
</form>';
}
else
{
//the form has been posted without errors, so save it
//notice the use of mysql_real_escape_string, keep everything safe!
$username = mysql_real_escape_string($_POST['Username']);
$password = mysql_real_escape_string($_POST['Password']);
$sql = "SELECT * FROM Users WHERE Username = '$username' AND Password = '$password'";
$result = mysql_query($sql);
if(!$result)
{
//something went wrong, display the error
echo 'Something went wrong while signing in. Please try again later.';
header("location:index.php");
//echo mysql_error(); //debugging purposes, uncomment when needed
}
else
{
{
{
//set the $_SESSION['signed_in'] variable to TRUE
$_SESSION['signed_in'] = true;
//we also put the user_id and user_name values in the $_SESSION, so we can use it at various pages
while($row = mysql_fetch_assoc($result))
{
$_SESSION['UserID'] = $row['UserID'];
$_SESSION['Username'] = $row['Username'];
}
echo 'Welcome, ' . $_SESSION['Username'] . ' <a href="index2.php">Proceed to the forum Home page</a>.';
}
}
}
}
?>
감사합니다.
먼저 mysql_ 대신에'PDO'를 사용하십시오 –
주 :'mysql_ *'함수는 PHP 7에서 삭제되었으며, 그 버전으로 업그레이드하면 코드가 작동을 멈 춥니 다. 새로운 코드를 써서는 안되며 대신 [mysqli_ *'또는 PDO] (http://php.net/manual/en/mysqlinfo.api.choosing.php)를 사용하십시오. –
또한 SQL 인젝션을 사용할 수 있습니다. –