nasko bobev Ответов: 1

Проблема входа в Php скрипт


I'm trying to login make a PHP login script work but I receive as an errors:
Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement in /hermes/bosnaweb25a/b2739/d5.sfconsul/public_html/daaseed.com/Player/login.php on line 32 Warning: Cannot modify header information - headers already sent by (output started at /hermes/bosnaweb25a/b2739/d5.sfconsul/public_html/daaseed.com/Player/index.php:3) in /hermes/bosnaweb25a/b2739/d5.sfconsul/public_html/daaseed.com/Player/login.php on line 36

index.php
<?php
include('login.php'); // Includes Login Script
if(isset($_SESSION['login_user'])){
header("location: profile.php"); // Redirecting To Profile Page
    exit();
}
?>
login.php
<?php
session_start(); // Starting Session 

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$error = ''; // Variable To Store Error Message 
if (isset($_POST['submit'])) { 
  if (empty($_POST['username']) || empty($_POST['password'])) { 
    $error = "Username or Password is invalid"; 
  } 
  else{ 
    // Define $username and $password 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    // mysqli_connect() function opens a new connection to the MySQL server. 
   // $conn = mysqli_connect("localhost", "root", "", "customers"); 
      mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

       $conn = mysqli_connect(......); 

    // SQL query to fetch information of registerd users and finds user match. 
    $query = "SELECT username, password, Paid from customers where username=? AND password=? AND Paid='y' LIMIT 1"; 
    // To protect MySQL injection for Security purpose 
    $stmt = $conn->prepare($query); 
    $stmt->bind_param("ss", $username, $password); 
    $stmt->execute(); 
    $stmt->bind_result($username, $password); 
    $stmt->store_result(); 
    if($stmt->fetch()) //fetching the contents of the row { 
      $_SESSION['login_user'] = $username; // Initializing Session 
    header("location: profile.php"); // Redirecting To Profile Page 
  }
  mysqli_close($conn); // Closing Connection 
} 
?>
I receive the errors when trying to login. I tried googling it but with no luck of finding the right solution. How to fix the issues?


Что я уже пробовал:

Я заметил, что эти ошибки возникают только тогда, когда на сервере. Я попробовал на localhost-никаких проблем. Конечно, я изменил утверждение mysqli, но, похоже, что-то еще не так.

Richard Deeming

Вы храните пароли в виде обычного текста. Не делай этого.
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]

PHP включает в себя функции, которые помогут вам сделать все правильно:
PHP: password_hash[^]
РНР: функцию password_verify[^]

1 Ответов

Рейтинг:
5

Richard MacCutchan

$query = "SELECT username, password, Paid from customers where username=? AND password=? AND Paid='y' LIMIT 1";
// To protect MySQL injection for Security purpose
$stmt = $conn->prepare($query);
$stmt->bind_param("ss", $username, $password);
$stmt->execute();
$stmt->bind_result($username, $password);

Ваш SELECT оператор запрашивает три переменные, но ваш bind_result указывает только два.