php header()怎么使用

t240034137 2009-10-29 02:28:43
我写了一个注册页面名字叫register.php 在同一个文件下还有2个文件on_ok.php和on_error.php
我想注册成功后或者注册失败后连接到这2个文件的一个。
下面是我写的代码,但是不行!求高手帮助,本人刚刚学PHP 以前是做ASP的

//这个是注册页面register.php
if(!isset($error))
{
$conn=mysql_connect("127.0.0.1","root","");
$qurry= "insert into ut(name,pwd,sex)values('$name','$pwd','$select')";
$result = mysql_db_query("test",$qurry);
echo "注册成功";
header("Location:on_ok.php?names=$name&pwd=$pwd");
}
else
{
echo "注册失败";
header("Location:on_error.php?error=$error");
}
...全文
293 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
iwantnet 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 t240034137 的回复:]
谢谢Siramizu  可以了! 是不是用header() 这个方法前面必须是php?HTML都不能有吧!真是麻烦的函数Y呀
[/Quote]

echo "注册成功";
header("Location:on_ok.php?names=$name&pwd=$pwd");
//header之前不能echo 或有html
我之前就给你写出来了,你是一点也不看呀!真是这呀!
t240034137 2009-10-29
  • 打赏
  • 举报
回复
谢谢Siramizu大哥 给我上了一课
Siramizu 2009-10-29
  • 打赏
  • 举报
回复
任何输出都不能有,你的输出相当于页面内容,而header设置的是http响应头,一个http请求大致如下
输入网址,浏览器解析域名,发送请求头例如
GET /u/20091029/14/89d4d629-1ce3-41af-9c99-eab879a191ec.html HTTP 1.1
HOST topic.csdn.net
(其它信息)
服务器接受,处理请求
HTTP/1.1 200 OK
Server: Apache/2.2.11
你可以用header设置这里的内容,包括cookie都是通过这个设置,所以都要求没有输出

网页内容(这里就是echo等等内容)

以后你用到socket或者curl读取网页的时候就会看到这些了
t240034137 2009-10-29
  • 打赏
  • 举报
回复
谢谢Siramizu 可以了! 是不是用header() 这个方法前面必须是php?HTML都不能有吧!真是麻烦的函数Y呀
t240034137 2009-10-29
  • 打赏
  • 举报
回复
理解Siramizu的意思了 我试试!
Siramizu 2009-10-29
  • 打赏
  • 举报
回复
html也是输出,你这样改,别的不变
if($_POST['sure'])
后面加else {
?>
你原来的所有html
<?php
}
应该就可以了
t240034137 2009-10-29
  • 打赏
  • 举报
回复
全部代码

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>
注册
</title>
</head>
<body>
<form action="" method="POST">
<table align="center" cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td>用户名:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="pwd"></td>
</tr>
<tr>
<td>密码确认:</td>
<td><input type="password" name="pwd1"></td>
</tr>
<tr>
<td>性别</td>
<td>
<input type="radio" name="select" value="男">男
<input type="radio" name="select" value="女">女
</td>

</tr>
<tr>
<td></td>
<td>
<input type="submit" name="sure" value="确认">
<input type="reset" name="reset" value="取消">
</td>
</tr>
</table>
</form>
<?php
//include"commend.php";
$name =$_POST['name'];
$pwd=$_POST['pwd'];
$select =$_POST['select'];
function tt($t)
{
$conn=mysql_connect("127.0.0.1","root","");
$qurry= "select name from ut ";
$result = mysql_db_query("test",$qurry);
$arry=mysql_fetch_array($result);
$t=$arry[t];
return $t;
}
if($_POST['sure'])
{
if($_POST['name']=="")
{
$error="用户名空呀";
}
if((!isset($error))&(!ereg("^[0-9a-z]*$",$_POST['name'])))
{
$error="用户名只能是数字,字母和下划线";
}
if((!isset($error))&($t=$_POST['name']))
{
$error="用户名已经存在";
}
if((!isset($error))&($_POST['pwd']!=$_POST['pwd1']))
{
$error="2次密码不一致";
}
if(!isset($error))
{
$conn=mysql_connect("127.0.0.1","root","");
mysql_query('SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary', $conn);
$qurry= "insert into ut(name,pwd,sex)values('$name','$pwd','$select')";
$result = mysql_db_query("test",$qurry);
header("Location:on_ok.php?names=$name&pwd=$pwd");
}
else
{
ob_start();
header("Location:on_error.php?error=$error");
ob_end_flush();//输出全部内容到浏览器

}
exit;
}
?>
</body>
</html>
t240034137 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 liuyang1588 的回复:]
header("Location:on_error.php?error=$error");
改为: echo " <script>window.location='on_error.php'; </script>";
[/Quote]
JS 我会用,但是每次遇到header 我就歇菜了!
t240034137 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 siramizu 的回复:]
D:\www\www\htdocs\PHP\register.php 20行是什么内容
[/Quote]
没什么是HTML
<td>密码确认:</td>
liuyang1588 2009-10-29
  • 打赏
  • 举报
回复
header("Location:on_error.php?error=$error");
改为: echo "<script>window.location='on_error.php';</script>";
llj480028 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 t240034137 的回复:]
还是继续报错
Warning: Cannot modify header information - headers already sent by (output started at D:\www\www\htdocs\PHP\register.php:20) in D:\www\www\htdocs\PHP\register.php on line 81

[/Quote]

你是不是,在其他地方用了require()或include()?
Siramizu 2009-10-29
  • 打赏
  • 举报
回复
D:\www\www\htdocs\PHP\register.php 20行是什么内容
t240034137 2009-10-29
  • 打赏
  • 举报
回复
大大们 帮我写一个我参考一下。
就是用header()页面重定向。或者帮我把我的那个该一下。
kyzy_yy_pm 2009-10-29
  • 打赏
  • 举报
回复
在php页面最前端+ob_start();
wldzjj 2009-10-29
  • 打赏
  • 举报
回复

mysql_select_db("test",$conn);
$result = mysql_query($qurry);
iwantnet 2009-10-29
  • 打赏
  • 举报
回复
Notepad++ 这个有吗?
t240034137 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 iwantnet 的回复:]
转换一个页面的格式-> utf-8 无BOM格式
[/Quote]
我是用Zend写的,没用DW 这怎么搞?
t240034137 2009-10-29
  • 打赏
  • 举报
回复
还是继续报错
Warning: Cannot modify header information - headers already sent by (output started at D:\www\www\htdocs\PHP\register.php:20) in D:\www\www\htdocs\PHP\register.php on line 81
iwantnet 2009-10-29
  • 打赏
  • 举报
回复
转换一个页面的格式-> utf-8 无BOM格式
t240034137 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 iwantnet 的回复:]
echo "注册成功";
header("Location:on_ok.php?names=$name&pwd=$pwd");
//header之前不能echo 或有html
[/Quote]

我去掉echo了但是还是不行,是不是这个页面只能是纯的PHP页面?里面一点都不带HTML?
加载更多回复(2)

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