我的登录系统/登出系统出了问题。
所以问题是我无法登录。当我输入正确的用户名和密码时,我会被重定向到index.php,而实际上只有在我退出后才会发生。我认为错误在login_success.php中,if (!isset($_SESSION['mittbrukarnamn']))
行(mittbrukarnamn = myusername)会导致上述问题,但是当我删除!
以致isset
不是是的,我可以登录,但logout.php不能“正常工作”。
当我在IE 9中输入错误的用户名或密码,或者没有输入任何用户名或密码时,我在第19行也会收到以if ($_POST['mittbrukarnamn'] && $_POST['mittpassord'])
开头的错误。但在谷歌浏览器中,我没有收到该错误。有人能告诉我这是否是一个安全的系统?我稍后会添加一个代码行,使密码转换为MD5和管理员用户页面。
这是check.php
<title>Login side</title>
<?php
session_start();
// 'vert' er det same som 'host' på engelsk (ikkje så viktig).
$vert = "localhost";
$brukarnamn = "root";
$passord = "";
$db_namn = "login";
$tbl_namn = "members";
// Tilkobling til MySQL databasen.
mysql_connect("$vert", "$brukarnamn", "$passord") or die ("Kan dessverre ikkje koble til databasen.");
mysql_select_db("$db_namn") or die ("Kan ikkje finna den ynkjande tabellen 'namn'.");
?>
<?php
if ($_POST['mittbrukarnamn'] && $_POST['mittpassord']) {
$mittbrukarnamn = $_POST['mittbrukarnamn'];
$mittpassord = $_POST['mittpassord'];
$sql = "SELECT * FROM $tbl_namn WHERE `brukarnamn` = '$mittbrukarnamn' AND `passord` = '$mittpassord'";
// '$res' forkorting for 'resultat'.
$res = mysql_query($sql);
// '$tell' er skreve på norsk, og er det same som 'count' på engelsk (f.eks. og telja til 10). Slek ein ikkje trur da er 'tell' på engelsk; (ikkje så viktig).
$tell = mysql_num_rows($res);
if ($tell == 1) {
$_SESSION['mittbrukarnamn'];
$_SESSION['mittpassord'];
header ("location: login_success.php");
} else {
echo "Brukarnamnet eller passordet er feil.";
header ("refresh: 2; index.php");
}
} else {
echo "Vennligst tast inn eit brukarnamn og eit passord.";
header ("refresh: 2; index.php");
}
?>
和login_success.php
<title>Medlem side</title>
<?php
session_start();
if (!isset($_SESSION['mittbrukarnamn'])) {
header("location: index.php");
}
?>
<html>
<body>
Du er innlogga.<br />
<a href="logout.php"> Logg ut</a>
</body>
</html>
我希望我已经明确了问题所在。谢谢你的任何答案:)
本文的部分内容是挪威语。 (mittbrukarnamn = myusername) (mittpassord = mypassword)
答案 0 :(得分:0)
<?php
session_start();
?>
<title>Medlem side</title>
不是
<title>Medlem side</title>
<?php
session_start();
你必须在任何输出之前开始会话。
登录网站相同。
您没有收到任何错误?
二。您的脚本不能抵御Mysql注入攻击。使用谷歌与PHP Mysql注释短语。
答案 1 :(得分:0)
在php
文件的开头添加login_success.php
代码。 session
变量应该是该文件中的第一件事。
答案 2 :(得分:0)
考虑到您是Register&amp;登录和PHP,我建议你看这个。它必须清除你所有的疑虑!
答案 3 :(得分:0)
它补充了诺顿的答案: 将session_start()放在文件的最开头,
将$_SESSION['mittbrukarnamn'];
替换为$_SESSION['mittbrukarnamn']='';
以设置会话变量。
你现在正在做什么不设置会话变量,它只获得$_SESSION['mittbrukarnamn']
答案 4 :(得分:0)
//检查数据库以查看是否存在用户名和密码。
$query = "SELECT id, username ";
$query .= "FROM users ";
$query .= "WHERE username = '{$username}' ";
$query .= "AND password= '{$password}' ";
$query .= "LIMIT 1";
$result_set = mysql_query($query);
confirm_query($result_set);
if (mysql_num_rows($result_set) == 1) {
// username/password authenticated
// and only 1 match
$found_user = mysql_fetch_array($result_set);
$_SESSION['user_id'] = $found_user['id'];
$_SESSION['username'] = $found_user['username'];
redirect_to("whereever.php");
} else {
// username/password combo was not found in the database
$message = "Username/password combination incorrect.<br />
Please make sure your caps lock key is off and try again.";
}
} else {
if (count($errors) == 1) {
$message = "There was 1 error in the form.";
} else {
$message = "There were " . count($errors) . " errors in the form.";
}