저는 몇 년 전에 작성한 회사 사이트에서 일부 오류를 정리해야했습니다. 나는 여기에 내가 작성하지 않은주의 사항을 게시하는 코드를 소개하고자한다. 그리고 그것은 매우 안전한 로그인 시스템이 아니라는 것을 알고있다. 그러나 나는 그 버그를 바로 잡기 위해 할당되었다.HTML 로그인 양식 반환 오류
문제 : 사용자가 로그인하면 양식을 제출 한 후 페이지가 새로 고쳐진 것으로 보이므로 자격 증명을 다시 입력해야합니다. 로그인 오류가보고되지 않습니다. 지금까지 Firefox와 Safari에서만이 문제를 복제 할 수있었습니다. 로그인에 성공한 후 로그 아웃하고 다시 로그인하면 모든 것이 정상적으로 작동하는 것 같습니다. 브라우저를 처음 시작하고 처음 로그인을 시도한 직후입니다. 나는 이것을 다른 Mac/Windows PC에서도 복제했다.
다음은 기본 로그인 페이지 HTML입니다. 나는 불필요한 것들을 잘라 내고 있지만 필요한 경우 더 많은 코드를 제공 할 수 있습니다.
<?php
$db = mysql_connect('***', '***', '***') or die("Couldn't connect to the database.");
mysql_select_db('***') or die("Couldn't select the database");
$result = mysql_query("SELECT count(id) FROM merchants WHERE passw='$_POST[password]' AND usern='$_POST[username]'") or die("Couldn't query the user-database.");
$num = mysql_result($result, 0);
if (!$num) {
// When the query didn't return anything,
// display the login form.
$message = "Login Failed: Incorrect username or password";
header('Location: login.php?message='.$message);
} else {
// Start the login session
session_start();
// All output text below this line will be displayed
// to the users that are authenticated. Since no text
// has been output yet, you could also use redirect
// the user to the next page using the header() function.
header('Location: merchants/index.php');
}
사람이 내가보고 시작해야하는 위치에서 아이디어가 있습니까
: 여기<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
...
<body>
<form name="login" method="post" id="mainform" action="clogin.php">
<label for="username">Username:</label>
<input type="text" id="username" name="username"><br />
<label for="password">Password:</label>
<input type="password" id="password" name="password"><br />
<input type="submit" name="Submit" class="button" style="float:right;" value="Login">
</form>
</body>
는 PHP, 또한 지방에 대한 손질입니까? 내 첫 번째 생각은 양식이 실제로 완전히 제출하지 않는다는 것입니까? 그 일이 벌어지고 있는지 어떻게 알 수 있습니까? 모든 힌트 또는 포인터가 좋을 것입니다. 개인적으로이 문제를 일으킬 수있는 "코드"문제를 찾을 수 없습니다.
양식이 "새로 고침"되면 주소 표시 줄에 무엇이 표시됩니까? "? message = ..."텍스트가 주소 끝에 추가 되었습니까? 아니면 그냥 "login.php"입니까? –
? message = ...가 추가되지 않았습니다. 그래서 그 양식이 실제로 그 스크립트를 전혀 치는 것이 아닐 수도 있습니다. 문제는 복제하기가 매우 어렵 기 때문에 어떤 조건에서 발생하는지 완전히 정의하는 데 어려움이 있습니다. 처음에는 깨끗한 브라우저 시작으로 복제 할 수있게 된 후 이제는 내 컴퓨터에 다시 표시되기까지 2-3 회의 재시작이 필요합니다. 그러나 제 동역자는 항상 그럴 시간이 있습니다. – Mesidin