登录错误并登录优化

时间:2017-01-25 03:12:21

标签: php html mysql optimization mysqli

嘿伙计们,我一直在社交网站上工作,一直致力于登录和注册系统。我是php的新手,所以我的代码可能不是最好的。我现在遇到的问题是我的登录信息。这是我在index.php页面上的登录表单。

<form name="loginform" method="post" action="includes/login.php" >
  <table>

  <input type="submit" id="submitbox" name="login" value="Submit">

  <input type="password" name="password" id="passwordbox" required="true" placeholder="Password">

  <input type="text" name="username" id="usernamebox" required="true" placeholder="Username">

  </table>

</form>

我将表单发送到我的login.php页面(包含文件夹)并处理信息,如果成功启动会话并将用户重定向到home.php页面。当我点击提交登录我时,我收到了一个错误说:

警告:mysqli_query()期望参数1为mysqli,第14行/Applications/XAMPP/xamppfiles/htdocs/VolleypagesFixed/includes/login.php中给出的资源

警告:mysqli_error()要求参数1为mysqli,第14行/Applications/XAMPP/xamppfiles/htdocs/VolleypagesFixed/includes/login.php中给出的资源

这一行在我的登录页面上,这是该页面的代码:

<?php
// start the session
session_start();

require_once ('connect.php');

// if form is submitted

if(isset($_POST['username']) and isset($_POST['password'])) {
$username = $_POST['username'];
$password = $_POST['password'];

$query = "SELECT * FROM `users` WHERE username='$username' and password='$password'";

line 14 - $result = mysqli_query($con, $query) or die(mysqli_error($con));
$count = mysqli_num_rows($result);

// create session if values are equal
if($count == 1) {
    // cookie is set
   if(isset($_COOKIE['ID'])) {
            $id = mysql_real_escape_string($_COOKIE['ID']);
        }
        if(!isset($id)){
            die("Cookie not found");
        }
} else {
    echo "Invalid Login";
    header("Location: http://localhost/FolderName/index.php");
}
}

// if user is logged in redirect
if(isset($_COOKIE['ID'])) {
header("Location: http://localhost/FolderName/home.php");
}

?>

有关第14行错误的任何帮助或任何建议以及我如何设置我的登录信息都会非常有帮助!

2 个答案:

答案 0 :(得分:1)

快速解决方案:

添加&#34; i&#34;在mysqli_connect

<强>解释

此错误表示您的变量$con中没有有效连接。 connect.php是您建立MySQL服务器连接资源的地方。但是,您的代码显示您在连接中使用较旧的,已弃用的mysql_connect函数,然后尝试使用较新的mysqli_query函数返回的资源。你不能将这两个功能结合起来。在尝试执行查询之前,应确保正确使用mysqli_connect()函数并将结果保存到$con。请注意初始连接中缺少的i。 {$ 1}}函数已弃用(出于安全考虑)。使用较新的mysql_*函数集。

有关使用的更多信息:

http://php.net/manual/en/function.mysqli-connect.php

用法示例:

mysqli_*

由于您可以在连接字符串中选择数据库,因此没有必要单独$con = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");

帮助解决您的其他问题

虽然超出了原始问题的范围,但您需要对如何获取数据并使用Cookie存储数据进行相当多的改进。我会提出一些建议:

mysql_select_db

此代码是完美或完整的FAR,但比您现有的更接近。希望您可以从我为您改变的代码行中学习(比如获取行和设置cookie)。

你也回应并使用了一个失败的标题,因为它被认为是标题之前的输出。

答案 1 :(得分:0)

试试这个

使用

 mysqli_connect('localhost', 'root', 'root', 'test');

相反:

  mysql_connect