2015-02-24 2 views
-1

im в настоящее время изо всех сил пытается заставить мой PHP войти в систему. Iv использовал разделение проблем для структурирования моего php.PHP-вход с mySQL

Iv уже настроен в моей базе данных Таблица пользователей с идентификационными знаками, именем пользователя и паролем.

Я не думаю, что есть проблема с подключением к моей базе данных, поскольку я использовал один и тот же код в других проектах, и он работает там.

Это мой user_repository.php:

<?php 
 
require_once "database.php"; 
 

 
function authenticate_user($username, $password, &$error) { 
 

 
\t $sql = "select * from Users where username= '${username}'"; 
 
\t $sql .=" and password='{password}'"; 
 
\t $result = query($sql); 
 

 
\t if ($result->num_rows!=1) { 
 

 
\t \t $error = "Username or password was incroeect."; 
 
\t \t return null; 
 

 
\t } 
 

 
return $result-> fetch_assoc(); 
 

 
} 
 

 
function get_user_by_id($id, &$error) { 
 

 
\t $sql = "select * from Users where id={$id} limit 1;"; 
 
\t $result = query($sql); 
 

 
\t return $result->fetch_assoc(); 
 

 

 

 
} 
 

 
?>

Это мой database.php:

<?php 
 

 
\t define("SQLHOST", "localhost"); 
 
\t define("SQLUSER", "b3006796"); 
 
\t define("SQLDB", "b3006796_db3"); 
 
\t define("SQLPASSWORD", "*******"); 
 

 
\t function connect_to_database() { 
 

 
\t \t $mysqli = new mysqli(SQLHOST, SQLUSER, SQLPASSWORD, SQLDB); 
 

 
\t \t if($mysqli->connect_errno) { 
 

 
\t \t \t echo "failed to connect to mysql: ".$mysqli->connect_errno; 
 
\t \t \t exit(); 
 

 

 
\t \t } 
 

 
\t \t return $mysqli; 
 
\t } 
 

 
\t function query ($sql) { 
 

 
\t \t $mysqli = connect_to_database(); 
 

 
\t \t $result = $mysqli->query($sql); 
 
\t \t if (!$result) { 
 
\t \t \t echo "failed to run query: ".$mysqli->error; 
 
\t \t \t exit(); 
 

 

 

 
} 
 

 
return $result; 
 

 
} 
 
?>

Это мой index.php :

<?php 
 

 
\t session_start(); 
 
\t require_once "user_repository.php"; 
 

 
\t $error = null; 
 

 
\t if (isset ($_POST["username"]) && isset($_POST["password"])) { 
 
\t \t $username = $_POST ["username"]; 
 
\t \t $password = $_POST ["password"]; 
 

 

 
\t \t // Get the assoc array for the user. 
 
\t \t $user = authenticate_user($username, $password, $error); 
 

 
\t \t //No error means valid password here. 
 
\t \t if (!$error) { 
 
\t \t \t $_SESSION['currentUser'] = $user['id']; 
 
\t \t \t header("location:account.php"); 
 
\t \t \t exit(); 
 

 
\t \t } 
 

 

 
\t \t } 
 

 
?> 
 

 
<html> 
 
<head> 
 
\t <title> DIWA Login </title> 
 
</head> 
 
<body> 
 
\t <h1>login</h1> 
 
\t <form method="post"> 
 
\t \t Username:<input name="username"/> 
 
\t \t Password:<input name="password" type="password"/> 
 
\t \t <input type="submit"/> 
 
\t \t <?php if ($error);?> 
 
\t \t <p><?php echo $error; ?></p> 
 

 
\t </form? 
 
</body> 
 
</html>

И это мой Account.php:

<?php 
 
\t session_start(); 
 
\t require_once "user_repository.php"; 
 

 
\t $error = null; 
 

 
\t if (!isset($_SESSION["currentUser"])) { 
 
\t header ("Location: login.php"); 
 
\t exit(); 
 
\t } 
 

 
\t $user = get_user_by_id($_SESSION["currentUser"], $error); 
 
\t ?> 
 

 
\t <html> 
 
\t <head> 
 
\t \t <title> DIWA Account </title> 
 
\t </head> 
 
\t <body> 
 
\t \t <h1> Account </h1> 
 
\t \t <p> User ID: <?php echo $user["id"]; ?></p> 
 
\t </body> 
 
\t </html>

Благодаря

+0

так в чем ваш вопрос – dsharew

+1

$ sql. = "И password = '{пароль}'"; - вы пропустили «$» - $ password –

ответ

0

Если ваша проблема в том, что вы не можете войти, то T здесь, по крайней мере одна ошибка:

`$sql .=" and password='{password}'";` 

вы опустили "$" на 'пароль', он должен быть

$sql .=" and password='{$password}'"; 

также:

$sql = "select * from Users where username= '${username}'"; 

должно быть:

$sql = "select * from Users where username= '{$username}'"; 
+0

Спасибо большое! прекрасно работает –

Смежные вопросы