0 / 0 / 0
Регистрация: 10.07.2013
Сообщений: 44
1

Происходит зацикливание в перенапрвалении во всех браузерах кроме оперы?

29.07.2013, 16:35. Показов 1014. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Происходит зацикливание в перенапрвалении во всех браузерах кроме оперы?
С чем это может быть связано?
Я полностью очищал куки и сессии на серве удалял, но в опере работает, а в других, нет.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.07.2013, 16:35
Ответы с готовыми решениями:

Во всех браузерах работает, кроме IE 7
Помогите, пожалуйста, решить проблему. Вставлено событие onclick таким образом: <p...

Скрипт работает во всех браузерах кроме Mozilla
Здравствуйте! В Mozilla не работают следующие события: function go() { if...

Рекламные окна и баннеры во всех браузерах, кроме Opera
Здравствуйте. Проблема: Рекламные окна и баннеры во всех браузерах, кроме Opera. Проблема...

Блок с калькуляторами во всех браузерах отображается нормально, кроме Safari
Здравствуйте, подскажите пожалуйста почему блок с калькуляторами во всех браузерах отображается...

11
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.07.2013, 16:37 2
а код не хотите показать..?
0
0 / 0 / 0
Регистрация: 10.07.2013
Сообщений: 44
29.07.2013, 16:43  [ТС] 3
Цитата Сообщение от KOPOJI Посмотреть сообщение
а код не хотите показать..?
Вот:
Вложения
Тип файла: rar go.rar (5.3 Кб, 1 просмотров)
0
0 / 0 / 0
Регистрация: 10.07.2013
Сообщений: 44
29.07.2013, 17:04  [ТС] 4
Тем кто думает что я супер-злой-хакер:
index.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
include('config.php');
 
define('GO',TRUE);
 
header("Content-Type: text/html; charset: utf-8");
 
session_start();
 
set_include_path(get_include_path()
                .PATH_SEPARATOR.CONTROLLER
                .PATH_SEPARATOR.MODEL
                .PATH_SEPARATOR.VIEW
                );
                
function __autoload($className){
    if(!require_once($className.'.php')){
        header("Location: ".SITE_URL);
    }
}
 
$pg = Main_Controller::get_instance();
$pg->route();
?>


Main_Controller.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
class Main_Controller{
    protected $controller;
    
    protected $request_url;
    
    protected $ch_m;
    
    public $ob_m;
    
    static $_instance;
    
    static function get_instance(){
        if(self::$_instance instanceof self){
            return self::$_instance;
        }
        return self::$_instance = new self;
    }
    
    private function __construct(){
        
        
        $zapros = $_SERVER['REQUEST_URI'];
        
        $path = substr($_SERVER['PHP_SELF'],0,strpos($_SERVER['PHP_SELF'],'index.php'));
        
        if($path === SITE_URL){
            $this->request_url = substr($zapros,strlen(SITE_URL));
            
            $url = explode('/',trim($this->request_url,'/'));
            
            if(empty($url[0])){
                $this->controller = "Index_Controller";
            }else{
                $this->controller = ucfirst($url[0])."_Controller";
            }
            $this->ch_m = Check_Model::get_instance();
        }else{
            header("Location: ".SITE_URL);
        }
    }
    public function route(){
        $filename = "core/controller/".$this->controller.'.php';
        if(file_exists($filename)){
            if(class_exists($this->controller)){
                    if(isset($_SESSION['id']) && isset($_SESSION['numb']) && !empty($_SESSION['id']) && !empty($_SESSION['numb'])){
                        if($this->controller == 'Welcome_Controller'){
                            header("Location: ".SITE_URL);
                        }
                    }
                $o = new $this->controller;
            }else{
                header("Location: ".SITE_URL);
            }
        }else{
                header("Location: ".SITE_URL);
        }
    }
}
?>


Welcome_Controller.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
class Welcome_Controller extends Main_Controller{
    protected $auth;
 
    public function __construct(){
        if($this->check_auth() == FALSE){
            $err = 'Неправильный логин или пароль';
        }
        include('header.php');
        include('welcome_page.php');
    }
    protected function check_auth(){
        $this->ob_m = Main_Model::get_instance();
        if($_SERVER['REQUEST_METHOD'] == 'POST'){
            if(isset($_POST['login']) && isset($_POST['password']) && !empty($_POST['login']) && !empty($_POST['password'])){
                $login = $_POST['login'];
                $password = $_POST['password'];
                if((strlen($login) < 4) or (strlen($password) < 6)){
                    $err = 'Неправильный логин или пароль';
                }else{
                    $login = $this->check_input($login);
                    $password = $this->check_input($password);
                    $sql = "SELECT id,login,password FROM users WHERE login='".$login."'";
                    if($result = $this->ob_m->ins_db->query($sql)){
                        $row = $result->fetch_array(MYSQL_ASSOC);
                        if(($row['login'] == $login) && ($row['password'] == $password)){
                            $_SESSION['id'] = $row['id'];
                            $_SESSION['numb'] = mt_rand();
                            setcookie('login', $row['login'], time()+60*60*24*365);
                            $access = $row['id'].md5($row['password']);
                            setcookie('access', $access, time()+60*60*24*365);
                            header("Location: ".SITE_URL);
                        }else{
                            $err = 'Неправильный логин или пароль';
                        }
                    }else{
                        $err = 'Неправильный логин или пароль';
                    }
                }
            }else{
                $err = 'Неправильный логин или пароль';
            }
        }
        if($err != ''){
            return FALSE;
        }else{
            return TRUE;
        }
    }
    protected function check_input($input){
        $input = trim($input);
        $input = stripslashes($input);
        $input = htmlspecialchars($input);
        
        return $input;
    }
    
    protected function real_ip($ip){
        if (!empty($_SERVER['HTTP_CLIENT_IP'])){
            $ip=$_SERVER['HTTP_CLIENT_IP'];
        }elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
            $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
        }else{
            $ip=$_SERVER['REMOTE_ADDR'];
        }
        return $ip;
    }
}
?>


