Для передачи данных в URL - PullRequest
2 голосов
/ 08 августа 2009

Как вы можете передать переменную, такую ​​как ask_question в URL, чтобы она изменила внешний вид вашего index.php по заданным правилам?

У меня есть следующая ссылка в моем index.php

 <a href="index.php?ask_question">Ask question</a>

, что, однако, не работает, так как я не знаю, как вы можете ссылаться на переменную ask_question в URL. Если бы я знал это, я мог бы прочитать его, а затем настроить свой index.php в соответствии с именем в URL.

Я мог бы также сделать следующую ссылку, но из-за этого у меня было бы много дублирующих данных, таких как PHP-код для login -form.

 <a href="ask_question.php">Ask question</a>

My ask_question.php -form

 <form method="post" action="handlers/handler_question.php">
     <p>Title:
         <input name="title" type="text" cols="92" />
     </p>
     <p>Question:
         <div id="wmd-container" class="resizable-textarea">
                 <textarea id="input" class="textarea" tabindex="101" rows="15" cols="92" name="body" /></textarea>                                                                                       
         </div>
     </p>

     <p>Tags:
         <input name="tags" type="text" cols="92" />
     </p> 

     <input type="submit" value="OK" />
 </form>

Ответы [ 6 ]

3 голосов
/ 08 августа 2009
if(isset($_GET['ask_question')) {
...do something...

}

Еще лучше, поскольку суперглобальный $ _GET является массивом:

if(array_key_exists('ask_question',$_GET)) {
    ...do something...
}

Также в руководстве сказано об использовании array_key_exists против isset:

isset () не возвращает TRUE для массива ключи, соответствующие значению NULL, в то время как rray_key_exists() делает.

Однако вы не можете передать нулевое значение, оно будет просто отображаться в PHP как пустая строка, поэтому и isset, и array_key_exists делают в этом контексте одно и то же.

Чтение предопределенных переменных:

http://www.php.net/variables.predefined

И посмотрите функции isset и array_key_exists

1 голос
/ 08 августа 2009

Почему бы не сделать что-то вроде

<a href="index.php?query= ask_question"/>

в вашем HTML-коде?

Затем в вашем скрипте index.php вы можете проверить, является ли query ask_question, с помощью следующих команд:

if($_GET['query']=='ask_question')
   // change the layout as you wish
else
  // proceed with not changing the layout
1 голос
/ 08 августа 2009

Используйте isset($_GET['NAME_IN_URL']). Это вернет true или false, которые вы можете оценить с помощью простого оператора if else.

Пример:

if (isset($_GET['ask_question']) {
    //Echo your form...
    }
else {
    //Echo the normal index.php
    }

Также обратите внимание, что при связывании со строкой запроса вы можете просто сделать <a href="?ask_question">, таким образом, он все равно будет работать, если файл будет переименован.

1 голос
/ 08 августа 2009

Вы можете получить доступ с помощью суперглобального $ _GET.

В этом случае (так как вы не определяете значение для ask_question), вы можете сделать:

if (array_key_exists('ask_question', $_GET) === true)
{
    // do stuff
}
1 голос
/ 08 августа 2009

Параметры запроса сохраняются в объекте $ _GET. Вы можете проверить существование параметра, используя isset:

if(isset($_GET['ask_question'])){
}

Если вам нужна свобода передачи переменных как GET или POST, вы можете использовать суперглобальный $ _REQUEST:

if(isset($_REQUEST['ask_question'])){
}
1 голос
/ 08 августа 2009

Все переменные GET (те, что в URL) заканчиваются в массиве с именем $ _GET. С помощью isset() вы можете проверить, была ли передана определенная переменная в URL.

if (isset($_GET['ask_question'])) {
    // go...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...