php a href post isset - PullRequest
       11

php a href post isset

1 голос
/ 02 февраля 2011
<?php echo isset($_GET["name"])?$_GET['name']:'ddd'; ?>
<?php   
... 
$url = ("http://localhost/web12/directory/list=".$_GET['name']."");
//echo $url;
...
?>
<form action="t.php" method="post" target="_self">
    <a href="t.php?name=aaa">aaa</a>
    <a href="t.php?name=bbb">bbb</a>
    <a href="t.php?name=ccc">ccc</a>
</form>

Как мне сделать так, чтобы, если пост был пуст (первый раз откройте t.php), пусть $url = ("http://localhost/web12/directory/list=ddd");?

Теперь мои значения по умолчанию $_GET['name'] ничего не отражают. $url =("http://localhost/web12/directory/list=") Спасибо.

Ответы [ 4 ]

3 голосов
/ 03 февраля 2011

Здесь есть несколько проблем.

Старайтесь не использовать троицы, если вам это сойдет с рук. Их просто трудно читать, и они могут сбить с толку. Это конечно мое собственное мнение. Кроме того, я проверяю с помощью strlen () вместо isset, так как у меня были проблемы с isset () и массивами.

<?php

if (strlen($_GET["name"]) > 0) {
    $urlname = $_GET['name'];
    echo "GET: $urlname";
} elseif (strlen($_POST["name"]) > 0) {
    $urlname = $_POST['name'];
    echo "POST: $urlname";
} else {
    $urlname = 'ddd';
    echo "NONE: $urlname";
}

?>

Вам не нужны скобки вокруг объявления строки.

<?php

$url = "http://localhost/web12/directory/list=".$urlname;
echo $url;

?>

Формы получают или публикуют данные только путем предоставления информации, когда теги anchor (a) отправляют информацию через get (строка запроса после имени файла). Таким образом, вы смешиваете их без получения желаемого эффекта.

GET

Отправит информацию через строку запроса (например, по ссылке):

<form action="t.php" method="get" target="_self">
 <input type="radio" name="name" value="aaa"/> AAA<br/>
 <input type="radio" name="name" value="bbb"/> BBB<br/>
 <input type="radio" name="name" value="ccc"/> CCC
 <input type="submit"/>
</form>

Обратите внимание на кнопку отправки.

POST

Предоставит в качестве почтовой информации, не затрагивая действия URL:

<form action="t.php" method="post" target="_self">
 <input type="radio" name="name" value="aaa"/> AAA<br/>
 <input type="radio" name="name" value="bbb"/> BBB<br/>
 <input type="radio" name="name" value="ccc"/> CCC
 <input type="submit"/>
</form>

Обратите внимание на кнопку отправки.

Якорь GET

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

<a href="t.php?name=aaa">aaa</a>
<a href="t.php?name=bbb">bbb</a>
<a href="t.php?name=ccc">ccc</a>
2 голосов
/ 02 февраля 2011
$variable = isset($_POST['name']) ? $_POST['name'] : 'ddd'; 
... 
$url = "http://localhost/web12/directory/list=" . $variable;
1 голос
/ 03 февраля 2011

Самый чистый путь

<?php

$name = filter_input(INPUT_POST, 'name');
if (!$name) $name = 'ddd';

$url = 'http://localhost/web12/directory/list=' . urlencode($name);
1 голос
/ 02 февраля 2011

Быстрый и грязный метод будет иметь вид

<?
$val = $_POST['val'];
if (!$_POST) {
 // No posted data, so do something else
 $val = 'Default val';
}
?>

Кроме того, у вас есть метод method = "POST", который будет захватываться $ _POST, а не $ _GEt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...