Check_Model.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
class Check_Model{
    protected $ob_m;
 
    static $_instance;
    
    static function get_instance(){
        if(self::$_instance instanceof self){
            return self::$_instance;
        }
        return self::$_instance = new self;
    }
    
    private function __construct(){
        if($_SERVER['REQUEST_METHOD'] != 'POST'){
            if(isset($_SESSION['id']) && isset($_SESSION['numb']) && !empty($_SESSION['id']) && !empty($_SESSION['numb'])){
                //header("Location: ".SITE_URL);
            }else{
                if(isset($_COOKIE['login']) && isset($_COOKIE['access']) && !empty($_COOKIE['login']) && !empty($_COOKIE['access'])){
                    $this->ob_m = Main_Model::get_instance();
                    $sql = "SELECT id,login,password FROM users WHERE login='".$_COOKIE['login']."'";
                    if($result = $this->ob_m->ins_db->query($sql)){
                        $row = $result->fetch_array(MYSQL_ASSOC);
                        if($_COOKIE['access'] = $row['id'].md5($_COOKIE['password'])){
                            $_SESSION['id'] = $row['id'];
                            $_SESSION['numb'] = mt_rand();
                            setcookie('login', $row['login'], time()+60*60*24*365);
                            $access = $row['id'].md5($row['password']);
                            setcookie('access', $access, time()+60*60*24*365);
                            header("Location: ".SITE_URL);
                        }
                    }else{
                        exit("Ошибка");
                    }
                }
                header("Location: ".SITE_URL.'welcome');
            }
        }
    }
}
?>


Main_Model.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
class Main_Model{
    public $ins_db;
 
    static $_instance;
    
    static function get_instance(){
        if(self::$_instance instanceof self){
            return self::$_instance;
        }
        return self::$_instance = new self;
    }
    
    private function __construct(){
        $this->ins_db = new mysqli(HOST,USER,PASS,DB_NAME);
        if($this->ins_db->connect_error){
                    $error = date("Y-m-d H:i:s")." | ".$_SESSION['id']." | ".$_SESSION['numb']." | ".$this->ins_db->error();
                    file_put_contents("logdb.txt",$error);
                    header("Location: ".SITE_URL);
        }
        $this->ins_db->query("SET NAMES 'UTF8'");
    }
}
?>


