Nano Hash - криптовалюты, майнинг, программирование

$_SESSION не работает

Так что я уже не знаю, что делать. Я пытался создать систему регистрации/входа для своего сайта. После долгих мучений моя регистрация теперь работает, но я пока не могу войти в нее. Я почти уверен, что это проблема, связанная с $_session.

Итак, у меня есть два файла, один называется get_users.php (я знаю, что это плохое имя), а другой называется cart.php. Ни у одного из них нет пробела в начале.

Что я на самом деле пытаюсь сделать? Я пытаюсь, чтобы мой сеанс отображался на cart.php.

get_users.php:

    <?php
$username = $_POST['username'];
$password = $_POST['password'];

$con = new mysqli("localhost","root","","ismsite");
$query = ("SELECT name, comment FROM comments ORDER BY id DESC");
$result = mysqli_query($con, $sql, MYSQLI_BOTH);
session_start();
$_SESSION["user_id"] = $row["user_id"];
header('Location: cart.php');
exit();
?>

и в начале cart.php

<?php
session_start();
include 'config/config.php';
echo $_SESSION["user_id"];
?>

Я действительно в моем остроумии конец здесь. Я искал этот сайт, но я не мог найти решение моей проблемы. Кто знает в чем проблема?

Дополнительная информация: - Установлен последний php - Я запускаю его на виртуальном веб-сервере, на котором работает последний клиент Ubuntu с установленным стеком LAMP. -БД работает нормально

заранее спасибо

РЕДАКТИРОВАТЬ:

Я изменил $row["user_id"]; на $result["user_id"];

Но все равно не появляется

29.12.2015

  • Где определяется $row["user_id"]? 29.12.2015
  • Ты забыл эту строчку, $row=mysqli_fetch_array($result); 29.12.2015
  • Хорошо, я изменил его, чтобы вместо этого использовать $result[user_id] (спасибо за это), но он все еще не отображается 29.12.2015
  • $result['user_id'] не сработает. Сначала вы должны получить массив из набора результатов. 29.12.2015
  • @ dh19 Вам нужно прочитать руководство по mysqli_query. он не возвращает массив... 29.12.2015
  • Возможный дубликат сеанса PHP, не работающего в PHP5 29.12.2015

Ответы:


1

Попробуй это

        // Define $username and $password
        $username=$_POST['username'];
        $password=$_POST['password'];

        //for hashing passwords
        $username = stripslashes($username);
        $password = stripslashes($password);
        $username = mysqli_real_escape_string($db,$username);
        $password = mysqli_real_escape_string($db,$password);
        $password = md5($password);         
        //Check username and password from database
        $sql="SELECT userid FROM users WHERE username='$username' and   password='$password'";
        $result=mysqli_query($db,$sql) 
        or die("Error");


        $row=mysqli_fetch_array($result,MYSQLI_ASSOC);

        //If username and password exist in our database then create a session.
        //Otherwise echo error.

        if(mysqli_num_rows($result) == 1)
        {
            $_SESSION['username'] = $username; // Initializing Session

        }else
        {
            $error = "Incorrect username or password.";
        }

Но вам придется настроить в соответствии со структурой вашей таблицы.

29.12.2015
  • Вышеприведенный код является базовым с возможностью инъекций mysql. Поэтому лучше создавать страницы входа и регистрации, используя подготовленные операторы для безопасной работы. 29.12.2015
  • Это ужасный кусок кода. Он не только не защищает от инъекций SQL, но и предполагает вы храните пароли в виде обычного текста. Вам действительно нужно хешируйте свои пароли 29.12.2015
  • Я только что дал его требование, для которого он просто хочет войти в систему, но лично я предпочитаю использовать подготовленные заявления, которые я уже указал в комментарии выше. и для хеш-паролей. позвольте мне отредактировать это 29.12.2015
  • Я вставил этот код, но он по-прежнему не показывает переменную сеанса на экране. 29.12.2015
  • Разместите структуру таблицы 29.12.2015
  • @Stark Поддерживает его очистку, но md5 - такое же плохое решение, как и отсутствие хэша вообще. Поймите, что ваш ответ, как только вы его оставите, может жить годами, и люди могут использовать этот код. Поэтому, пожалуйста, не давайте быстрых примеров с плохим кодом. 29.12.2015

  • 2

    Может быть $_SESSION["user_id"] не установлен. Вы можете протестировать массив $_SESSION с помощью print_r($_SESSION) или print_r($GLOBALS);

    29.12.2015
  • В первом сценарии get_users.php: где находится session_start()? 29.12.2015
  • это возвращает: Массив ( [user_id] =› ), поэтому я предполагаю, что он не установлен. Тогда что мне нужно изменить в моем get_users? 29.12.2015
  • get_users.php: ‹?php session_start(); $username = $_POST['имя пользователя']; $пароль = $_POST['пароль']; $con = новый mysqli(localhost,root,,ismsite); $query = (ВЫБРАТЬ имя, комментарий ИЗ комментариев ORDER BY id DESC); $result = mysqli_query($con, $sql, MYSQLI_BOTH); сеанс_старт(); $_SESSION[идентификатор_пользователя] = $строка[идентификатор_пользователя]; header('Расположение: cart.php'); выход(); ?› 29.12.2015
  • Итак, добавьте первую строку session_start(); в get_users.php 29.12.2015
  • Его проблема не в сеансе. Его проблема в том, что он неправильно получает данные для ввода в сеанс. 29.12.2015
  • Я действительно забыл вставить session_start(); последний раз. Теперь работает как надо. Так что всем большое спасибо 29.12.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..