Перейти в начало страницы

Здравствуйте, гость ( Авторизация | Регистрация )

Gameru.net останавливает работу в связи с вторжением армии РФ в Украину. Следите за дальнейшими анонсами.
Support Gameru!
19 страниц V  « < 13 14 15 16 17 > »   
Ответить в данную темуНачать новую тему
> Вопросы по Web-программированию
SaneX
сообщение 29.07.2013, 22:26
Сообщение #281


Игровой Бог первой степени
***********************

Репутация:   1167  
Группа: Участник
Сообщений: 9404
Награды: 5
Регистрация: 15.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


мороки много =( а MVC это разделение на логику модели, отображения и контроллера, т.е. вполне, я щитаю, можно искользовать для логики отображения конструкции типа
Код
blablabla

<div> bla bla bla

Собственно, я теперь так и делаю без помещения html кода в переменную:
Код
$html = "blablabla ".echo model::foo()."";
if (blablabla){
echo $html;
}


Сообщение отредактировал SaneX - 29.07.2013, 22:40


--------------------
Перейти в начало страницы
 
cjayho
сообщение 29.07.2013, 22:30
Сообщение #282


Мастер Игры
************

Репутация:   248  
Группа: Участник
Сообщений: 1363
Награды: 4
Регистрация: 08.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(SaneX @ 17.07.2013, 19:15) *
Но если сохранить в сессии объект класса, то он добавляется в сессию, однако после обновления старницы значения переменных объекта удаляются из сессии.



Вообще паттерн mvc и предназначен для жесткого разделения исполняемого кода и произвольных данных. Вы же, сохраняя класс (который является вместилищем и исполняемого кода тоже) по сути сводите на нет все усилия. Лучше реализуйте сериализацию данных и обратное восстановление при записи в сессию и из нее соответственно. Несмотря на то, что данные сессии хранятся на сервере во временных файлах, от повреждения файлов никто не застрахован, и лучше пусть повредятся произвольные данные, чем повредится исполняемый код, что приведет к непредсказуемым результатам.


--------------------
Набор шейдеров для S.T.A.L.K.E.R: Shadow of chernobyl: ECB-Shaderpack - https://github.com/cjayho/ecb-shaderpack/

------

Продюсер электронной музыки в стиле Dark Ambient, автор саундтрека для Desowave S.T.A.L.K.E.R.: Lost Alpha.

Spotify | Apple Music | YouTube | BandCamp | AudioMack
Перейти в начало страницы
 
SaneX
сообщение 29.07.2013, 22:34
Сообщение #283


Игровой Бог первой степени
***********************

Репутация:   1167  
Группа: Участник
Сообщений: 9404
Награды: 5
Регистрация: 15.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(cjayho @ 29.07.2013, 23:30) *
Цитата(SaneX @ 17.07.2013, 19:15) *
Но если сохранить в сессии объект класса, то он добавляется в сессию, однако после обновления старницы значения переменных объекта удаляются из сессии.


Вообще паттерн mvc и предназначен для жесткого разделения исполняемого кода и произвольных данных. Вы же, сохраняя класс (который является вместилищем и исполняемого кода тоже) по сути сводите на нет все усилия. Лучше реализуйте сериализацию данных и обратное восстановление при записи в сессию и из нее соответственно. Несмотря на то, что данные сессии хранятся на сервере во временных файлах, от повреждения файлов никто не застрахован, и лучше пусть повредятся произвольные данные, чем повредится исполняемый код, что приведет к непредсказуемым результатам.



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

Сообщение отредактировал SaneX - 29.07.2013, 22:35


--------------------
Перейти в начало страницы
 
cjayho
сообщение 29.07.2013, 22:36
Сообщение #284


Мастер Игры
************

Репутация:   248  
Группа: Участник
Сообщений: 1363
Награды: 4
Регистрация: 08.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(SaneX @ 29.07.2013, 22:26) *
мороки много =( а MVC это разделение на логику модели, отображения и контроллера, т.е. вполне, я щитаю, можно искользовать для логики отображения конструкции типа
Код
blablabla

ololololol

Собственно, я теперь так и делаю без помещения html кода в переменную:
Код
$html = "blablabla ".echo model::foo()."";
if (blablabla){
echo $html;
}


Если уже подходить последовательно, то модель данных у вас уже есть - это база данных. В ней еще и часть логики вида есть - есть ведь такие штуки как view, которые позволяют делать весьма сложные выборки из таблиц. Тоесть вам по сути надо написать контроллер и шаблонизатор. Остальное уже - это программирование БД.


--------------------
Набор шейдеров для S.T.A.L.K.E.R: Shadow of chernobyl: ECB-Shaderpack - https://github.com/cjayho/ecb-shaderpack/

------

Продюсер электронной музыки в стиле Dark Ambient, автор саундтрека для Desowave S.T.A.L.K.E.R.: Lost Alpha.

Spotify | Apple Music | YouTube | BandCamp | AudioMack
Перейти в начало страницы
 
SaneX
сообщение 29.07.2013, 22:43
Сообщение #285


Игровой Бог первой степени
***********************

Репутация:   1167  
Группа: Участник
Сообщений: 9404
Награды: 5
Регистрация: 15.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата
по сути надо написать контроллер


У меня контроллер выбирает из адреса страницы "site.ru/item/1" переменные, к примеру "1", и по ним уже работает модель.
Ещё создает объекты класса модели и вью. Ещё назначает общий шаблон для страницы и подключает файл "страница_view.php"

Что ещё он должен делать?

PS: базовую реализацию я честно стащил с хабры, т.к. с нуля мне не это не по зубам =)
http://habrahabr.ru/post/150267/

Сообщение отредактировал SaneX - 29.07.2013, 22:49


--------------------
Перейти в начало страницы
 
cjayho
сообщение 29.07.2013, 23:03
Сообщение #286


Мастер Игры
************

Репутация:   248  
Группа: Участник
Сообщений: 1363
Награды: 4
Регистрация: 08.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(SaneX @ 29.07.2013, 22:43) *
Цитата
по сути надо написать контроллер


У меня контроллер выбирает из адреса страницы "site.ru/item/1" переменные, к примеру "1", и по ним уже работает модель.
Ещё создает объекты класса модели и вью. Ещё назначает общий шаблон для страницы и подключает файл "страница_view.php"

Что ещё он должен делать?

PS: базовую реализацию я честно стащил с хабры, т.к. с нуля мне не это не по зубам =)
http://habrahabr.ru/post/150267/


