我正在做一个网页的作业。 我创建了索引页面作为登录页面,其中包含用户名输入,密码输入和登录按钮。
当我点击按钮时,一个php代码(下面已经写过)已经执行:它使用MySQL进行登录。
我的重定向登录问题。如果键入的用户名和密码没问题,页面应该转到下一页(例如,下一页的链接是http://stackoverflow.com)。
我使用header("location:http://stackoverflow.com");
转到下一页,但是我遇到以下错误:
Warning: Cannot modify header information - headers already sent by (output started at /users/kzr/www/index.php:60) in /users/kzr/www/index.php on line 14
我已经使用ob_start()
尝试了ob_end_flush()
,但他们没有改变这种情况:错误是相同的。
有人可以帮助我开始使用这段代码吗?
注意:PHP和HTML代码都在一次文件中,但我把它们分开了。
PHP代码:
if(isset($_POST["login"])){
$username=$_POST["username"];
$password=$_POST["password"];
$connect=mysql_connect("127.0.0.1","kzr_zetr","350adagsertesborda");
if($connect){
$db=mysql_select_db("kzr_zetr");
if($db){
$query=mysql_query("SELECT * FROM login WHERE username = '$username' AND password = '$password'");
$rowcount=mysql_num_rows($query);
if($rowcount>0){
$uri="http://kzr.bplaced.de/session/?username=".$username;
header('Location:'.$uri);
print 'sucess';
}else{
echo "<script type='text/javascript'>login_f_val_phperr();</script>";
print 'fail';
}
}
}
}
HTML代码:
<!DOCTYPE html>
<html>
<head>
<title>Bejelentkezés | ZETR</title>
<meta charset="utf-8" />
<meta name="author" content="Kókai Z. Ronald" />
<meta name="contact" content="zr.kokai@gmail.com" />
<meta name="description" content="(Konrad) Zuse Elektronikus Tanulmányi Rendszer" />
<meta name="keywords" content="konrad, zuse, konrad zuse, etr, rendszer, tanulmányi rendszer" />
<meta name="subject" content="Alkalmazott Informatika Házi Feladat Varga István Tanár Úrnak" />
<base href="http://kzr.bplaced.de" />
<link rel="stylesheet" type="text/css" href="/f/font/ubuntu/ubuntu.css" />
<link rel="stylesheet" type="text/css" href="/f/css/zetr.css" />
<link rel="stylesheet" type="text/css" href="/f/css/login.css" />
<link rel="shortcut icon" type="image/x-icon" href="/f/img/favicon.ico" />
<script type="text/javascript" src="/f/script/login-f.js"></script>
</head>
<body>
<div id="container">
<h1>Zuse</h1>
<h2>Elektronikus Tanulmányi Rendszer</h2>
<div id="loginbox">
<form name="login-f" action="" onsubmit="return login_f_val()" method="post">
<input type="text" name="username" id="username" placeholder="Felhasználónév" autocomplete="off" />
<input type="password" name="password" id="password" placeholder="Jelszó" />
<input type="submit" name="login" id="login" value="Bejelentkezés" />
</form>
</div>
</div>
</body>
</html>
答案 0 :(得分:1)
尝试在标题后面放一个退出:
header(...);exit;
答案 1 :(得分:0)
标题必须高于任何HTML(甚至在doctype之前),并且在回显任何html之前。你需要尽可能高地做到这一点。并删除PRINT成功并失败。
答案 2 :(得分:0)
这意味着index.php
的第60行已经导致标题被发送;在发送任何HTML(或纯文本)输出之前,请确保headers()
调用是您做的第一件事。