.htaccess
PHP
1
2
3
4
5
6
7
8
9
php_flag magic_quotes_gpc off
 
AddDefaultCharset utf-8
DirectoryIndex index.php
 
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.07.2013, 17:07 5

Не по теме:

Цитата Сообщение от Nikez Посмотреть сообщение
Тем кто думает что я супер-злой-хакер
не, вы изверг, столько кода выложить.. %-)



Добавлено через 45 секунд
везде, где есть
Цитата Сообщение от Nikez Посмотреть сообщение
PHP
1
header("Location:
в конце добавьте
PHP
1
exit(0);
0
0 / 0 / 0
Регистрация: 10.07.2013
Сообщений: 44
29.07.2013, 17:18  [ТС] 6
Все равно не работает, но теперь в опере есть состояние перенаправления))
Цитата Сообщение от KOPOJI Посмотреть сообщение
не, вы изверг, столько кода выложить..
А как еще показать, тут же много мест, где может произойти что-то?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.07.2013, 17:31 7
так очень сложно сказать, в чем проблема. Поубирайте все инклуды, в exit подобавляйте сообщения с именем файла вместо нуля, по очереди пробуйте подключать каждый файл, смотрите, где и что идет не так. В общем, разбейте все на как можно меньшие части, а затем потихоньку собирайте и смотрите..
p.s. добавьте флаг на всякий случай в .htaccess
Цитата Сообщение от Nikez Посмотреть сообщение
Код
RewriteRule ^(.*) index.php
Код
RewriteRule ^(.*)$ index.php [L]
Добавлено через 1 минуту
как вариант - замените все header на echo, где выводите имя файла. Правда, раз редирект бесконечный, то пых, скорее всего, загнется раньше вывода. Можно попробовать записывать в файл, а не выводить, а потом посмотреть, где идет зацикливание
0
0 / 0 / 0
Регистрация: 10.07.2013
Сообщений: 44
29.07.2013, 17:39  [ТС] 8
Сделал как сказали в check_model 3 header вывел. Сейчас попробую в файл//
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.07.2013, 17:40 9
PHP
1
file_put_contents( './info.txt', __FILE__ . PHP_EOL, FILE_APPEND );
1
0 / 0 / 0
Регистрация: 10.07.2013
Сообщений: 44
29.07.2013, 20:39  [ТС] 10
Все готово) Спасибо KOPOJI)
Вот так сделал:
PHP
1
2
3
if($this->controller != "Welcome_Controller"){
                            $this->ch_m = Check_Model::get_instance();
                        }
Добавлено через 2 часа 50 минут
У меня похоже нездоровая любовь к хедерам)
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.07.2013, 20:42 11
не забывайте после редиректа завершать выполнение скрипта, т.к. иначе скрипт пойдет дальше, и, к примеру, если у вас выполняются какие-то действия с БД (например, запись данных), то они могут выполнится
0
0 / 0 / 0
Регистрация: 10.07.2013
Сообщений: 44
29.07.2013, 23:01  [ТС] 12
Хорошо, спасибо, а еще вопрос у меня возник. Почему в классах наследниках не отображаются свойства Main_Controller. Вот например в Index_Controller вызываю this->controller, это не отображается, даже если, делать их публичными, даже если, переопределять через метод.

Добавлено через 10 минут
Спаситее уже час мучаюсь..

Добавлено через 18 минут
Понял что все дело в приватном конструкторе как из него извлечь свойства в паблик?
0
29.07.2013, 23:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.07.2013, 23:01
Помогаю со студенческими работами здесь

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

Происходит зацикливание
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;windows.h&gt; #include &lt;list&gt; #include &lt;iterator&gt;...

Происходит зацикливание
Постановка задачи:Номиналы российских рублей могут принимать значения 1, 2, 5, 10, 50, 100, 500,...

Происходит зацикливание!
var k,n:integer; xn,s:longint; begin readln(n); xn:=1; s:=0; k:=1; while k&lt;=n do begin...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru