Здравствуйте, у меня возникли проблемы с пониманием того, почему моя аутентификация продолжает работать. Ive пробовал много методов отладки, и я предполагаю, что это сильно. Продолжайте понимать, что я новичок, и пока безопасность не является проблемой. Я просто хочу, чтобы он работал.Ошибка входа в функцию входа в систему, PHP
Так что для моего сценария, регистрирующего у меня есть пользователь вводит имя пользователя и пароль
$username = $_POST['username'];
$password = $_POST['password'];
// Сообщения Данные сохраняются
$createTable = $db->prepare("CREATE TABLE `$username` (Title varchar(40) ,
About varchar(1000) ,
Chapter int(4),
Img varchar(100) ,
Url varchar(50)) ");
$createTable->execute();
/// создает таблицу для пользователя
$Register = $db->prepare("INSERT INTO library (id,
username, password) VALUES ($id ,
'$username','$password')");
$Register ->execute();
// вставляем данные в таблицу библиотеки. Библиотека имеет пользователей и пароли
echo 'user sucessfully registered';
$_SESSION['user'] = $username;
$_SESSION['pass'] = $password;
Проблема у меня есть аутентификация для входа. Функция входа вызывается с двумя переменными SESSION, которые используются в качестве параметров.
function login($SentUser , $SentPass)
{
echo 'trying to log in '.'<br>';
require_once 'Connection.php';
$user = $SentUser;
$pass = $SentPass;
/// check data base for match user and pass
$sth = $db->prepare('SELECT username , password from `library` where username = ? And password = ? ');
$sth->bindParam(1, $user);
$sth->bindParam(2, $pass);
$sth->execute();
while ($row = $sth->fetch(PDO::FETCH_ASSOC))
{
echo 'user : ' . $row['username'] , '<br>';
echo 'pass: ' . $row['password'] , '<br>';
echo '<br>';
}
.
// fetchcolumn returns true false if select took a row or not.
if($sth->fetchColumn() != false) { /// This is where the code fails as it almost always goes to the else case.
$_SESSION['user'] = $user;
$_SESSION['pass'] = $pass;
$_SESSION['passed'] = TRUE;
echo 'Welcome '.$user.'<br>';}
else
{
echo 'failed authenticate'.'<br>';
}
Подробнее об этом здесь - connection.php. Он в основном просто соединяет меня с базой данных, дающей мне объект $ db.
<?php
$config['db'] = array(
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'mywebsite'
);
$db = new PDO('mysql:host=' . $config['db']['host']. ';dbname=' . $config['db']['dbname'] , $config['db']['username'] , $config['db']['password']);
?>
Почему вы создаете таблицу для каждого пользователя? – joschua011
Этот веб-сайт просто отслеживает очищенную информацию, относящуюся к тому, что пользователь ввел. Таким образом, у каждого пользователя есть своя таблица. Это не самый эффективный способ. – Dahnny012