<?php
 session_start();
 require('config.php');
 $db=mysql_connect($dbhost,$dbuser,$dbpassword);
 mysql_select_db($dbdatabase,$db);
 if (@$_POST['submit']) {
  $sql="SELECT *FROM logins WHERE username= '".$_POST['username']."'AND password= '".$_POST['password']."';";
  $result=mysql_query($sql);
  $numrows=mysql_numrows($result);
  if ($numrows==1) {
  $row=mysql_fetch_assoc($result);
  session_register("USERNAME");
  session_register("USERID");
  $_SESSION['USERNAME']=$row['username'];
  $_SESSION['USERid']=$row['id'];
  header("Location: ".$config_basedir);
  }
  else {
  header("Location: ".$config_basedir."/login.php?error=1");
  }
 }
 else {
  require("header.php");
  if (@$_GET['error']) {
  echo "<script language=javascript>alert('登录失败');history.back();</script>"; 
  }
 }
  ?>
 <form action="login.php" method="POST">
 <div id="login_form">
 <li><label>用户名:</label>
<input type=text name="username" value=""></li>
 <li><label>密码:</label>
<input type="password" name="password" value=""></li>
<div id="submit01">
<input type="submit" value="登录" name="submit" class="submit"/><input type="reset" value="忘记密码" class="submit"/>
</div>
 </div>
 </form>
  
<?php
require('footer.php');
?>
在网页中提示错误是:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at E:\appserv\www\dmoz\login.php:1) in E:\appserv\www\dmoz\login.php on line 2Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at E:\appserv\www\dmoz\login.php:1) in E:\appserv\www\dmoz\login.php on line 2Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in E:\appserv\www\dmoz\login.php on line 14
用户名错误

解决方案 »

  1.   

    session_start错误引起的。
    解决session_start()错误
    有时,我们完成的网页浏览时发生“Warning: session_start(): Cannot send session cookie - headers already sent by (output started at…”的错误。一般的原因是在运行session_start()时,之前已经有实际的html内容输出了,只要将session_start ()的调用移到网页开头部分就能解决。但是,在Dreamweaver设计中,产生这一问题往往不是上述原因,DW自动产生的代码不会犯如此低级的错误。通常是由于文件UTF-8格式转换或使用网上下载的网页、模板时,文件开始处被插入BOM(Byte Order Mark,字节序标记),正是这个BOM影响到了session的正常运行。解决的办法也很简单,只要用Ultraedit打开文件,执行另存为,保存时选择“UTF-8 无BOM”即可。如问题依旧,检查session_start函数前的不同PHP代码块之间是否有空行,一般将空行删除即可。<?php require_once(’Connections/conn.php‘); ?>
    (空行删除)
    <?php
    if (!isset($_SESSION)) {
      session_start();
    }
    …另外,header转发也有可能产生此类问题,比如:header(sprintf(”Location:%s”,$insertGoTo)),也可以用以上方法解决。
      

  2.   


    楼上的正解,BOM是一个很大的问题。其实Dreamweaver也可以不保存BOM的,只不过自己要另存为,自己点击设置。
      

  3.   

    dw这样的工具不适合php
    另外,html和php应该分离.
      

  4.   

    BOM?我也遇到过session_start报错问题,原来还有这一说,又学到一手了~