Честно говоря то что там на хабре написано ничего кроме фейспалма не вызывает.

Да кстати избегайте делать страницы сайта в виде http://сайт/раздел/
только http://сайт/раздел.htm и именно .htm, не .php и тем более не урл со слешем в конце. Очень плохая практика, так как противоречит всем писанным стандартам. Работать в браузере будет, но так делать не стОит. На то есть много причин.
Также избегайте как кириллики в урл, так и параметров вроде http://сайт/чтототам.php?var1=многа_многа_букаф
Для параметров запроса есть POST или сессии, GET-запросы в свое время были временным костылем, когда в начале 90-х ничего не оставалось как передавать параметры CGI-скриптам таким образом.


--------------------
Набор шейдеров для S.T.A.L.K.E.R: Shadow of chernobyl: ECB-Shaderpack - https://github.com/cjayho/ecb-shaderpack/

------

Продюсер электронной музыки в стиле Dark Ambient, автор саундтрека для Desowave S.T.A.L.K.E.R.: Lost Alpha.

Spotify | Apple Music | YouTube | BandCamp | AudioMack
Перейти в начало страницы
 
SaneX
сообщение 29.07.2013, 23:08
Сообщение #287


Игровой Бог первой степени
***********************

Репутация:   1167  
Группа: Участник
Сообщений: 9404
Награды: 5
Регистрация: 15.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата
только http://сайт/раздел.htm и именно .htm, не .php и тем более не урл со слешем в конце.
хм. на будущее усвою, но все же, чем плохо? Тот же d3 открываю, а там: http://android.d3.ru/comments/463924/, ну или хабр: http://habrahabr.ru/post/188010/
Цитата
тем более не урл со слешем в конце

у меня щас редирект идет со ссылки вида "site.ru/item/1/" на "site.ru/item/1"

