2012-03-16 120 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