-1

当谈到 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();到每一页。无论如何,这些是涉及的页面:-

配置文件

<?
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
?>

包括.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
?>

索引.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>
4

1 回答 1

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;

于 2013-09-03T13:25:49.070 回答