Сообщение отредактировал SaneX - 29.07.2013, 23:10


--------------------
Перейти в начало страницы
 
OlegatoR
сообщение 29.07.2013, 23:10
Сообщение #288


Gameru DA
************************

Репутация:   3704  
Группа: Администратор
Сообщений: 10206
Награды: 4
Регистрация: 03.02.2006




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(cjayho @ 29.07.2013, 23:03) *
Да кстати избегайте делать страницы сайта в виде http://сайт/раздел/
только http://сайт/раздел.htm и именно .htm, не .php и тем более не урл со слешем в конце.

Цитата(cjayho @ 29.07.2013, 23:03) *
Работать в браузере будет, но так делать не стОит. На то есть много причин.

Цитата(cjayho @ 29.07.2013, 23:03) *
так и параметров вроде http://сайт/чтототам.php?var1=многа_многа_букаф

Готов выслушать пояснение "из первых рук", т.к. в гугле мнений находится много и разных smile.gif


--------------------
Перейти в начало страницы
 
cjayho
сообщение 29.07.2013, 23:29
Сообщение #289


Мастер Игры
************

Репутация:   248  
Группа: Участник
Сообщений: 1363
Награды: 4
Регистрация: 08.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(OlegatoR @ 29.07.2013, 23:10) *
Цитата(cjayho @ 29.07.2013, 23:03) *
Да кстати избегайте делать страницы сайта в виде http://сайт/раздел/
только http://сайт/раздел.htm и именно .htm, не .php и тем более не урл со слешем в конце.

Цитата(cjayho @ 29.07.2013, 23:03) *
Работать в браузере будет, но так делать не стОит. На то есть много причин.

Цитата(cjayho @ 29.07.2013, 23:03) *
так и параметров вроде http://сайт/чтототам.php?var1=многа_многа_букаф

Готов выслушать пояснение "из первых рук", т.к. в гугле мнений находится много и разных smile.gif


Да зачем далеко ходить - возьмите какой-нибудь wget или прочие скачивалки сайтов и посмотрите как бедная программа пытается скачивать html-код в inode директории вместо inode файла. А теперь представьте - на таком же принципе работают и поисковые боты. Аналогично и с кирилликой в именах файлов, которая превращается в жуткую строку состоящую на треть из знаков процента. О страничках с гет-запросами все еще веселее - не всякие оси позволяют сохранять файлы, с символом знака вопроса в filename.


--------------------
Набор шейдеров для S.T.A.L.K.E.R: Shadow of chernobyl: ECB-Shaderpack - https://github.com/cjayho/ecb-shaderpack/

------

Продюсер электронной музыки в стиле Dark Ambient, автор саундтрека для Desowave S.T.A.L.K.E.R.: Lost Alpha.

Spotify | Apple Music | YouTube | BandCamp | AudioMack
Перейти в начало страницы
 
SaneX
сообщение 02.08.2013, 22:51
Сообщение #290


Игровой Бог первой степени
***********************

Репутация:   1167  
Группа: Участник
Сообщений: 9404
Награды: 5
Регистрация: 15.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Нид хелп!


Есть функция:

Код
public function bd_query($query)
        {
            static $query = false;
            if (!$query){
                $query = func_get_arg(0);
                return mysqli_fetch_array($query);
            } else {
                return mysqli_fetch_array($query);
            }    
    }


Вызываю её многократно вот так:

Код
public function send_messages_query()
        {
            $query = Model::sql_select_few_where_one('id', 'caption', 'dest', 'date','messages', 'autor="'.$_SESSION['login'].'"');
            return model::bd_query($query);
        }
        
        public function admin_sales_query()
        {
            $query = Model::sql_select_few('id', 'user', 'date', 'name', 'price', 'items');
            return model::bd_query($query);
        }
        
        public function admin_users_query()
        {
            $query = Model::sql_select_few('id', 'login', 'email', 'reg_date', 'users');
            return model::bd_query($query);
        }
        
        public function admin_items_query()
        {
            $query = Model::sql_select_few('id', 'name', 'price', 'filename', 'text', 'catalog');
            return model::bd_query($query);
        }


