登录验证 - 在连接其他脚本时无法连接到数据库工作正常

时间:2017-02-25 00:50:51

标签: php session mysqli

我的登录编码存在一些问题,最大的问题是每次运行时都会出现数据库连接错误。我不知道为什么因为一切正常我第一次尝试并连接到数据库时,任何其他时间都没有问题。不管怎样处理其他一些事情,现在它似乎并不想突然工作。

验证脚本

我没有写这些,我在w3schools.in找到了它们,并且它们是我尝试过的20个左右的唯一脚本。好吧,首先。我唯一改变的是错误消息并添加$returnurl会话变量,但这是未来的问题。

//LOGIN VALIDATION

if ((empty($_SERVER['HTTP_X_REQUESTED_WITH']) or strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') or empty($_POST)) {
    exit("Unauthorized Access");
}

require 'config.php';
require 'functions.php';

if (!empty($_POST) && $_POST['Action']=='login_form') {
    $Return=array('result'=>array(), 'error'=>'');

    $email=safe_input($db, $_POST['Email']);
    $password=safe_input($db, $_POST['Password']);
    $returnUrl=$_SESSION['Return_Url']=$_POST['Return_Url'];

    if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
        $Return['error']="Please enter your email/username.";
    } elseif ($password==='') {
        $Return['error']="Please enter your password.";
    }
    if ($Return['error']!='') {
        output($Return);
    }
    $result=mysqli_query($db, "SELECT * FROM tbl WHERE email='$email' AND password='".md5($password)."' LIMIT 1");
    if (mysqli_num_rows($result)==1) {
        $row=mysqli_fetch_assoc($result);
        $Return['result']=$_SESSION['UserData']=array('id'=>$row['id']);
    } else {
        $Return['error']='Email/Password Is Invalid';
    } 
    output($Return);
}

//REGISTRATION VALIDATION

if ((empty($_SERVER['HTTP_X_REQUESTED_WITH']) or strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') or empty($_POST)) {
    exit("Unauthorized Access");
}
require 'config.php';
require 'functions.php';

if(!empty($_POST) && $_POST['Action']=='registration_form') {
    $Return=array('result'=>array(), 'error'=>'');

    $name=safe_input($db, $_POST['Name']);
    $email=safe_input($db, $_POST['Email']);
    $password=safe_input($db, $_POST['Password']);
    $returnUrl=$_SESSION['Return_Url']=$_POST['Return_Url'];

    if ($name==='') {
        $Return['error']="Please enter your name.";
    } elseif (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
        $Return['error']="Please enter your email address.";
    } elseif($password==='') {
        $Return['error']="Please enter a password.";
    }
    if($Return['error']!='') {
        output($Return);
    }

    $result=mysqli_query($db, "SELECT * FROM tbl WHERE email='$email' LIMIT 1");
    if(mysqli_num_rows($result)==1) {
        $Return['error']='That email is already registered, please <a href="' . $loginurl . '">Login</a>';
    } else {
        mysqli_query($db, "INSERT INTO tbl (user_GUID, email, password, entry_date) values(MD5(UUID()), '$email', '".md5($password)."' ,NOW() )");
        $id=mysqli_insert_id($db);
        mysqli_query($db, "INSERT INTO `tbl` (id,name) VALUES('$user_id','$name')");
        $Return['result']=$_SESSION['UserData']=array('id'=>$id);
    }
    output($Return);        
}

包含的脚本

//config.php

session_start();
/*Connection vars here*/
$db=mysqli_connect($host, $user, $pass, $dbase);

//functions.php

function safe_input($db, $data) {
  return htmlspecialchars(mysqli_real_escape_string($db, trim($data)));
}
function output($Return=array()) {
    header("Access-Control-Allow-Origin: *");
    header("Content-Type: application/json; charset=UTF-8");
    exit(json_encode($Return));
}

收到错误

mysqli_connect(): (28000/1045): Access denied for user...

是的,我知道这是一个常见问题而且错误不言自明,但我不明白为什么在使用不同脚本中的相同详细信息连接时会出现此错误没有问题

作为旁注,如果有人能告诉我两个脚本顶部的那条线的交易是什么。我环顾网络,发现它处理ajax,但我没有提交ajax(至少目前为止)。我是否需要该行或者它是否无害并且可以在我使用ajax时保留?

如上所述,我没有编写此代码,只写了登录/注册表单,所以我不完全确定它是如何工作的。我理解测试数据并在数据库中检查/添加数据的机制。任何事情,你可以帮助我将非常感激。

0 个答案:

没有答案
相关问题