За последние 24 часа нас посетили 18070 программистов и 1697 роботов. Сейчас ищут 1498 программистов ...

if и isset и POST

Тема в разделе "PHP для новичков", создана пользователем Skyers, 6 май 2009.

  1. Skyers

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

    С нами с:
    1 май 2009
    Сообщения:
    54
    Симпатии:
    0
    Подскажите где я тут не прав ?
    в браузере передаю методом ПОСТ index.php?name=5&link=2
    if (isset($_POST['name'],$_POST['link']))
    {
    echo $_POST['name'];
    }
    и нечего... типа условие не верно... но ведь я и нейм и линк передаю...
    пробовал
    if (isset($_POST['name']) and isset($_POST['link']))
    {
    echo $_POST['name'];
    }
    тот же эффект.

    но если делаю так:
    if (isset($_POST['name'])
    {
    $name=$_POST['name'];
    }
    if (isset($_POST['link']))
    {
    $link=$_POST['link'];
    }
    echo $name.$link;

    То все как бы работает... все выводит и т.д.

    Подскажите что я делаю не так в верхнем примере, и если не сложно как лучше всего это реализовывать...
     
  2. sylex

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

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    index.php?name=5&link=2 - это GET-запрос
     
  3. Skyers

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

    С нами с:
    1 май 2009
    Сообщения:
    54
    Симпатии:
    0
    я сократил, там дальше субмит и т.д.
    суть не в этом, суть в самом if isset
    не работает условие... уже день парюсь ...
     
  4. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    ну так
    PHP:
    1. <?
    2. if(isset($_POST['name']) && isset($_POST['link']))
    3. {
    4. echo $_POST['name'];
    5. }
     
  5. Skyers

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

    С нами с:
    1 май 2009
    Сообщения:
    54
    Симпатии:
    0
    я понимаю что это должно работать, но блин, не хочет выводить echo $_POST['name'];
    хоть ты застрелись...

    admyx
    это точно работает ? потому что я такое пробовал... если работает то я даже не знаю в чем проблема.[/php]
     
  6. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Я предполагаю, что ты в GET передаешь name и link.
    А вот попробуй

    PHP:
    1. <?
    2. if(isset($_GET['name']) && isset($_GET['link']))
    3. {
    4. echo $_GET['name'];
    5. }
     
  7. vital

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

    С нами с:
    18 дек 2006
    Сообщения:
    162
    Симпатии:
    0
    Адрес:
    Минск
    или
    HTML:
    1.  
    2. <form action=index.php method=POST>
     
  8. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Для таких случаев можно проверить массив $_REQUEST['name'] и этим самым проверив, а передается ли вообще что-то туда.

    PHP:
    1. <?php
    2.  
    3.     echo '<pre>';
    4.     print_r($_REQUEST);
    5.  
    6. ?>
     
  9. Skyers

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

    С нами с:
    1 май 2009
    Сообщения:
    54
    Симпатии:
    0
    не поверишь, но это помогло, спасибо =)
    хотя я всетаки не понимаю.. передаю то я методом пост из формы ...
    как написал vital
    <form action=index.php method=POST>
    и передает вот это:
    /link.php?name=%DF%ED%E4%E5%EA%F1&link=ya.ru&submit=%D1%EE%F5%F0%E0%ED%E8%F2%FC

    но это все так же работает и с кодом
    PHP:
    1.  
    2. if (isset($_POST['name'])
    3. {
    4. $name=$_POST['name'];
    5. }
    6. if (isset($_POST['link']))
    7. {
    8. $link=$_POST['link'];
    9. }
    10. echo $name.$link;
    11.  
    как такое может быть ? (работает и так и так)


    а $_REQUEST['name'] это получается универсальный массив, подходит как для GET так и для POST ?

    вобще может кто-то доступными словами сказать чем отличаются эти два метода, желательно с уклоном почему ГЕТ не может быть ПОСТ.
    [/php]

    вот
    код
    PHP:
    1.  
    2. echo '<pre>';
    3.      print_r($_REQUEST);
    выдает к примеру это
    Array
    (
    [name] => 444
    [link] => 55555
    [submit] => Сохранить
    )

    а обработчик
    PHP:
    1.  
    2. if (isset($_GET['name'],$_GET['link']))
    3. {
    4. echo "ВСЕ ОК";
    5. $name=$_GET['name'];
    6. $link=$_GET['link'];
    7. $rnd=mt_rand (1000,500000);
    8. $result=mysql_query("INSERT INTO links (name,link,rnd) VALUES ('$name','$link','$rnd')");
    9. }
    говорит что нече не передавалось.... вроде бы элементарные вещи, а разобраться не могу...
     
  10. vital

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

    С нами с:
    18 дек 2006
    Сообщения:
    162
    Симпатии:
    0
    Адрес:
    Минск
    GET не предназначен для передачи большого кол-ва информации
    и метод GET может применяться не только в формах
    например
    HTML:
    1. <a href="index.php?id=1323">text</a>
    тоже является GET запросом

    да. но лучше его использовать только для
    одним словом не стоит скрипты им насыщать. черевато путаницей
    PHP:
    1. <?
    2.  
    3. if(isset($_REQUEST['aaa'])) {
    4. echo $_REQUEST['aaa'];
    5. }
    6. else {
    7. echo "<form action='aaa.php?aaa=qwerty' method=POST><input type=text name=aaa><input type=submit></form>";
    8. }
    9.  
    10. ?>
     
  11. Skyers

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

    С нами с:
    1 май 2009
    Сообщения:
    54
    Симпатии:
    0
    все, разобрался, всем спасибо!!!

    только еще объясните толком различие между POST и GET
     
  12. vital

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

    С нами с:
    18 дек 2006
    Сообщения:
    162
    Симпатии:
    0
    Адрес:
    Минск
    GET пишется в url а пост пользователю не показывается
     
  13. Pomaska

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

    С нами с:
    8 июн 2010
    Сообщения:
    58
    Симпатии:
    0
    вот пример:
    POST страница с формами
    PHP:
    1. <form action='index.php' method='POST'><input type='text' name='login'><br><input type='submit' value='bla-bla-bla'></form>
    и когда ты нажмешь кнопочку, то у тебя адрес будет
    index.php

    а вот GET:
    PHP:
    1. <form action='index.php' method='POST'><input type='text' name='login'><br><input type='submit' value='bla-bla-bla'></form>
    и когда ты тут нажмешь кнопочку, то у тебя будет
    index.php?login=***

    *** - это то что ты ввел в форме...
     
  14. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Pomaska
    Таки можно и так

    HTML:
    1. <form method="post" action="http://server/module/page?act=something&do=write&when=now">
    2. </form>
    p.s. работает только при post