Вчимося працювати з GET та POST запитами. Php надсилання даних на сервер Параметри з get запиту php
У мене є структура URL із рядком запиту та параметром під назвою position ,
http://computerhelpwanted.com/jobs/?occupation=administrator&position=network+administrator
У мене також є список вибору форми з ім'ям вибору форми position ,
Коли користувач робить вибір, він надсилає значення параметра до атрибуту дії з параметром select name = «position» як параметр для використання в рядку запиту.
У мене є питання, як мені отримати доступ до значень вибору форми окремо від значень рядка запиту?
Я використовую метод _GET для виклику значення параметра рядка запиту.
$position = isset($_GET["position"]) ? ($_GET["position"]) : "";
Очевидно, це отримує значення із структури URL, а не елемента форми. Або, можливо, це так, не впевнений. Але, перевіряючи його, я, здається, дійшов висновку, що він отримує його за URL, а не формою.
Як я можу отримати доступ до значення вибору форми у порівнянні з моїм PHP?
Оновити
У мене проблема з канонічною URL-адресою, вказаною в заголовку.
так має бути
єдина різниця полягає в - та + у рядку запиту.
Не всі рядки мого запиту мають +. У деяких є. Але я показую контент з обох URL, незалежно від того, чи є у нього або +. У будь-якому випадку обидва URL отримують однаковий вміст сторінки.
Але оскільки канонічний створюється динамічно з URI, а не значення елемента форми, на обох сторінках контенту є 2 різних канонічних символу.
Використання _Get ('value') отримує значення з рядка запиту замість елемента форми. Я знаю це, тому що значення елемента форми має пробіл між network administrator який отримує urlencoded, коли форма представляє як network+administrator , Так що якщо я можу порівняти зі значенням елемента форми, я можу встановити правильний канонічний.
Ви могли помітити, що на більшість сайтів можна бачити такі адреси:
http://сайт/index.php?blog=2
Тут, навіть не знаючи php, можна здогадатися, що ми звертаємось до файлу index.phpАле те, що йде після питання, мало хто знає. Все досить просто: ?blog=2це оголошення глобальної змінної «$_GET["blog"]» із значенням «2». Таким чином я в скрипт передаю змінну, яка відповідає за виведення інформації з бази даних. Давайте напишемо невеликий скрипт у якому Ви все наочно побачите:
if(isset($_GET["blog"])) (
echo $_GET["blog"];
}
?>
Ми використовуємо оператор умов if() як умову стоїть ось такий рядок:
Isset($_GET["blog"])
isset() дозволяє дізнатися чи існує змінна яка вказана в дужках, тобто умова, яку я описав у коді звучить так: Якщо існує змінна $_GET["blog"] то вивести вміст цієї змінної на екран. Ось що вийшло:
Думаю зрозуміло Створюється глобальна змінна $_GETз ідентифікатором, який ми оголосили в адресному рядку ( в даному випадкуз ідентифікатором "blog")
Тепер я хочу пояснити один момент. Припустимо, нам необхідно оголосити дві змінні, як це зробити? Перша змінна оголошується після питання «?» Друга змінна оголошується після такого знака «&» ( Якщо чесно не знаю, що це за знак), ось приклад оголошення трьох змінних:
http://сайт/index.php?a=1&b=2&c=3
Ось код висновку:
if(isset($_GET["a"]) AND isset($_GET["b"]) AND isset($_GET["c"])) (
echo $_GET["a"]."
";
echo $_GET["b"]."
";
echo $_GET["c"]."
";
}
?>
Умова звучить так:
Якщо існує глобальна змінна $_GET["a"] і глобальна змінна $_GET["b"] і глобальна змінна $_GET["с"] вивести їх на екран, Ось результат:
Форми
Перш ніж ми перейдемо до postзапитам, чи необхідно розібрати, що таке форми? Чому потрібно? Тому що глобальна змінна $_POST[""] створюється через форми. Що таке форма? Це поля для введення будь-якої інформації користувачем. Поля бувають в один рядок, великі поля, також бувають радіо кнопочки, чек бокси. Розберемо все по порядку.
Форма це тег:
Форма має атрибути, перерахую найпоширеніші:
Давайте створимо форму:
Як файл обробника я поставив файл test.phpоскільки саме в ньому пишу для Вас приклади. Метод відправки я поставив post тому що саме цим методам користуються в 99.9% випадках. Так само я надав нашій формі ім'я — form
Тепер поринемо у світ елементів форми. Насамперед Ви повинні зрозуміти, що майже всі елементи є тегом відмінність лише в атрибуті typeу цих тегів. Давайте я перелічу використовувані елементи форм:
Я впевнений, що ви неодноразово зустрічали такі поля, так що тут як кажуть: «no comments»
Тепер давайте складемо невелику тренувальну анкету, з якою працюватимемо далі. Наше завдання скласти невелику анкетку яка повідає нам ім'я заповнюючого, стать, з якої він країни, улюблений колір і поле тексту де користувач може додати щось про себе. Ось що в мене вийшло:
Файл get.php
array("login" => "Administrator", "password" => "h734yuiw8"), 1 => array("login" => "John", "password" => "78dfud776s")); //отримуємо прапор $flag=$_GET["flag"]; //якщо прапор 1 то передаємо масив гетом //магія у функції serialize if($flag==1)( header("Location: index.php?data=".serialize($users).""); exit; ) else( header("Location: index.php"); exit; ) ?>
Php запит post
Php запит post передається так само через форму, тільки атрибут у тезі form буде method="post" . І отримувати дані в вказаному файліми будемо з масиву пост $_POST["search"] і відразу наведемо приклад.
Завдання:надіслати дані з index.php методом POST на сервер у файл get.php і отримати їх назад, якщо поле відправки даних порожнє вивести повідомлення про незаповнене поле. Рішення почнемо з index.php
Файл get.php
Передача масиву AJAX
Виконаємо те саме завдання за допомогою ajax. Взагалі то ajax це технологія, що відноситься до javascript, але в рамках нотатки про передачу даних на сервер торкнемося і цієї технології. Звичайно, ajax це тема окремої статті. У процесі запиту ще виводитимемо гіфку індикатора завантаження. Також маємо два файли index.php та get.php. Файл index.php Не забуваймо підключати jquery. Зверну увагу, для приховування гіфки при першому завантаженні сторінки призначаємо блоку box стиль display: none