Двухкомпонентный пароль - PullRequest
       7

Двухкомпонентный пароль

0 голосов
/ 08 февраля 2020

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

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

Код, который я пытаюсь использовать:

<?php
    error_reporting(E_ALL & ~E_NOTICE);

    require('Connections/config.php');
    session_start();

    // If form submitted, insert values into the database.
    if (isset($_POST['username'])) {

    // removes backslashes
    $username = stripslashes($_REQUEST['username']);

    //escapes special characters in a string
    $username = mysqli_real_escape_string($con, $username);
    $pword1 = stripslashes($_REQUEST['pword1']);
    $pword1 = mysqli_real_escape_string($con, $pword1);
    $pword2 = stripslashes($_REQUEST['pword2']);
    $pword2 = mysqli_real_escape_string($con, $pword2);


    //Checking is user existing in the database or not
    $query = "SELECT `lastName`, SUBSTRING(`homeAddress`, -3) AS postCode, SUBSTRING(`homePhone`, -6) AS homePhone, SUBSTRING(`mobilePhone`, -6) AS mobilePhone FROM `tblAddressBook` WHERE lastName='$username' AND postCode='$pword1' AND homePhone='$pword2' OR mobilePhone='$pword2'";
    $result = mysqli_query($con, $query) or die(mysql_error());
    $rows = mysqli_num_rows($result);
    if ($rows==1) {
    $_SESSION['username'] = $username;

    // Redirect user to index.php
    header("Location: /welcome.php");
    } else {
        echo "<div class='form'><h3>Username/password is incorrect.</h3><br/>Click here to <a href='login.php'>Login</a></div>";
        }
    } else {
?>

<article class="col-xs-12 col-sm-12 col-md-12 col-lg-8">

    <form action="" method="post">
        <div class="form-group">
            <label>Username:</label>
            <input class="form-control" type="text" name="username">
        </div>

        <div class="form-group">
            <label>Password:</label>
            <div class="row">
            <div class="col-sm-6"><input class="form-control" type="text" name="pword1"></div>
            <div class="col-sm-6"><input class="form-control" type="text" name="pword2"></div>
        </div>
        </div>

        <p>&nbsp;</p>

        <div class="form-group">
            <div class="col-sm-12">
                <input type="submit" class="btn btn-default center-block" value="Sign In">
            </div>
        </div>
    </form>
</article>

<?php } ?>

Конфигурация. php file: $con = mysqli_connect(localhost, root, password) or trigger_error(mysqli_error(),E_USER_ERROR);

Что я / я делаю не так? Как я могу заставить это работать? Будет ли это, на самом деле, когда-нибудь работать?

1 Ответ

0 голосов
/ 08 февраля 2020

Как я уже сказал в своем комментарии, всегда убедитесь, что у вас настроен error_reporting.

error_reporting(E_ALL & ~E_NOTICE); 

Добавьте это в верхнюю часть ваших подключений / квакеров. php страница.

Вы используете mysql_error () внутри объявления ie param. Так что с d ie () все в порядке (вот почему вы получаете пустую страницу), но поскольку отчет об ошибках не включен, вы не увидите ошибку для функции. mysql_error () больше не поддерживается.

Предупреждение Это расширение устарело в PHP 5.5.0 и удалено в PHP 7.0.0. Вместо этого следует использовать расширение MySQLi или PDO_ MySQL. См. Также MySQL: выбор руководства по API и соответствующих часто задаваемых вопросов для получения дополнительной информации. Альтернативы этой функции включают в себя:

mysqli_error () PDO :: errorInfo ()

mysqli_error () https://www.php.net/manual/en/mysqli.error.php

Я заметил а также другие проблемы ...

Использование '(Простые кавычки) внутри оператора SELECT отобразит то, что когда-либо находится между простыми кавычками в каждой строке.

Например,

SELECT 'id' FROM `_CONFIG`

Будет выводить

id 
id 
id

вместо

1
2
3

Вам нужно использовать `` not ''

SELECT 'lastName'

должно быть

SELECT `lastName`

И последнее, вы должны добавить / к вашему перенаправлению.

header("Location: /welcome.php");

Чтобы сессия работала, вы должны раскомментировать функцию session_start ()

Вы очевидно, начиная с PHP ... вы должны рассмотреть изучение языка с самого начала. Используйте Symfony или Laravel. Это заставит вас использовать лучшие практики кода. Код, которым вы только что поделились, неверен во многих отношениях ... Это похоже на возвращение во времени. Это не то, как PHP предполагается использовать сейчас дни.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...