gormarket

gormarket
Рейтинг
47
Регистрация
29.12.2010

Есть предположение что у Вас трижды запускается скрипт (т.е. источник проблемы не в приведенном коде).

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

Если в базе все три записи будут с разными значениями в этой переменной, то просто скрипт вызывается трижды.

SwordsMan,

попробуйте еще такой вариант

$e = explode('/', '/'.$folder.'.');

while (array_pop($e)){

print(implode('/', $e)."/<br>");

}

по моим тестам он чуть быстрее остальных

(видимо из-за отсутствия проверки размера массива и использования оригинала, а не псевдонима функции implode)

можно еще избавиться от присвоения в строке

foreach ($e as $a) {

таким образом

while (sizeof($e)){

print(join('/', $e)."/<br>");

array_pop($e);

}

vantala:
gormarket, а на чем у вас работало?

у меня локально версия более ранняя

Apache/1.3.33 (Win32) PHP/4.4.4

но на хостинге тоже работает, там

Apache/2.0.63-lk.d (Unix) ...

не уверен что поможет, но все таки попробуйте добавить флаг NE

RewriteRule ([^.]*)[.]* index.php?file=$1 [L,QSA,NE,T=application/x-httpd-php]


'noescape|NE' (не экранировать URI при выводе)
Этот флаг не даёт mod_rewrite применять обычные правила экранирования URI к результату преобразования. Обычно, специальные символы (такие как '%', '$', ';', и так далее) будут экранированы их шестнадцатиричными подстановками ('%25', '%24', и '%3B', соответственно); этот флаг не дает это делать. Это позволяет символам процента появлятся на выходе

сам по себе приведенный Вами реврайт не способен вызвать ответ с кодом 403

403 Forbidden

При отсутствии полных данных остается только гадать

либо у Вас в .htaccess есть правило, которое после приведенного реврайта (а может и до него) отдает ответ с кодом 403 (посмотрите строки RewriteRule с флагом F)

либо 403 код возвращает index.php в данной ситуации (при адресе содержащем типа ...%F1%F2%E0...)

вторую версию легко проверить, создав файл index1.php со следующим кодом

<?php

print '<pre>';

print_r($_GET);

print '<pre>';

?>

и изменив строку реврайта

RewriteRule ([^.]*)[.]* index1.php?file=$1 [L,QSA,T=application/x-httpd-php]

если будет работать со всеми тремя приведенными адресами (у себя проверил - работает), то 403 код отдает index.php

...

$s2 = "";

$sh=0;

while ($send = mysql_fetch_array ($load)) {

++$sh;

$s1.= "<div class='slider-image' rel='section".$sh."'> </div> картинка из новости";

...

если скрипт запускается из командной строки или кроном то значение $_SERVER['DOCUMENT_ROOT'] не устанавливается

allmuz:
Строка 6 это начало приведенного кода, а строка 23 соответственно конец кода

не,

конец кода это 20 строка, а дальше (на 23 строке) может еще раз объявляется функция (код дальше 20 строки не показан)

смотрите код на хостинге

vlasoff, можно проверку из первой строки засунуть в третью строку вместо ".*" и обойтись двумя строками


RewriteCond %{QUERY_STRING} param=1$
RewriteRule articles/test-article/$ http://www.mydomain.ru/new/articles/test-article/? [R=301,NC,L]

и еще, если домен при редиректе остается прежним, то можно так


RewriteCond %{QUERY_STRING} param=1$
RewriteRule articles/test-article/$ http://%{HTTP_HOST}/new/articles/test-article/? [R=301,NC,L]
x0x0:
Тогда как его залочить?

элементарно !!! (написать правильно, с одним s и двумя l)

Disallow: /*/*/*/*

но кажется это запрет 4 уровня (хотя если корень сайта считать первым уровнем, то может быть)

Всего: 437