Но аргумент $query в эту функцию передаётся только от первого вызова. Дальше - выводятся пустые строки.
Т.е. к примеру:
Код
public function admin_sales_query()
        {
            $query = Model::sql_select_few('id', 'user', 'date', 'name', 'price', 'items');
            return model::bd_query($query);
        }

...выдаст результат.

А вот следующий вызов в:
Код
public function admin_users_query()
        {
            $query = Model::sql_select_few('id', 'login', 'email', 'reg_date', 'users');
            return model::bd_query($query);
        }

Не выдаст никаких ошибок, но результат будет абсолютно пустым.

Я так понял дело в
Код
if (!$query){
, но как пофиксить не понял =)

Сообщение отредактировал SaneX - 02.08.2013, 23:04


--------------------
Перейти в начало страницы
 
OlegatoR
сообщение 02.08.2013, 23:07
Сообщение #291


Gameru DA
************************

Репутация:   3704  
Группа: Администратор
Сообщений: 10206
Награды: 4
Регистрация: 03.02.2006




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(SaneX @ 02.08.2013, 22:51) *
bd_query($query)

Хочется взять и... наругать. Не привыкай называть функции (переменные, поля в бд) калькой с рус. слов, db_query раз уж на то пошло.
Цитата(SaneX @ 02.08.2013, 22:51) *
Код
if (!$query){, но как пофиксить не понял =)


Код
public function bd_query($query)
    {
           if (!$query) return FALSE;
           return mysqli_fetch_array($query);
    }


--------------------
Перейти в начало страницы
 
SaneX
сообщение 02.08.2013, 23:11
Сообщение #292


Игровой Бог первой степени
***********************

Репутация:   1167  
Группа: Участник
Сообщений: 9404
Награды: 5
Регистрация: 15.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(OlegatoR @ 03.08.2013, 00:07) *
Цитата(SaneX @ 02.08.2013, 22:51) *
bd_query($query)

Хочется взять и... наругать. Не привыкай называть функции калькой с рус. слов, db_query раз уж на то пошло.
Цитата(SaneX @ 02.08.2013, 22:51) *
Код
if (!$query){, но как пофиксить не понял =)


Код
public function bd_query($query)
    {
           if (!$query) return FALSE;
           return mysqli_fetch_array($query);
    }


Выдает бесконечный цикл 1-й искомой строки в БД, т.к. вызываю её потом вот так:
Код
while ($row = admin_items_query()){

echo Бла-бла-бла

}



Условие

Код
   static $query = false;
            if (!$query){
                $query = func_get_arg(0);
                return mysqli_fetch_array($query);
            } else {
                return mysqli_fetch_array($query);
            }



это фиксит.

Я конечно могу сделать так в каждой функции:
Код
public function admin_users_query()
        {
static $query = false;
            if (!$query){
                $query = Model::sql_select_few('id', 'login', 'email', 'reg_date', 'users');
                return mysqli_fetch_array($query);
            } else {
                return mysqli_fetch_array($query);
            }    
        }

Но это сильно увеличивает объем повторяемого кода в функциях.

Сообщение отредактировал SaneX - 02.08.2013, 23:17


--------------------
Перейти в начало страницы
 
SaneX
сообщение 05.08.2013, 19:22
Сообщение #293


Игровой Бог первой степени
***********************

Репутация:   1167  
Группа: Участник
Сообщений: 9404
Награды: 5
Регистрация: 15.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Я, кстати, так и не решил проблему.


--------------------
Перейти в начало страницы
 
Son1c
сообщение 06.08.2013, 22:36
Сообщение #294


Продвинутый геймер
********

Репутация:   74  
Группа: Забанен
Сообщений: 359
Награды: 2
Регистрация: 24.08.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


SaneX,
Попробуй так
CODE
public function bd_query($query)
{
global $query;
if (!$query){
$query = func_get_arg(0);
return mysqli_fetch_array($query);
} else {
return mysqli_fetch_array($query);
}
}


CODE
public function send_messages_query()
{
$query = Model::sql_select_few_where_one('id', 'caption', 'dest', 'date','messages', 'autor="'.$_SESSION['login'].'"');
$result = model::bd_query($query);
$query = false;
return $result;
}

