1. PHP / Говнокод #19720

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    $f = fopen("./.htaccess", "r");
    			while (!feof($f)) {
    			    $tmp = fgets($f);
    			    $tmp = str_replace(REDIRECT_USER."/", $_POST["redir_user"]."/", $tmp);
    			    $tmp = str_replace(REDIRECT_SHOP."/", $_POST["redir_shop"]."/", $tmp);
    			    $tmp = str_replace(REDIRECT_ADMIN."/", $_POST["redir_admin"]."/", $tmp);
    			    $tmp = str_replace(REDIRECT_NEWS."/", $_POST["redir_news"]."/", $tmp);
    			    $tmp = str_replace(REDIRECT_CART."/", $_POST["redir_cart"]."/", $tmp);
    			    $tmp = str_replace(REDIRECT_PAYMENT."/", $_POST["redir_payment"]."/", $tmp);
    			    $tmp = str_replace(REDIRECT_INFO."/", $_POST["redir_info"]."/", $tmp);
    			    $line[] = $tmp;
    			}
    			fclose($f);

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

    Запостил: drop_database, 29 Марта 2016

    Комментарии (5) RSS

    • Нуачо, нормальная шаблонная замена. Ну может не надо было ."/" дописывать везде, но может оказаться дополнительной защитой от коллизий.
      Ответить
      • Да не очень-то нормальная... Если любая из строк является подстрокой последующей (например, USER = 'vasya' и SHOP = 'supershopvasya' или 'vasya/shop'), то получится упс. Конечно, это маловероятно с URL, но не исключено.

        И ведь str_replace(), ЕМНИП, позволяет делать замену массивов строк, специально с учетом таких случаев! Но это ж надо доки читать, думать...
        Ответить
        • Чтобы такого не случилось, нужно делать нормальные реплейс-токены, %username%.
          Ответить
    • Хорошо хоть из админки.
      Ответить
    • Хорошо, хоть fopen(.., "r")
      Ответить

    Добавить комментарий