[英]php login script help needed. Server error, what's the problem?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="jmtoday" class=" no_js">
<head>
<title>Login | JM Today </title>
<link href="Mainstyles.css" type="text/css" rel="stylesheet" ></link>
</head>
<body>
<?php include("header.php"); ?>
<?php include("navbar.php"); ?>
<div id="wrap">
<?php
checklogin();
$check=checklogin();
if($check ==3){
confirmcookie($_SESSION['username'], $_SESSION['password']);
}
?>
<?php
$conn=mysql_connect("localhost", "***", "***") or die(mysql_error());
mysql_select_db('jmtdy', $conn) or die(mysql_error());
function checklogin(){
if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){
$_SESSION['username'] = $_COOKIE['cookname'];
$_SESSION['password'] = $_COOKIE['cookpass'];
return 3;
}
elseif(isset($_POST['sublogin'])){
if(isset($_POST['user']) && isset($_POST['pass'])){
$user=mysql_escape_string($_POST['user']);
$pass=mysql_escape_string($_POST['pass']);
$result=mysql_query("select password from users where username=$user and active='1'");
}
else{
die('<p class="statusmsg">You didn\'t fill in the required fields.</p>');
}
if(!$result || (mysql_num_rows($result) < 1)){
die('<p class="statusmsg">The username you entered is incorrect, or you haven\'t yet activated your account. Please try again.</p>');
}
$dbarray = mysql_fetch_array($result);
$dbarray['password']=stripslashes($dbarray['password'];
$password=stripslashes($pass);
if($dbarray['password'] != $password)){
die('<p class="statusmsg">The password is incorrect. Please try again.</p>');
}
$_SESSION['username']=$user;
$_SESSION['password']=$password;
if(isset($_POST['remember']){
setcookie("cookname", $_SESSION['username'], time()+60*60*24*100, "/");
setcookie("cookpass", $_SESSION['password'], time()+60*60*24*100, "/");
}
}
else{
die('<p class="statusmsg"> You came here by mistake, didn\'t you? </p>');
}
}
function confirmcookie($username, $password){
$result = mysql_query("select password from users where username = '$username'");
if(!$result || (mysql_numrows($result) < 1)){
unset($_SESSION['username']);
unset($_SESSION['password']);
die('<p class="statusmsg">The username you entered is incorrect or you have set an incorrect cookie</p>');
}
$dbarray = mysql_fetch_array($result);
$dbarray['password'] = stripslashes($dbarray['password']);
$password = stripslashes($password);
if($password!=$dbarray['password']{
unset($_SESSION['username']);
unset($_SESSION['password']);
die('<p class="statusmsg">The password you entered is incorrect or you have set an incorrect cookie.</p>');
}
}
?>
</div>
</body>
</html>
謝謝大家,還有一個問題。 我將這段代碼添加到了標簽的正下方,標簽的上方,但似乎沒有顯示出來。 請你幫助我好嗎?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="jmtoday" class=" no_js">
<head>
<title>Login | JM Today </title>
<link href="Mainstyles.css" type="text/css" rel="stylesheet" ></link>
</head>
<body>
<div class="container">
<?php include("header.php"); ?>
<?php include("navbar.php"); ?>
<div id="wrap">
<?php
$check=checklogin();
if($check == true){
confirmcookie($_SESSION['username'], $_SESSION['password']);
}
?>
<?php
$conn=mysql_connect("localhost", "***", "***") or die(mysql_error());
mysql_select_db('jmtdy', $conn) or die(mysql_error());
function checklogin() {
if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){
$_SESSION['username'] = $_COOKIE['cookname'];
$_SESSION['password'] = $_COOKIE['cookpass'];
return true;
}
elseif(isset($_POST['sublogin'])){
if(isset($_POST['user']) && isset($_POST['pass'])){
$user=mysql_escape_string($_POST['user']);
$pass=mysql_escape_string($_POST['pass']);
$result=mysql_query("select password from users where username='$user' and active='1'");
}
else{
die('<p class="statusmsg">You didn\'t fill in the required fields.</p>');
}
if(!$result || (mysql_num_rows($result) < 1)){
die('<p class="statusmsg">The username you entered is incorrect, or you haven\'t yet activated your account. Please try again.</p>');
}
if($dbarray['password'] != $password){
die('<p class="statusmsg">The password is incorrect. Please try again.</p>');
}
$dbarray = mysql_fetch_array($result);
$dbarray['password']=stripslashes($dbarray['password']);
$password=stripslashes($pass);
$_SESSION['username']=$user;
$_SESSION['password']=$password;
if(isset($_POST['remember'])){
setcookie("cookname", $_SESSION['username'], time()+60*60*24*100, "/");
setcookie("cookpass", $_SESSION['password'], time()+60*60*24*100, "/");
}
}
else{
die('<p class="statusmsg"> You came here by mistake, didn\'t you? </p>');
}
}
function confirmcookie($username, $password){
$result = mysql_query("select password from users where username = '$username'");
if(!$result || (mysql_numrows($result) < 1)){
unset($_SESSION['username']);
unset($_SESSION['password']);
die('<p class="statusmsg">The username you entered is incorrect or you have set an incorrect cookie</p>');
}
$dbarray = mysql_fetch_array($result);
$dbarray['password'] = stripslashes($dbarray['password']);
$password = stripslashes($password);
if($password!=$dbarray['password']){
unset($_SESSION['username']);
unset($_SESSION['password']);
die('<p class="statusmsg">The password you entered is incorrect or you have set an incorrect cookie.</p>');
}
}
?>
</div>
<div class="footer"><p class="copyright">JMToday © 2011</p><p class="right">A Samir Ghobril Production</p></div>
</div>
</body>
</html>
這是頁腳的Mainstyle.css:
div.footer
{
background-color: #009933;
padding: 0.1em;
color: white;
clear: left;
}
p.copyright
{
float: left;
width: 320px;
font-size: 10px;
}
p.right
{
margin-left: 190px;
font-size: 10px;
}
不知道錯誤是什么(因為你沒有指定它),但是嘗試select password from users where username=$user and active='1'
更改SQL查詢,以select password from users where username='$user' and active='1'
(不是$user
周圍的引號)。
同樣,從您的方法中返回比“ 3”更好的東西。 在幾個月的時間里,你會回來想知道“3”你到底意味着什么。
右括號缺少第51行。
(該錯誤應顯示在您的Web服務器日志中)。
在
$dbarray['password']=stripslashes($dbarray['password'];
應該
$dbarray['password']=stripslashes($dbarray['password']);
@Samir Ghobril:更新您使用這些規則發布的Mainstyles.css
部分 -
div.footer
{
background-color: #009933;
clear: both;
color: white;
overflow: hidden;
padding: 0.1em;
}
p.copyright
{
float: left;
font-size: 10px;
width: 120px;
}
p.right
{
float: right;
font-size: 10px;
width: 120px;
}
您還應該使用以下命令更新HTML <head>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>Login | JM Today </title>
<link href="Mainstyles.css" type="text/css" rel="stylesheet">
</head>
這樣它將驗證您使用的DOCTYPE
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.