我写了一个注册页面名字叫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");
}

解决方案 »

  1.   

     echo "注册成功";
     header("Location:on_ok.php?names=$name&pwd=$pwd");
     //header之前不能echo 或有html
      

  2.   


    header();之前不能有输出,就算空格也不行,除非在输出之前加ob_start();方可,是不是马虎了
      

  3.   


    我去掉echo了但是还是不行,是不是这个页面只能是纯的PHP页面?里面一点都不带HTML?
      

  4.   

    转换一个页面的格式-> utf-8 无BOM格式
      

  5.   

    还是继续报错
    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
      

  6.   

    我是用Zend写的,没用DW 这怎么搞?
      

  7.   


     mysql_select_db("test",$conn);
    $result = mysql_query($qurry);
      

  8.   

    在php页面最前端+ob_start();
      

  9.   

    大大们  帮我写一个我参考一下。
    就是用header()页面重定向。或者帮我把我的那个该一下。
      

  10.   

    D:\www\www\htdocs\PHP\register.php 20行是什么内容
      

  11.   


    你是不是,在其他地方用了require()或include()?
      

  12.   

    header("Location:on_error.php?error=$error");
     改为: echo "<script>window.location='on_error.php';</script>";
      

  13.   

    没什么是HTML
    <td>密码确认:</td>
      

  14.   

    JS 我会用,但是每次遇到header 我就歇菜了!
      

  15.   

    全部代码<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>
      

  16.   

    html也是输出,你这样改,别的不变
    if($_POST['sure'])
    后面加else {
    ?>
    你原来的所有html
    <?php
    }
    应该就可以了
      

  17.   

    理解Siramizu的意思了 我试试!
      

  18.   

    谢谢Siramizu  可以了! 是不是用header() 这个方法前面必须是php?HTML都不能有吧!真是麻烦的函数Y呀
      

  19.   

    任何输出都不能有,你的输出相当于页面内容,而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读取网页的时候就会看到这些了
      

  20.   

    谢谢Siramizu大哥 给我上了一课
      

  21.   


    echo "注册成功"; 
    header("Location:on_ok.php?names=$name&pwd=$pwd"); 
    //header之前不能echo 或有html
    我之前就给你写出来了,你是一点也不看呀!真是这呀!