Intereting Posts

PHP – защищенные только члены-члены с системой входа в систему

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

То, что я хочу, чтобы этот скрипт выполнял, – это страница html form, чтобы запросить таблицу базы данных («пользователи»), чтобы убедиться, что их пароль и имя пользователя верны, а затем в отдельной таблице («токены») вставить случайный токен ( метод, который я использовал ранее, он работает) в столбец «tk» и общий пользовательский аут. код, извлеченный из таблицы «пользователей» в «gauth» colum, в таблице «токенов».

Причина для дополнительного общего auth заключается в том, что я могу вытащить свое имя пользователя и отобразить его на всех страницах, которые я планирую «обеспечить»,

Извините, если я запутался, это лучшее, что я могу усовершенствовать. Кроме того, я не так хорош в форматировании :). Я собираюсь добавить некоторые html позже, поэтому теги есть.

Таблицы MySQL:

Пример пользователей:

cols: username | password | email | classcode | tcode | genralauth | hello | world | hello.world@gmail.com | 374568536 | somthin | 8945784953 | 

Токены Пример:

 cols: gauth | tk | 3946893485 |wr8ugj5ne24utb| 

PHP:

 <html> <?php session_start(); error_reporting(0); $servername = "localhost"; $username = "-------"; $password = "-------"; $db = "vws"; ?> <?php // Create connection $conn = new mysqli($servername, $username, $password, $db); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } ?> <?php $sql1 = "SELECT username FROM users"; $data1 = $conn->query($sql1); if ($conn->query($sql1) === TRUE) { echo ""; } ?> <?php $sql2 = "SELECT password FROM 'users'"; $data2 = $conn->query($sql2); if ($conn->query($sql2) === TRUE) { echo ""; } ?> <?php $bytes = openssl_random_pseudo_bytes(3); $hex = bin2hex($bytes); ?> <?php if($_POST['pss'] == $data2 and $_POST['uname'] == $data1) { $correct = TRUE; } else { $correct = FALSE; } ?> <?php if ($correct === TRUE) { $sql3 = "SELECT generalauth FROM users WHERE password='".$_POST['pss']."'"; $result3 = $conn->query($sql3); } ?> <?php if ($correct === TRUE) { $sql4 = "INSERT INTO tokens (tk,gauth) VALUES (".$hex."' , '".$result3."')"; if ($conn->query($sql4) === TRUE) { echo "New token genrated."; } else { echo "Error: " . $conn->error; } } ?> <?php if ($correct === TRUE) { ?> <p>Succesfuly loged in!</p><br/> <a href="../index.php<?php echo " ?view=teacher";?>"><button>Continue</button></a><br/> <?php } elseif ($correct === FALSE) { ?> <p>Incorrect, please try again.</p><br/> <a href="../login.php"><button>Back</button></a><br/> <?php } ?> <?php if ($correct === TRUE) { $_SESSION['auth'] = $hex; $_SESSION['logstat'] = TRUE; } ?> <?php if ($correct === FALSE) { $_SESSION['logstat'] = FALSE; } $conn->close(); ?> 

Это PHP, который я собираюсь использовать на большинстве страниц для токена auth, так как он фактически не проверяет токены базы данных, также мне нужен способ отображения подписанного имени пользователя с использованием общего auth.

PHP:

 <html> <h1 class="title">Virtual Work Sheets!</h1> <a href="login.php"><p class="h_option">[Log In / Register]</p></a><hr/> <div class="body"> <?php session_start(); error_reporting(0); $servername = "localhost"; $username = "root20"; $password = "jjewett38"; $db = "vws"; ?> <?php // Create connection $conn = new mysqli($servername, $username, $password, $db); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } ?> <?php $sql = "SELECT tk FROM tokens"; $data = $conn->query($sql); ?> <?php if (!$_GET['tk'] == $data) { echo " <p>Invalid token, please consider re-logging.</p> "; } else { ?> <?php switch ($_GET['view']) { case teacher: ?> 

Страница учителя html здесь …

 <?php break; case student: ?> 

Студенческая страница html здесь …

 <?php break; default: echo "Please login to view this page."; } }?> </html> 

Solutions Collecting From Web of "PHP – защищенные только члены-члены с системой входа в систему"

Я предлагаю вам изменить свой подход.

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

Во-первых, переместите файл подключения / входа в db в отдельный файл и укажите или include этот файл в верхней части каждой страницы PHP:

init.php

  // Create connection $conn = new mysqli($servername, $username, $password, $db); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } //Might as well also load your functions page here, so they are always available require_once('fn/functions.php'); ?> 

Теперь посмотрим, как мы используем его на страницах Index (и Restricted)?

index.php

 <?php require_once('inc/head.inc.php'); require_once('fn/init.php'); ?> <body> <!-- Examples need jQuery, so load that... --> <script src="https://code.jquery.com/jquery-1.11.3.js"></script> <!-- and our own file we will create next... --> <script type="text/javascript" src="js/index.js"></script> <div id="pageWrap"> <div id="loginDIV"> LoginID: <input type="text" id="liID" /><br> LoginPW: <input type="password" id="liPW" /><br> <input type="button" id="myButt" value="Login" /> </div> </div> 

JS / index.js

 $(function(){ $('#myButt').click(function(){ var id = $('#liID').val(); var pw = $('#liPW').val(); $.ajax({ type: 'post', url: 'ajax/login.php', data: 'id=' +id+ '&pw=' +pw, success: function(d){ if (d.length) alert(d); if (d==1) { window.location.href = 'restricted_page.php'; }else{ $('#liID').val(''); $('#liPW').val(''); alert('Please try logging in again'); } } }); });//END myButt.click }); //END document.ready 

AJAX / login.php

 <?php $id = $_POST['id']; $pw = $_POST['pw']; //Verify from database that ID and PW are okay //Note that you also should sanitize the data received from user if ( id and password authenticate ){ //Use database lookups ot get this data: $un = `username` //Use PHP sessions to set global variable values $_SESSION['username'] = $un; echo 1; }else{ echo 'FAIL'; } 

RESTRICTED_PAGE.PHP

 <?php if (!isset($_SESSION['username']) ){ header('Location: ' .'index.php'); } require_once('inc/head.inc.php'); require_once('fn/init.php'); ?> <body> <h1>Welcome to the Admin Page, <?php echo $_SESSION['username']; ?> <!-- AND here go all teh restricted things you need a login to do. --> 

Подробнее о AJAX – изучите простые примеры