2016-02-25 4 views
0

Я пытаюсь создать очень простую систему регистрации и входа в систему на PHP. Я очень новичок в этом, поэтому я сделал видео на YouTube. Я предполагаю, что моя проблема в том, что я использую некоторые функции, которые, возможно, были обесценены в PHP 7. Я включил код, который у меня ниже. Что я должен исправить? Я знаю, что у меня мало обработки ошибок или пока нет. Я просто хочу, чтобы основные принципы были опущены и создать страницу, на которой пользователь может зарегистрироваться, войти в систему, а затем указать свой идентификатор или имя пользователя на странице. Я получил эту часть для работы, но ничего не появляется в базе данных при входе в систему. Также, как вы получаете имя хоста? Я использую службу веб-хостинга и не работаю локально. Спасибо за помощь!Базовая система регистрации/входа в систему

dbh.php:

<?php 

$conn = mysqli_connect("localhost", "usernamehere", "passwordhere", 
"mylogindatabase"); 
if(!$conn) 
{ 
die("Connection failed: ".mysqli_connect_error()); 
} 

?> 

welcome.php:

<?php 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8> 
<title>Title</title> 
<link rel="stylesheet" type="text/css" href="style.css"> 
</head> 
<body> 

<form action="login.php" method="POST"> 
<input type="text" name="uid" placeholder="Username"> 
<br /> 
<input type="password" name="pwd" placeholder="Password"> 
<br /> 
<button type="submit">LOGIN</button> 
</form> 

<?php 
if(isset($_SESSION['id'])) 
{echo $_SESSION['id'];} 
else{ 
echo "You are not logged in!"; 
} 
?> 
<br /> 
<br /> 
<br /> 
<form action="signup.php" method="POST"> 
<input type="text" name="first" placeholder="First Name"> 
<br /> 
<input type="text" name="last" placeholder="Last Name"> 
<br /> 
<input type="text" name="uid" placeholder="Username"> 
<br /> 
<input type="password" name="pwd" placeholder="Password"> 
<br /> 
<button type="submit">SIGN UP</button> 
</form> 

<br /> 
<br /> 
<br /> 

<form action="logout.php"> 
<button>Log Out</button> 
</form> 

</body> 
</html> 

signup.php:

<?php 
session_start(); 
include 'dbh.php'; 

$first = $_POST['first']; 
$last = $_POST['last']; 
$uid = $_POST['uid']; 
$pwd = $_POST['pwd']; 

echo $first; 
echo $last; 
echo $uid; 
echo $pwd; 

$sql = "INSERT INTO user (first, last, uid, pwd) 
VALUES ('$first, $last, $uid, $pwd')"; 
$result = $conn->query($sql); 
header("Location: welcome.php"); 

?> 

login.php:

<?php 
session_start(); 
include 'dbh.php'; 

$uid = $_POST['uid']; 
$pwd = $_POST['pwd']; 

echo $first; 
echo $last; 
echo $uid; 
echo $pwd; 

$sql = "SELECT * FROM user WHERE uid='$uid' AND 
pwd='$pwd'"; 
$result = $conn->query($sql); 

if(!$row = $result->fetch_assoc()) 
{ 
echo "Your username or password is incorrect!"; 
} else{ 
$_SESSION['id'] = $row['id']; 
} 

header("Location: welcome.php"); 

?> 

logout.php:

<?php 
session_start(); 
session_destroy(); 
header("Location: welcome.php") 
?> 

ответ

0

Вы опечатка ошибки в коде ,Вы забыли кавычки в запросе

Таким образом, вместо этого

$sql = "INSERT INTO user (first, last, uid, pwd) 
VALUES ('$first, $last, $uid, $pwd')"; 

использования этого

$sql = "INSERT INTO user (first, last, uid, pwd) 
VALUES ('$first', '$last', '$uid', '$pwd')"; 

Кроме того, если вы хотите, чтобы исследовать больше, то вы можете увидеть это docs

1

Добавленное запрос должен быть таким:

$sql = "INSERT INTO user (first, last, uid, pwd) 
VALUES ('$first', '$last', '$uid', '$pwd')"; 

Прочитайте это для хоста: http://php.net/manual/en/function.gethostname.php

EDIT: В то время как это будет работать и будет выполняться правильно , следует предупредить, что ваше приложение будет уязвимым для SQL-инъекций без правильных контрмер, поэтому при использовании MySQLi try t o использовать подготовленные операторы вместо конкатенированных запросов, поскольку они уязвимы против SQL-инъекции. Это может показаться сложным и утомительным для для начинающих, но очень важно, чтобы ваше приложение было безопасным. Вы можете использовать либо подготовленные заявления, которые являются предпочтительными или просто ускользают переменные (менее безопасный)

Подробнее здесь:

http://php.net/manual/en/mysqli.prepare.php

http://php.net/manual/en/mysqli.real-escape-string.php

1

у вас есть небольшая ошибка в вашем запросе sql

$sql = "INSERT INTO user (first, last, uid, pwd) 
VALUES ('$first', '$last', '$uid', '$pwd')"; 

узнать больше о запросе SQL врезки в http://www.w3schools.com/sql/sql_insert.asp

0

Может быть, вы забыли в:

$sql = "INSERT INTO user (first, last, uid, pwd) 
VALUES ('$first, $last, $uid, $pwd')"; 

Ваш запрос должен быть:

$sql = "INSERT INTO user (first, last, uid, pwd) 
VALUES ('$first', '$last', '$uid', '$pwd')"; 

Если вам нужен пример того, как создать логин многопользовательского , читать далее:

Detailed Technology Center

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