За последние 24 часа нас посетили 18849 программистов и 1615 роботов. Сейчас ищет 1791 программист ...

Создание таксономии типа /file.php?id=6

Тема в разделе "Сделайте за меня", создана пользователем Donotlie, 30 апр 2014.

  1. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Инструкции для дураков. Теория для дураков. Доки для дураков. Все правильно.
     
  2. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    Мы всё ещё остаёмся в рамках обсуждения темы?
    вот в такой код
    То есть Вы утверждаете что это делается не так:
    Код (PHP):
    1. $peremennaja = '6'; //задаём значение для переменной. я просто поставил 6 так как не знаю на что Вы так упорно намекаете
    2. $sql = "SELECT p.* FROM `posts` p, posts_positions pp where `ID` != '$peremennaja' AND `post_status` = 'publish' AND p.ID>pp.positions ORDER BY p.ID ASC LIMIT 1 "; 
    ?

    Мне не ясно зачем читать про теорию струн, изучать физику твёрдого тела, когда задача стоит, блин почистить яблоко.
    блин может я действительно не понимаю задачу. Но если SQL запрос вызывается из файла с названием сайт.ру/file.php?id=$ljubaja_peremennaja, какие такие законы гравитации мешают отловить эту переменную по средствам ниже представленного кода?
    Код (PHP):
    1. $fragment = $_SERVER['REQUEST_URI'];
    2. $fr_fr = substr($fragment, 12);
    3. $sql = "SELECT p.* FROM `posts` p, posts_positions pp where `ID` != $fr_fr AND `post_status` = 'publish' AND p.ID>pp.positions ORDER BY p.ID ASC LIMIT 1 "; 
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ты даже не пытался искать. Даже понятия не имеешь о чем речь. Решил, что это что-то заоблачное и что это априори не стоит того, чтобы прочитать. Хотя это элементарнейшие вещи. Это не изучение теории струн для очистки яблока. Каждый ребенок знает, что зубы дергают через рот, а не через задницу. Он для этого не учился в меде и не изучал всю мировую литературу по анатомии. Тебе говорят, дергай зубы через рот. Это проще. Удобнее, практичнее. Почитай, как это делать. Ты же говоришь - нет, я дергал через задницу. И буду дергать через задницу. Ведь я привык к этому. А через рот - это надо же знать, где он находится. А у меня нет желания посмотреть в зеркало и смекнуть, что он на голове.
    http://lurkmore.to/%D0%98%D0%BD%D0%B4%D1%83%D1%81%D1%81%D0% ... 0%BE%D0%B4
     
  4. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    Я тебе так скажу спор с собеседником которого ты считаешь идиотом, превращает в идиота и тебя. Если же ты находишся в дебатах с человеком разумным, просто не владеющим какой то информацией так приводи разумные понятные доводы. А то блеять начинаешь давить своей начитанностью. Ну давай приведи своё решение этой проблемы, унизь меня перед всеми.
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    1) Закинь в адресную строку хоть руками пару-тройку параметров.
    2) В скрипте, на который ведет ссылка, напиши var_dump($_GET);
    3) Сравни содержимое массива $_GET с параметрами в строке.

    PHP сам парсит все параметры и предоставляет их в виде массива. Если просто воспользоваться автоматически создающейся переменной, вместо того, чтобы самому пытаться парсить URL это не элементарно, то я - суслик.

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

    В этом и трабла. Не считай принятие чужой точки зрения унижением или ударом по самолюбию.

    Ты не перед кем не упадешь на дно, если спросишь "а как правильно?" а не будешь выкабениваться. Потому что когда кому-то говорят, что он делает не правильно, а этот кто-то спрашивает "а как тогда правильно?", это совершенно естественно. Это называется обменом информацией и опытом.
     
  6. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    Ты не отмазывайся . Если реально хочешь помочь приведи своё решение. А я уже пошёл с $_GET печатать буду смотреть что же там.
    Ну вот Array выводит. Какая ссылка на скрипт? В условиях ни о какой ссылке на скрипт не было.
     
  7. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Fell-x27, а как же "все должны страдать"?
    BaranPHP, может быть, тебе была бы понятней функция parse_url
    Код (PHP):
    1. var_dump(parse_url($_SERVER['REQUEST_URI']));
    , потом узнать о parse_str, а потом уже можно переходить и к таким "сложным" вещам, как $_GET?
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    блин. Какое "свое решение"? Есть готовое решение в пыхе. Тебе про него говорили. И я его тебе указал.

    Добавлено спустя 5 минут 26 секунд:
    Да, я еще раз убедился, что помогать тем, кто хочет страдать, нет смысла. Хоть мне и доказывали обратное.

    Добавлено спустя 5 минут 27 секунд:
    Не, ребят, это бесполезно. Расходимся. Он не хочет понимать даже то, что написано в посте. Не не может, а не хочет. Куда уж там про доки говорить. Выносите.

    Ссылка на скрипт - это то, как ты браузер просишь показать работу своего пехепэ файла.
    Допиши к ней руками ?pewpew=1&tratata=GET&ololo=works
     
  9. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    не ругайся, я пока не программист я всё ещё дизайнер.
    давай по порядку вот я разбираю такой URL http://phppdf.ru/?view=ppr по аналогии вытащить надо ppr
    завожу
    Код (PHP):
    1. <?php $nn = var_dump(parse_url($_SERVER['REQUEST_URI'])); echo $nn;?>
    на странице получаю array(2) { ["path"]=> string(1) "/" ["query"]=> string(8) "view=ppr" }пока ppr мы не достали значит нужно ещё код.
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Теперь на той же странице вбей var_dump($_GET);

    И ты увидишь, что в массиве появилась ячейка за индексом с именем параметра и со значением, идентичным значению параметра из адресной строки.

    То есть никакого кода не нужно. Когда обращаешься к пхп, он сам из строки запроса вытягивает параметры и сладывает их в $_GET.

    И да, для работы var_dump не надо ничего присваивать переменной и ее эхать. Эта функция сама эхает результат на страницу.
     
  11. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    Не надо так, это сложно!
     
  12. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Ты прав! Далее нужно применить parse_str:
    Код (PHP):
    1. $nn = parse_url($_SERVER['REQUEST_URI']);
    2. parse_str($nn['query'], $out);
    3. var_dump($out); 
     
  13. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Робяты, ну хватит стебаться, чоу.
     
  14. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Чтобы варнингов не было при отсутствии параметров, лучше так:
    Код (PHP):
    1. $nn = parse_url($_SERVER['REQUEST_URI']);
    2. if(isset($nn['query'])){
    3.     parse_str($nn['query'], $out);
    4.     var_dump($out);
    5. }
     
  15. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    продолжаем эксперимент
    Код (PHP):
    1. <?php $nn = var_dump(parse_url($_SERVER['REQUEST_URI'])); echo $nn; $nm = var_dump($_GET); echo $nm;?>
    на странице получаю array(1) { ["view"]=> string(3) "ppr" }код YSandro выдаёт NULLвсё ещё нет pprДобавлено спустя 1 минуту 41 секунду:
    Parse error: syntax error, unexpected $end in Z:\home\phppdf.ru\www\ppr.php on line 43
     
  16. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А это что????
    Ты ведь знаешь, как работает var_dump? И что именно он отображает? Он показал структуру массива. Там написано, что в массие $_GET содержится ячейка view, в которой лежит значение prr.
    Попробуй сделать
    Код (Text):
    1.  echo $_GET['view'];
     
  17. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Ты скопировал отсюда не полностью, закрывающие скобки забыл
    Код (Text):
    1. };
     
  18. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Сандро, ну хватит уже.
     
  19. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    Прости. Работает и выводит pprarray(1) { ["view"]=> string(3) "ppr" }

    это строка? массив?

    нам же надо конкретный ppr вытащить

    что бы результат выводило ppr как вот в этой функции (но она плохая там индийский кодинг :(( )
    Код (PHP):
    1. <?php $nn = $_SERVER['REQUEST_URI'];
    2. $nm = substr($nn, 7);
    3. echo $nm;?>
    Добавлено спустя 1 минуту 35 секунд:
    Ну что команда сурикатов покажет сегодня достойный пример?
     
  20. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ну давай еще разок. С первого раза не получилось раз уж.
    Код (Text):
    1. echo $_GET['view'];
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Гори в аду :D
    ты сегодня приложил кучу усилий, чтобы стать чуточку тупее. Гратс, чо.
     
  22. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Да, боюсь, что даже если с гетом разберемся, пациент не пригоден к программированию как таковому. Слишком резво посылает логику в угоду "я так вижу". И слишком мало желания разобраться в происходящем. Думаю, если ему накидать скрипт, который выпиливает папку windows, или, если у него вдруг линупс, запилить ему rm -rf /, он и их не задумываясь выполнит. Закрывая глаза на реализацию, оценивая и обдумывая только конечный результат. Причем строго с точки зрения того, как его видит. Не в думываясь в то, что видит и почему.
     
  23. BaranPHP

    BaranPHP Новичок

    С нами с:
    24 янв 2014
    Сообщения:
    356
    Симпатии:
    0
    Ну вот наконец я начинаю понимать глубину своего невежества :))
    Значит, в итоге человеку надо написать:
    Код (PHP):
    1. $fr_fr = $_GET['id'];
    2. $sql = "SELECT p.* FROM `posts` p, posts_positions pp where `ID` != $fr_fr AND `post_status` = 'publish' AND p.ID>pp.positions ORDER BY p.ID ASC LIMIT 1 "; 
    вместо, предложенного мною:
    Код (PHP):
    1. $fragment = $_SERVER['REQUEST_URI'];
    2. $fr_fr = substr($fragment, 12);
    3. $sql = "SELECT p.* FROM `posts` p, posts_positions pp where `ID` != $fr_fr AND `post_status` = 'publish' AND p.ID>pp.positions ORDER BY p.ID ASC LIMIT 1 "; 
    или и тут я заблуждаюсь?
     
  24. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Да, если грубо, то да, суть ты уловил.

    А если не грубо, то:
    1) Присваивать переменной значение из $_GET нет смысла только ради подстановки. Ставь сразу $_GET['id'], НО:
    2) Если просто поставить $_GET['id'], ты в запрос воткнешь данные, которые пользователь может вбить руками в строку. И БД их обработает. Так можно тебе залить что угодно и базу грохнуть до кучи. Это назывется SQL-инъекция. Ее легко избежать. Вот теперь попробуй сам погуглить на тему "SQL-инъекция PHP". И разобраться. Там все тоже очень просто. Надо обработать $_GET['id'] функцией, которая экранирует опасные символы. О чем идет речь, поймешь в ходе гугления.
     
  25. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Фух, алиллуйя! Теперь к кодировкам и инъекциям. Заодно заголовки ответа и редиректы можно ковырнуть