2017-02-07 5 views
-1

У меня есть страница login.php, которую я хочу, чтобы пользователь должен был использовать, когда нажимает на кнопки «Добавить» или «Удалить» в форме html у меня есть (также они не должны оставаться в системе, если они уходят на странице и нажмите «Добавить» или «Удалить», они должны снова войти в систему).моя первая страница входа в систему

В настоящее время у меня он настроен на то, чтобы пользователь был проиндексирован index.php, если они правильно вошли в систему, но я хотел бы удалить это, как только выясню, как заставить их войти для доступа к определенным страницам.

мой login.php код:

<html> 
<head> 
<title>Login</title> <link rel="stylesheet" type="text/css" href="style.css"> 
</head> 
<body id="body-color"> 
<div id="Sign-In"> 
<center><fieldset style="width:30%"><legend>Welcome Please Login Below</legend> 
<form method="POST" action="connectivity.php"> 
Username: <br><input type="text" name="user" size="40"><br> 
Password: <br><input type="password" name="pass" size="40"> 
<br> 
<br> 
<input id="button" type="submit" name="submit" value="Log-In"> 
</form> 
</center> 
</fieldset> 
</div> 
</body> 
</html> 

connectivity.php:

<?php 

define('DB_HOST', 'localhost'); 
define('DB_NAME', 'list'); 
define('DB_USER', 'root'); 
define('DB_PASSWORD', '****'); 
$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error()); 
$db = mysql_select_db(DB_NAME, $con) or die("Failed to connect to MySQL: " . mysql_error()); 
/* 
    $ID = $_POST['user']; $Password = $_POST['pass']; 
*/ 

function SignIn() { 
    session_start(); 
    if (!empty($_POST['user'])) { 
     $query = mysql_query("SELECT * FROM UserName where userName = '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysql_error()); 
     $row = mysql_fetch_array($query); 
     if (!empty($row['userName']) AND ! empty($row['pass'])) { 
      $_SESSION['userName'] = $row['pass']; 
      header("Location: index.php"); 
     } else { 
      header("Location: login.php"); 
     } 
    } 
} 

if (isset($_POST['submit'])) { 
    SignIn(); 
} 
?> 
+0

не использовать MySQL, как это рекомендуется. переключитесь на mysqli или PDO. Кроме того, очистите свой ввод до разбора вашего запроса. На ваш вопрос, почему вы не можете проверить действительный сеанс перед отображением своей страницы входа или index.php – Akintunde007

+0

@PhpDev Я не знаю, как это сделать, и я все еще участвую в этом. Это проект, в котором я работаю над тем, чтобы повысить свои навыки в php – RedZ

+0

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **) (http://stackoverflow.com/q/12859942). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красная коробка **] (http://php.net/mysql-connect)? Узнайте о [* подготовленных заявлениях *] (http://en.wikipedia.org/wiki/Prepared_statement) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/mysqli) - [эта статья] (http://php.net/manual/en/mysqlinfo.api.choosing.php) может помочь вам решить, какой из них. – Qirel

ответ

1

SESSIONS. Задайте сеанс со значением (1), и если его значение не установлено, оно приведет вас на страницу входа.

Вот пример:

session_start(); 

if (!isset($_SESSION['CheckLogin'])) { 
    header("Location: index.php"); 
} 
+0

извините sir im все еще довольно новый для php. Как я буду интерпретировать это в своем коде? – RedZ

+0

Когда пользователь входит в систему! Вы должны установить для своей 'SESSION' значение true, как это' $ _SESSION ['CheckLogin'] = true; 'но не забудьте установить поверх своего скрипта' session_start(); 'На всех других страницах (home.php, profile.php и т. д. ...) вы должны установить 'if (! isset ($ _ SESSION ['CheckLogin'])) { header (" Location: index.php "); } 'так что если' СЕССИЯ' не установлена! Пользователь будет перенаправлен на страницу 'index.php'. Заметка! Даже на любой другой странице вы должны установить в верхней части своих страниц 'session_start();'! И исправьте свои 'sql-инъекции'! – Maybe

+0

все комплект спасибо сэр! – RedZ

0

Помимо рисков SQL инъекций, не забудьте добавить session_start() в верхней части страницы, которые вы хотите проверить для зарегистрированных пользователей

<?php 
session_start(); 

define('DB_HOST', 'localhost'); 
define('DB_NAME', 'list'); 
define('DB_USER', 'root'); 
define('DB_PASSWORD', '****'); 
$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error()); 
$db = mysql_select_db(DB_NAME, $con) or die("Failed to connect to MySQL: " . mysql_error()); 
/* 
    $ID = $_POST['user']; $Password = $_POST['pass']; 
*/ 

function SignIn() { 
    session_start(); 
    if (!empty($_POST['user'])) { 
     $query = mysql_query("SELECT * FROM UserName where userName = '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysql_error()); 
     $row = mysql_fetch_array($query); 
     if (!empty($row['userName']) AND ! empty($row['pass'])) { 
      $_SESSION['userName'] = $row['pass']; 
      header("Location: index.php"); 
     } else { 
      header("Location: login.php"); 
     } 
    } 
} 

if (isset($_POST['submit'])) { 
    SignIn(); 
} 
?> 

Тогда на каждой странице, сделайте следующее:

<?php 
    if(isset($_SESSION['userName']) && $_SESSION['userName'] != ''){ 
    //this user is logged in and has access 
}else{ 
//redirect back to login page 
header('Location: index.php'); 
} 
+0

это работает сэр, но когда я нажимаю логин, он возвращает меня обратно в index.php вместо add.php, когда я нажимаю кнопку «Добавить». – RedZ

+0

Может быть причиной кода в connectivity.php свой набор для заголовка (location index.php) – RedZ

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