• Как подключить два php файла?

    iLegion
    @iLegion
    Web Developer
    Рекомендую указывать путь к файлу как указано ниже. В будущем не будет проблем с подключением файлов.
    include($_SERVER['DOCUMENT_ROOT'] . "путь к файлу относительно корня сайта");

    или
    include_once($_SERVER['DOCUMENT_ROOT'] . "путь к файлу относительно корня сайта");

    вариант выше нужно прописывать если вы не хотите чтобы данный файл не подключался более одного раза в одном и том же документе.
    Ответ написан
    Комментировать
  • Можете прокомментировать код авторизации на PHP?

    @DanKud
    <?PHP session_start(); /* начинается новая сессия */
    
    /* список переменных */
    $login = 'login';
    $pass = 'pass';
    $email = 'v@c.ru';
    
    /* если отправлен $_GET-параметр 'logout' то осуществляется процесс выхода из аккаунта
    при этом удаляются куки и закрывается сессия */
    if($_GET['logout'] == true) {
        setcookie("loggedIn", "false", time() - 3600); /* удаление куков */
        setcookie("PHPSESSID", "", time() - 3600);
        setcookie("login", "", time() - 3600);
        header('Location: ' . $_SERVER['PHP_SELF']); /* обновление страницы без $_GET-параметров */
        session_destroy(); /* закрывается сессия */
    }
    
    /* если отправлен $_POST-параметр 'submit' осуществляется процесс входа в аккаунт */
    if($_POST['submit']) {
    /* создается массив с входными данными по условиям */
        $data['login'] = $_POST['login'] == $login ? $_POST['login'] : false;
    /* условие: если $_POST['login'] == 'login' то в массив $data['login'] присваивается
    значение $_POST['login'], иначе false */
        $data['pass'] = $_POST['password'] == $pass ? $_POST['password'] : false;
        $data['email'] = $_POST['email'] == $email ? $_POST['email'] : false;
    
    /* циклом проверяются входные значения */
        foreach($data as $key => $value) {
    /* если какому-то значению в массиве присвоилось false, то ключ массива заносится в массив $error,
    например пользователь не указал е-мейл тогда в $data['email'] записалось false и в
    массиве $error мы будем иметь значение 'email' */
                If(!$value) $error[] = $key;
        }
    
    /* если массив $error пустой и ошибок нет то сохраняем куки */
        if(empty($error)) {
                setcookie('loggedIn', true); /* записываем куки */
                setcookie('PHPSESSID', session_id());
                setcookie('login', $data['login']);
                session_start(); /* начинаем сессию */
                header('Location: ' . $_SERVER['PHP_SELF']); /* обновляем страницу */
        }
        else {
    /* если массив $error НЕ пустой и ошибки были, то не входим в аккаунт и выводим
    массив $error и видим какое поле выдало ошибку */
                print_r($error);
        }
    }
    
    /* если куки 'loggedIn' == true и вход выполнен, то отображать приветствие
    для пользователя и кнопку выхода */
    if($_COOKIE['loggedIn']) : ?>
    <p>Hello, <?= $_COOKIE['login']; ?></p>
    <a href="<?= $_SERVER['PHP_SELF']; ?>?logout=true">logout</a>
    
    /* иначе, если вход не выполнен, отображать форму для входа в аккаунт */
    <?PHP else : ?>
    <form action="<?= $_SERVER['PHP_SELF']; ?>" method="post">
        <label>login</label><input type="text" name="login" required><br>
        <label>password</label><input type="password" name="password" required><br>
        <label>email</label><input type="email" name="email" required><br>
        <input type="submit" name="submit" value="login">
    </form>
    <?PHP endif; ?>
    Ответ написан
    2 комментария
  • Как не допустить вход на сайт двух пользователей под одним логином?

    kaiten
    @kaiten
    Архитектор ИС
    Плохая идея не пускать, вы ограничиваете пользователя. Человек зашёл на работе на сайт, дома уже не зайдёт...

    Адекватный вариант выкидывать пользователя в старых местах и пускать в новых.
    Ответ написан
    4 комментария
  • Как подключить два php файла?

    @DanKud
    require_once 'ваш_файл.php';

    документация по include и require_once
    Ответ написан
    8 комментариев