Задать вопрос
@sandul23

Почему не работает запрос?

Появилась довольно неоднозначная проблема,решения которой я не нашёл. Суть в том,что с помощью довольно популярного файла в интернете попытался сделать систему авторизации. Казалось бы,довольно стандартная задача и довольно лёгкая. Не совсем. Предупрежу сразу: версия PHP 5.4, тк проект можно сказать домашний и особо серьёзно нигде публиковаться не будет. Скорее ради опыта.
<?php
include("./common.php");
if($_GET['license_key'] and $_GET['license_password']){
    $login = strval($_GET['license_key']);
    $password = strval($_GET['license_password']);
    $q = mysql_query('SELECT * FROM `keys_constructor` WHERE `number` = "$login" AND `password` = "$password"');
    $user = mysql_fetch_array($q);
    var_dump($q, $user, $login, $password);
    if(isset($user)){
        if($_SERVER['SERVER_ADDR'] == $user['ip']){
            header("location: ./work.php");
            exit;
        }
        else if($_SERVER['SERVER_ADDR'] = null){
            mysql_query('UPDATE `keys_constructor` SET `ip` = "'.$_SERVER['SERVER_ADDR'].'" WHERE `number` = "'.$login.'"');
        }
        else{
            header('location: /');
            exit;
        }
    }
    else{echo("<script>console.log('НАВЕРНОЕ ПАРОЛЬ НЕВЕРНЫЙ ".$login." ".$password."')</script>");}
    
}
?>


Опять же,не стоит писать,что используются устаревшие функции библиотеки mysql, метод GET вместо POST и тд. К слову о GET, это было сделано для облегченного багфикса. Короче говоря. Тут происходит такая история,что если вводить даже заведомо правильные данные,то $q оказывается false значения. Даже если убрать переменные из запроса и поставить сразу правильные данные напрямую,результат будет тот же. Если же ввести запрос напрямую в pma, то нужная запись выведется. Магия.
<?
session_start();
if($common = mysql_connect('localhost','.login','password')) {
    mysql_query('SET NAMES UTF8');
  }
  else
  {
    echo '<script>console.log("Соединение с БД не установлено")</script>';
    
  }

?>


Это был код позаимствованного файла из интернета. Опять же,при var_dump() $common показывает,что всё ок и это переменная типа mysql link. Отображение ошибок PHP включено.Ошибок не наблюдается. В общем,сплошная магия.
  • Вопрос задан
  • 138 просмотров
Подписаться 1 Простой 9 комментариев
Пригласить эксперта
Ответы на вопрос 1
toxa82
@toxa82
Вы разницу между одинарными и двойными кавычками в php знаете?
$q = mysql_query('SELECT * FROM `keys_constructor` WHERE `number` = "$login" AND `password` = "$password"');

Тут одинарные кавычки, значит переменные $login и $password не подставляются а используются как литералы, поэтому ничего не находит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы