Добро пожаловать на Pawno-Info.Ru - Портал о программировании №1

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

Маппинг для сервера

Если вы хотите обновить Ваш сервер новыми доработками - то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей

Моды для сервера

Огромный выбор различных модификаций для Вашего сервера. пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.

Модификации SA

Хотите разнообразить свою игру в San Andrease? Смелее в наш раздел. Отличный сборник готовых решений. Играйте с удовольствием

Проблема с header()

yousher

Начинающий
Пользователь
Регистрация
13 Апр 2020
Сообщения
72
Лучшие ответы
0
Реакции
7
Возраст
16
Адрес
localhost
Веб-сайт
sa.ezgame.uz
Привет друзья, крч говоря проблема вот такая

я вызываю engine/login.php после нажиматии кнопку "войти" сам форма создаётся так <form id="login-form" action="../engine/login.php" method="POST"> по классике жанра ;)

код самого engine/login.php:


PHP:
<?
    session_start();

    $host = 'localhost'; // адрес сервера
    $database = 'gtav'; // имя базы данных
    $user = 'root'; // имя пользователя
    $password = ''; // пароль
    $mysqli = @new mysqli($host, $user, $password, $database);
    $Password = $mysqli->real_escape_string(stripslashes(htmlspecialchars(trim($_POST['password']))));
    $name = $mysqli->real_escape_string(stripslashes(htmlspecialchars(trim($_POST['username']))));
    //$key = $mysqli->real_escape_string(stripslashes(htmlspecialchars(trim($_POST['scod']))));
   
    $mysqli->set_charset("utf-8");
    $sql = "SELECT `id`, `password` FROM `users` WHERE `username` = '{$name}'";
    $result = $mysqli->query($sql);

    if($result->num_rows == 1)
    {  
        $result->data_seek(0);
        $account = $result->fetch_assoc();
        $dbpassword = $account['password'];
    //    $dbkey = $account['scod'];
        $id = $account['id'];
        if($Password == $dbpassword)
        {          
       
                $_SESSION['account_name'] = $name;
               
                $_SESSION['account_id'] = $id;
                $_SESSION['account_logged'] = 'try';
                header("Location: /cabinet.php");
        //    exit();
           
        }
        else
        {
            $_SESSION['error'] = 2;
            header("Location: /login.php");

        }
    }
    else
    {
        $_SESSION['error'] = 1;
            header("Location: /login.php");
    }
    $result->close();
    $mysqli->close();

?>
ok, теперь вы видите што я вызываю cabinet.php после успешной авторизации.


начало кода cabinet.php:

Код:
<?php  require_once('engine/account.php'); ?>
<!DOCTYPE html>
<html lang="en">
теперь идёт вызов скрипта engine/account.php :


PHP:
<?

    // Подключение к базе
    require_once('engine/connection.php');
    $mysqli = @new mysqli($host, $user, $password, $database);
    // Запрос
    $id = $mysqli->real_escape_string(stripslashes(htmlspecialchars(trim($_SESSION['account_id']))));

    if(empty($_SESSION['account_id']) || $_SESSION['account_logged'] != 'try')
    {      
        echo '<p>У вас нет доступа!</p>';
    }
    else
    {      
        // Запрос аккаунта
        $mysqli->set_charset("utf8");
        $sql = "SELECT * FROM `users` WHERE `id` = {$id}";
        $result = $mysqli->query($sql);
        if($result->num_rows == '0')
        {
            unset($_SESSION['account_name']);
            unset($_SESSION['account_id']);
            unset($_SESSION['account_logged']);
            unset($_SESSION['admin']);
            session_destroy();
            header("Location: /");
        }
        else
        {  
            //$result->data_seek(0);
            $account = $result->fetch_assoc();
        //    $result->close();
           
            // Обработка данных аккаунта
            if($account['online_status'] != 0) $status = 'В игре';
            else $status = 'Не в игре';
            $name = preg_replace('/_/i', ' ', $account['username']);
           
            switch($account['donate'])
            {
                case 0:
                {
                    $pDonateRank= "Нет";
                    break;
                }
                case 1:
                {
                    $pDonateRank= "Bronze";
                    break;
                }
                case 2:
                {
                    $pDonateRank= "Silver";
                    break;
                }
                case 3:
                {
                    $pDonateRank= "Gold";
                    break;
                }

            }
            switch($account['job'])
            {
                case 1: $pJob = "Вор"; break;
                case 2: $pJob = "Механик"; break;
                case 3: $pJob = "Продавец ХотДогов"; break;
                case 4: $pJob = "Таксист"; break;
                case 5: $pJob = "Развозчика продуктов"; break;
                case 6: $pJob = "тренера"; break;
                case 7: $pJob = "Водолаз"; break;
                case 8: $pJob = "Инкассатор"; break;
                case 9: $pJob = "Неизвестно"; break;
                case 10: $pJob = "Мусоровоз"; break;
                case 11: $pJob = "Неизвестно"; break;
                case 12: $pJob = "Развозчик пиццы"; break;
                case 13: $pJob = "Автоугонщик"; break;
                case 14: $pJob = "Боксёр"; break;
                case 15: $pJob = "Местный DJ"; break;
                case 16: $pJob = "Работник Налоговой"; break;
                case 17: $pJob = "Начинающий фермер"; break;
                case 18: $pJob = "Тракторист"; break;
                case 19: $pJob = "Комбайнер"; break;
                case 20: $pJob = "Водитель кукурузника"; break;
                case 21: $pJob = "Строитель"; break;
                default: $pJob = "Безработный"; break;
            }
            switch($account['member'])
            {
                case 1: $pMember = "S.A.P.D"; break;
                case 2: $pMember = "Ф.Б.Р"; break;
                case 3: $pMember = "Армия Авианосец"; break;
                case 4: $pMember = "МЧС Лос-Сантос"; break;
                case 5: $pMember = "La Cosa Nostra"; break;
                case 6: $pMember = "Якудза"; break;
                case 7: $pMember = "Мэрия"; break;
                case 8: $pMember = "Неизвестно"; break;
                case 9: $pMember = "Неизвестно"; break;
                case 10: $pMember = "SFPD"; break;
                case 11: $pMember = "Инструктор"; break;
                case 12: $pMember = "Ballas Gang"; break;
                case 13: $pMember = "Vagos Gang"; break;
                case 14: $pMember = "Russian Mafia"; break;
                case 15: $pMember = "Grove Street Gang"; break;
                case 16: $pMember = "CNN"; break;
                case 17: $pMember = "Aztecas Gang"; break;
                case 18: $pMember = "The Rifa Gang"; break;
                case 19: $pMember = "Армия Зона 51"; break;
                case 20: $pMember = "Неизвестно"; break;
                case 21: $pMember = "LVPD"; break;
                case 22: $pMember = "Закрыто"; break;
                case 23: $pMember = "Хитман"; break;
                case 24: $pMember = "Street Racers"; break;
                case 25: $pMember = "Банк"; break;
                case 26: $pMember = "Правительство"; break;
                case 27: $pMember = "Неизвестно"; break;
                default: $pMember = "Неизвестно"; break;
            }
    
        }
    }
    // Закрываем соединение с базой
    $mysqli->close();
       
?>
после этих действий у меня должно было вводить страничку с информацией об аккаунте но вместо этого я получаю сообщение "У вас нет доступа!" потому что сессия после вызова header аннулируется(по моему потому что если вызываю данные прямо сессии нечего не выходит не ид, не пароль, не игрового ника)

По моему вы поняли суть, прощу помочь))) всем спс!
 

Serg_Brain

✩ Администратор ✩
Команда форума
Administrator
Регистрация
15 Янв 2012
Сообщения
4,059
Лучшие ответы
3
Реакции
575
  • Герой PI
  • Верность PI
  • Web-разработчик
  • OLD
  • Активный модератор
@yousher, попробуйте отладку кода через:
PHP:
 var_dump($_SESSION);
посмотрите, какой результат вам выдаст.

И я у вас не увидел начало сессии, поэтому скорей всего и выводит пустой результат, добавьте в начало страницы.
PHP:
session_start();
 

yousher

