2012-03-16 163 views
1

更新:更改了一些sql查询,现在它转移到控制面板。尽管它显示了这些错误。PHP登录系统问题 - mysql_num_rows无效

警告:在session_start()[function.session启动]:不能发送会话cookie - 头已经发出(输出开始/home/lewism/public_html/admin/rent/login_success.php:10)在/home/lewism/public_html/admin/rent/login_success.php 74行

警告:在session_start()[function.session启动]:无法发送会话 缓存限制器 - 头已经发送(输出开始 /home/lewism/public_html/admin/rent/login_success.php:10) /home/lewism/public_html/admin/rent/login_success.php on line 74

警告:无法修改标头信息 - (输出开始于 /home/lewism/public_html/admin/rent/login_success.php:10)已在 /home/lewism/public_html/admin/rent/login_success中发送的标头。上的PHP线76

〜嘿,伙计们,

只是利用phpeasysteps.com登录脚本,它提供了以下错误,当我尝试登录,任何建议

警告:mysql_num_rows() :提供的参数不是/ home/lewism/public_html/ad中的有效MySQL结果资源第27行错误的用户名或密码

下面分/租/ checklogin.php对于checklogin.php

<?php 
$host="localhost"; // Host name 
$username="lewism_lewis"; // Mysql username 
$password="teamgreen"; // Mysql password 
$db_name="lewism_car"; // Database name 
$tbl_name="Customers"; // Table name 

// Connect to server and select databse. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

// username and password sent from form 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

// To protect MySQL injection 
$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"; 
$result=mysql_query($sql); 

// Mysql_num_row is counting table row 
$count=mysql_num_rows($result); 
// If result matched $myusername and $mypassword, table row must be 1 row 

if($count==1){ 
// Register $myusername, $mypassword and redirect to file "login_success.php" 
session_register("myusername"); 
session_register("mypassword"); 
header("location:login_success.php"); 
} 
else { 
echo "Wrong Username or Password"; 
} 
?> 

谢谢你们的代码,

AIS

+0

强制性 “逃避你输入”。使用'mysql_real_escape_string'。 – Halcyon 2012-03-16 23:14:44

回答

1

尝试做

$result = mysql_query($sql) or die(mysql_error()); 
          ^^^^^^^^^^^^^^^^^^^^^^--- add this 

由于$ result不是mysql_num_rows的有效句柄,请查明查询原因失败。

除此之外,我建议你不要抢代码样本的PHP。其中大多数,包括你发布的东西都是过时的或完全错误的。至少这个使用mysql_real_escape_string,但它仍然使用stripslashes和session_register。

两者都被弃用,magic_quotes的东西striplashes“撤消”实际上是彻底删除现在在最新的PHP版本。

+0

好吧我已经通过将sql select语句更改为正确的变量来解决此问题。 – AisRuss 2012-03-16 23:24:43

+0

不幸的是,它现在显示此警告:session_register()[function.session-register]:无法发送会话缓存限制器 - 已发送的头文件(输出开始于/home/lewism/public_html/admin/rent/checklogin.php:2)in /home/lewism/public_html/admin/rent/checklogin.php 32行 警告:无法修改标头信息 - 已经发送的标头(输出开始于/home/lewism/public_html/admin/rent/checklogin.php:2 )在线上的/home/lewism/public_html/admin/rent/checklogin.php – AisRuss 2012-03-16 23:25:16

+0

寻找该网站上的错误消息。它已被问及/回答了一个巨大的时间。 – 2012-03-17 17:19:32

0

请记住,必须在发送实际输出 之前调用header(),或者通过普通HTML标记,文件中的空行或PHP发送。 这是一个非常常见的错误读码与包括(),或要求(), 功能,或另一种文件访问功能,并且具有输出头之前()被调用的空间或空 线。使用单个PHP/HTML文件时存在相同的问题 。

source