public function admin_sales_query()
{
$query = Model::sql_select_few('id', 'user', 'date', 'name', 'price', 'items');
$result = model::bd_query($query);
$query = false;
return $result;
}

public function admin_users_query()
{
$query = Model::sql_select_few('id', 'login', 'email', 'reg_date', 'users');
$result = model::bd_query($query);
$query = false;
return $result;
}

public function admin_items_query()
{
$query = Model::sql_select_few('id', 'name', 'price', 'filename', 'text', 'catalog');
$result = model::bd_query($query);
$query = false;
return $result;
}

Перейти в начало страницы
 
SaneX
сообщение 06.08.2013, 22:47
Сообщение #295


Игровой Бог первой степени
***********************

Репутация:   1167  
Группа: Участник
Сообщений: 9404
Награды: 5
Регистрация: 15.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Нет, не, выполняется только 1-й вызов функции, последующие вызовы перескакивают на "else" условия.


--------------------
Перейти в начало страницы
 
nuan
сообщение 08.08.2013, 11:56
Сообщение #296


Игровое Воплощение
*********************

Репутация:   384  
Группа: Участник
Сообщений: 4718
Награды: 9
Регистрация: 21.05.2008




Вставить ник Цитировать выделенное в форуму быстрого ответа


Код
Ошибка    1    Тип "System.Web.Mvc.ModelClientValidationRule" существует как в "c:\Program Files\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll", так и в "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Web.WebPages\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.dll"    C:\Users\Nuan\Desktop\дополнительные материалы\Гайдар Магдануров - ASP.Net MVC 3 видеоуроки\Дополнительные материалы\ASP MVC 3 - Part5\StartSample\Models\AccountModels.cs    243    28    MvcTrainingApp


Опа... не ожидал ) и какой из них то?
Перейти в начало страницы
 
nuan
сообщение 09.08.2013, 17:10
Сообщение #297


Игровое Воплощение
*********************

Репутация:   384  
Группа: Участник
Сообщений: 4718
Награды: 9
Регистрация: 21.05.2008




Вставить ник Цитировать выделенное в форуму быстрого ответа


На всякий случай сообщаю что проблема решена переустановкой .net.
Теперь вопрос такой, написал модульный тест типа :
Код
[TestMethod]
        public void Correct_Total_Reduction_Amount()
        {
            // Организация
            FakeRepository repo = new FakeRepository();
            decimal reductionAmount = 10;
            decimal initialTotal = repo.GetTotalValue();
            MyPriceReducer target = new MyPriceReducer(repo);
            // Действие
            target.ReducePrices(reductionAmount);
            // Утверждение
            Assert.AreEqual(repo.GetTotalValue(),
            (initialTotal - (repo.GetProducts().Count() * reductionAmount)));
        }

Запускаю, ошибок не пишет, но остановить его вообще никак... и не перезапустить тест, не выполнить программу сволочь не дает... Только если закрыть и открыть заного... Может кто сталкивался?
Перейти в начало страницы
 
nuan
сообщение 11.08.2013, 15:21
Сообщение #298


Игровое Воплощение
*********************

Репутация:   384  
Группа: Участник
Сообщений: 4718
Награды: 9
Регистрация: 21.05.2008




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата
Собственно чтобы выучить Asp.net я стал читать книгу : Сандерсон С - ASP.NET MVC3 Framework с примерами на C# для профессионалов (третье издание) - 2012

В 5 главе, сначала мы эмулируем данные с помощью Moq:
Код C#

1
2
3
4
5
6
7



Mock<IProductsRepository> mock = new Mock<IProductsRepository>();
mock.Setup(m => m.Products).Returns(new List<Product> {
new Product { Name = "Football", Price = 25 },
new Product { Name = "Surf board", Price = 179 },
new Product { Name = "Running shoes", Price = 95 }
}.AsQueryable());
ninjectKernel.Bind<IProductsRepository>().ToConstant(mock.Object);

Далее в контроллере:
Код C#

1
2
3
4
5
6
7
8
9
10
11
12
13



