2013-10-20 81 views
0

嘿有stackoverflow社区!PHP 5.4.12:未定义的索引错误

我目前正在研究跨游戏+服务器间项目,但我陷入了我的身份验证系统。当我和一些正确的详情登录我的错误

Notice: Undefined index: myusername in C:\wamp\www\new\panel.php on line 8 
Notice: Undefined index: mypassword in C:\wamp\www\new\panel.php on line 9 

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\new\panel.php on line 13 

我不知道如何解决这个问题,所以我要问什么是如何解决这个问题?

这是我使用检查登录信息的代码:

<?php 

ob_start(); 
$host="localhost"; // Host name 
$username="mindfulbank"; // Mysql username 
$password=""; // Mysql password 
$db_name="mindful_bank"; // Database name 
$tbl_name="members"; // Table name 

// Connect to server and select databse. 
mysql_connect("$host", "$username", "$password")or die("Database cannot connect securely, please check back later!"); 
mysql_select_db("$db_name")or die("Database Cannot Be Selected"); 

// Define $myusername and $mypassword 
$myusername=$_POST['myusername']; 
$password=$_POST['mypassword']; 
$sha1password=sha1($password); 
$mypassword=md5($sha1password); 

// To protect MySQL injection (more detail about 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['myusername']=$myusername; 
$_SESSION['mypassword']=$mypassword; 
session_start(); 
header("location:panel.php"); 
} 
else { 
echo "Wrong Username or Password"; 
} 

ob_end_flush(); 
?> 

和页面,这些错误acctually导致错误:

<?php 
session_start(); 

if(isset($_SESSION['myusername'])){ 
header("location:logout.php"); 
} 

$myusername=$_SESSION['myusername']; 
$mypassword=$_SESSION['mypassword']; 
$con=mysqli_connect("localhost","mindfulbank","","mindful_bank"); 
$result = mysqli_query($con,"SELECT level FROM members WHERE password = '$mypassword' and username = '$myusername'"); 
$fname = mysqli_query($con,"SELECT name FROM members WHERE password = '$mypassword' and username = '$myusername'"); 
while($row = mysqli_fetch_array($result)) 
{ 
    if($row['admin'] == 1){ 
    require 'panel/admindash.php'; 
} 
else 
{ 
    require 'panel/userdash.php'; 
} 
} 
?> 

回答

1

将用于检查登录详细信息的脚本的连接更新为mysqli,因为mysql已折旧。

完成此操作后,将mysql_real_escape_string($myusername);函数更改为mysqli_real_escape_string($your_connection, $myusername);

mysqli_real_escape_string需要db连接作为所需参数。

http://php.net/manual/en/mysqli.real-escape-string.php

然后加入session_start();用来检查登录信息的脚本的顶部!

http://php.net/manual/en/function.session-start.php

希望这有助于

0

你需要一个在session_start()在第一个文件也是如此。

0

前两个错误发生,因为你没有在第一个脚本$_SESSION之前写session_start()。总是将它写在脚本的顶部。最后一个错误是因为您没有通过运行该查询来获得任何结果。进一步操作前请务必检查$result->num_rows > 0