Появилась довольно неоднозначная проблема,решения которой я не нашёл. Суть в том,что с помощью довольно популярного файла в интернете попытался сделать систему авторизации. Казалось бы,довольно стандартная задача и довольно лёгкая. Не совсем. Предупрежу сразу: версия 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 включено.Ошибок не наблюдается. В общем,сплошная магия.