public class ProductController : Controller
{
private IProductsRepository repository;

public ProductController(IProductsRepository productRepository)
{
repository = productRepository;
}
public ViewResult List()
{
return View(repository.Products);
}
}

Сам List :
Код HTML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16



@model IEnumerable<SportsStore.Domain.Entities.Product>

@{
ViewBag.Title = "List";
}

<h2>List</h2>
<div>

@foreach(var p in Model)
{
<p>@p.Name </p>
<p>@p.Description</p>
<p>@p.Price.ToString("c")</p>
}
</div>

При этом все работает и выдает список , как и должен быть.
Теперь по книге мы создаем БД и добавляем в Web.config строку подключения:
Код HTML

1
2
3
4
5



<connectionStrings>
<add name="EFDbContext"
connectionString="Data Source=NUAN-ПК\SQLEXPRESS;Initial Catalog=SportsStore;Integrated Security=True;Pooling=False"
providerName="System.Data.SqlClient" />
</connectionStrings>

Я создал проект который тупо к ней подключался чтобы менять\добавлять данные и т.п., оттуда и взял строку.
Далее: EFDbContext

Код C#

1
2
3
4
5
6
7



namespace SportsStore.Domain.Concrete
{
class EFDbContext
{
public DbSet<Product> Products { get; set; }
}
}

Сам Product:
Код C#

1
2
3
4
5
6
7
8
9
10
11



namespace SportsStore.Domain.Entities
{
public class Product
{
public int ProductID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Category { get; set; }
public decimal Price { get; set; }
}
}

Далее IProductsRepository и EFProductRepository
Код C#

1
2
3
4
5
6
7



namespace SportsStore.Domain.Abstract
{
public interface IProductsRepository
{
IQueryable<Product> Products { get; }
}
}

Код C#

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



namespace SportsStore.Domain.Concrete
{
public class EFProductRepository : IProductsRepository
{
private EFDbContext context = new EFDbContext();
public IQueryable<Product> Products { get { return context.Products; } }

}
Вылетает с ошибкой:
HTML
Ссылка на объект не указывает на экземпляр объекта.
Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.

Сведения об исключении: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.

Ошибка источника:


Строка 8: <div>
Строка 9:
Строка 10: @foreach(var p in Model)
Строка 11: {
Строка 12: <p>@p.Name </p>

}

в строке 10 , при отладке почему то реализации = null
Перепробовал все что только можно, проверил подключение к базе, да она работает...
Могу скинуть полностью весь проект.
Помогите бился весь вечер, а научиться хочется.
Перейти в начало страницы
 
SaneX
сообщение 02.12.2013, 10:42
Сообщение #299


Игровой Бог первой степени
***********************

Репутация:   1167  
Группа: Участник
Сообщений: 9404
Награды: 5
Регистрация: 15.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


Вопрос появился.
Есть код:
Код
$full_url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$explode = explode('://', $full_url);
if (preg_match('#//+#', $explode[1]) > 0)
{
     $new_url = preg_replace('#//+#', '/', $explode[1]);
     $new_url = preg_replace("#/$#", "", $new_url);
     $new_url = 'http://'.$new_url;
     exit("<meta http-equiv='refresh' content='0; url=".$new_url."'>");
}

Мы получаем полную ссылку на текущую страницу, удаляем из неё http:// и в оставшейся строке заменяем все символы '/' больше одного на один '/'.

Всё работает прекрасно.

Но почему, если заменить
Код
exit("<meta http-equiv='refresh' content='0; url=".$new_url."'>");

на
Цитата
header('Location:'.$new_url);

, то при выполнении условия страница уходит в циклическую переадресацию?

Сообщение отредактировал SaneX - 02.12.2013, 10:42


--------------------
Перейти в начало страницы
 
SaneX
сообщение 02.12.2013, 12:45
Сообщение #300


Игровой Бог первой степени
***********************

Репутация:   1167  
Группа: Участник
Сообщений: 9404
Награды: 5
Регистрация: 15.03.2007




Вставить ник Цитировать выделенное в форуму быстрого ответа


первый и последний ап blush.gif


--------------------
Перейти в начало страницы
 

19 страниц V  « < 13 14 15 16 17 > » 
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 12.05.2024, 19:34