Начинающий
Пользователь
Регистрация
13 Апр 2020
Сообщения
72
Лучшие ответы
0
Реакции
7
Возраст
16
Адрес
localhost
Веб-сайт
sa.ezgame.uz
@yousher, попробуйте отладку кода через:
PHP:
 var_dump($_SESSION);
посмотрите, какой результат вам выдаст.

И я у вас не увидел начало сессии, поэтому скорей всего и выводит пустой результат, добавьте в начало страницы.
PHP:
session_start();
и так шяс попробуем, после использовании var_dump в начале скрипта account.php я получил результат "NULL" в окне браузера в странице cabinet.php

P.S: начало сессии идёт в скрипте engine/login.php
 

yousher

Начинающий
Пользователь
Регистрация
13 Апр 2020
Сообщения
72
Лучшие ответы
0
Реакции
7
Возраст
16
Адрес
localhost
Веб-сайт
sa.ezgame.uz
и так попробовал только что вот такую функцию в начале engine/login.php:

Код:
session_name("acclogin");
    session_start();
и в скрипте account.php добавил следущее:

Код:
        session_start("acclogin");
и я получил то что мне нужно но... после входа в кабинет там в самом начале пишет такую ошибку:

Код:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\v.ezgame.uz\www\cabinet.php:2) in Z:\home\v.ezgame.uz\www\engine\account.php on line 3
но я получил инфы о игроке но этот сообщение в начале страницы мешает-же)))) как исправить?

P.S: без session_start("acclogin"); в скрипте account.php я нечего не получаю.
 

Serg_Brain

✩ Администратор ✩
Команда форума
Administrator
Регистрация
15 Янв 2012
Сообщения
4,059
Лучшие ответы
3
Реакции
575
  • Герой PI
  • Верность PI
  • Web-разработчик
  • OLD
  • Активный модератор
@yousher, на всех страницах вы должны использовать
PHP:
session_start();
там где вы будете либо записывать или получать данные из сессии.

На счет header(), она должна выводиться в начале страницы, если перед ней на сайте выводиться какая-либо информация, даже при var_dump(), вы будете получать эту ошибку.
 

yousher

Начинающий
Пользователь
Регистрация
13 Апр 2020
Сообщения
72
Лучшие ответы
0
Реакции
7
Возраст
16
Адрес
localhost
Веб-сайт
sa.ezgame.uz
никак не помогло
 

Serg_Brain

✩ Администратор ✩
Команда форума
Administrator
Регистрация
15 Янв 2012
Сообщения
4,059
Лучшие ответы
3
Реакции
575
  • Герой PI
  • Верность PI
  • Web-разработчик
  • OLD
  • Активный модератор
@yousher если не получится, скиньте мне пару данных страничек, чтобы я посмотрел код и подсказал в чем может быть ещё проблема.
 

yousher

Начинающий
Пользователь
Регистрация
13 Апр 2020
Сообщения
72
Лучшие ответы
0
Реакции
7
Возраст
16
Адрес
localhost
Веб-сайт
sa.ezgame.uz

Serg_Brain

✩ Администратор ✩
Команда форума
Administrator
Регистрация
15 Янв 2012
Сообщения
4,059
Лучшие ответы
3
Реакции
575
  • Герой PI
  • Верность PI
  • Web-разработчик
  • OLD
  • Активный модератор
@yousher, а попробуйте перенести:
PHP:
session_start();
ниже строчки:
PHP:
session_cache_limiter('private');
Какой будет результат.
 

yousher

Начинающий
Пользователь
Регистрация
13 Апр 2020
Сообщения
72
Лучшие ответы
0
Реакции
7
Возраст
16
Адрес
localhost
Веб-сайт
sa.ezgame.uz

Serg_Brain

✩ Администратор ✩
Команда форума
Administrator
Регистрация
15 Янв 2012
Сообщения
4,059
Лучшие ответы
3
Реакции
575
  • Герой PI
  • Верность PI
  • Web-разработчик
  • OLD
  • Активный модератор
@yousher в файле account.php

В самом начале страницы, я смотрю код который вы мне скинули.
 

Похожие темы

Автор Название темы Форум Ответы Дата
Вопрос/Ответ 4
shape1
shape2
shape3
shape4
shape7
shape8
Сверху Снизу