注意:未定义的索引:第3行的C:\ xampp \ htdocs \ gpt \ includes.php中的用户名

时间:2013-09-03 13:17:56

标签: php mysql xampp

对于PHP和其他开发人员来说,我是一个菜鸟。无论如何,自从过去两天以来,我一直试图找到解决方案。我几乎到处搜索。所以,我试图使用XAMPP将设计集成到GPT脚本中,但每次尝试转到文件所在的localhost / gpt时,我都会看到一堆错误。页面顶部显示: -

"; }}}} if(isset($_SESSION['username']) && isset($_SESSION['password'])){ header("Location: members.php"); } ?>
Notice: Undefined index: username in C:\xampp\htdocs\gpt\includes.php on line 3

Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\xampp\htdocs\gpt\includes.php on line 3

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\gpt\includes.php on line 3

Notice: Trying to get property of non-object in C:\xampp\htdocs\gpt\includes.php on line 9

Notice: Trying to get property of non-object in C:\xampp\htdocs\gpt\includes.php on line 14

Notice: Trying to get property of non-object in C:\xampp\htdocs\gpt\includes.php on line 15

Notice: Trying to get property of non-object in C:\xampp\htdocs\gpt\includes.php on line 16

我尝试将error_reporting (E_ALL ^ E_NOTICE);添加到config.php和includes.php的顶部,然后将错误减少到: -

"; }}}} if(isset($_SESSION['username']) && isset($_SESSION['password'])){ header("Location: members.php"); } ?>
Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\xampp\htdocs\gpt\includes.php on line 4

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\gpt\includes.php on line 4

我也尝试在每个页面添加session_start();。 无论如何,这些是涉及的页面: -

的config.php

<?
session_start();ob_start();
$hostname = "localhost"; //your hostname (normally localhost)
$data_username = "root"; //database username
$data_password = ""; //database password
$data_basename = "gpt"; //database name
$conn = mysql_connect("".$hostname."","".$data_username."","".$data_password."");  
mysql_select_db("".$data_basename."") or die(mysql_error());  
$bonuspoints=10; //bonus points awarded for new users
$mainpointsneeded=200; //max number of points needed before user can request voucher
?>

includes.php

<?php 
error_reporting (E_ALL ^ E_NOTICE); 
session_start();
$fetch_users_data = mysql_fetch_object(mysql_query("SELECT * FROM `members` WHERE username='".$_SESSION['username']."'"));
$title= "My Voucher Geek";  //your site title
$yourdomain="http://localhost/gpt"; //your domain name where script is installed - do not use trailing slash
$tweetmsg="Get Amazon and ASOS gift vouchers for free at http://www.myvouchergeek.com"; //set text for tweet this button on homepage
$bonuspoints= 10;    //amount of bonus points to give to users
$refer_points=2; //amount of points a user receives if one of their referred users completes any survey
$ref_id=$fetch_users_data->id;
if(isset($_GET['join'])){
    $referral_ID = $_GET['join'];
    $referral_string= "?join=".$referral_ID;
}
$membername= $fetch_users_data->username; //don't change
$memberpoints=$fetch_users_data->points; //don't change
$membersurveys=$fetch_users_data->completed_surveys; //don't change
$earnedpoints = $memberpoints - $bonuspoints;//if you want to display how many points user has earned (as opposed to bonus points)
$mainpointsneeded = 200; //total points needed before user can request a voucher
$pointsneeded= $mainpointsneeded - $memberpoints; //points left before they can request voucher
$contactemail = "YOUR_EMAIL_ADDRESS"; //contact form messages will be sent here
$requestemail = "THE_SAME_OR_ANOTHER_EMAIL_ADDRESS"; //request a voucher messages will be sent here
?>

的index.php

<? 
session_start();
include_once"config.php";
if(isset($_POST['login'])){
$username= trim($_POST['username']);
$password = trim($_POST['password']);
if($username == NULL OR $password == NULL){
$final_report.="Please complete both fields";
}else{
$check_user_data = mysql_query("SELECT * FROM `members` WHERE `username` = '$username'") or die(mysql_error());
if(mysql_num_rows($check_user_data) == 0){
$final_report.="This username does not exist";
}else{
$get_user_data = mysql_fetch_array($check_user_data);
if($get_user_data['password'] == $password){
$start_idsess = $_SESSION['username'] = "".$get_user_data['username']."";
$start_passsess = $_SESSION['password'] = "".$get_user_data['password']."";
$final_report.="<meta http-equiv='Refresh' content='0; URL=members.php'/>";
}}}}
     if(isset($_SESSION['username']) && isset($_SESSION['password'])){ 
    header("Location: members.php");
    }

?> 
<?php include("includes.php");?>
<HTML>HTML_CONTENT</HTML>

1 个答案:

答案 0 :(得分:0)

这些警告说所有mysql_*函数都已弃用,您不应再使用它们了。如果您不希望显示警告,则需要在使用这些功能之前移动错误报告设置。现在你在error_reporting (E_ALL ^ E_NOTICE);的顶部有includes.php,这是被调用的最后一件事。您应将其移至config.php的顶部。此外,您现在使用错误设置显示除通知之外的所有错误,因此仍会显示警告。如果要隐藏警告和/或弃用的错误条目,则需要将其更改为:

error_reporting(E_ERROR);

另外你应该改变这些行,你不需要引号:

//$conn = mysql_connect("".$hostname."","".$data_username."","".$data_password."");
//mysql_select_db("".$data_basename."") or die(mysql_error());
$conn = mysql_connect($hostname,$data_username,$data_password);
mysql_select_db($data_basename) or die(mysql_error());

此时您的脚本也非常不安全。 $username在发送到数据库之前不会被过滤。

你还有其他地方$variable1 = "".$variable2.""这些双引号你没有价值。你可以说$variable = $variable2;