2011-02-02 141 views
1
<?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");?現在我的默認php a href post isset

$_GET['name']呼應什麼。 $url =("http://localhost/web12/directory/list=")謝謝。

回答

3

這裏有幾個問題。

儘量不要使用ternaries如果你能擺脫它。他們只是很難閱讀,可能會令人困惑。這當然是我自己的看法。此外,我檢查與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; 

?> 

形式只有通過提交信息,其中錨(一)標籤通過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

將提交作爲發佈信息的,不影響行動網址:

<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
$variable = isset($_POST['name']) ? $_POST['name'] : 'ddd'; 
... 
$url = "http://localhost/web12/directory/list=" . $variable; 
+0

它不僅僅是GET/POST。你的$ url值永遠不會有「ddd」作爲默認值,它會一直是空白的,因爲它正在尋找$ _GET ['name']的值 – Steve 2011-02-02 20:59:08

+0

另外,你不會從那個「形式「,因爲它們只是鏈接,需要像 Steve 2011-02-02 21:06:44

1

的快速和骯髒的方法將是

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

此外,您還形成有方法= 「POST」,這將是$ _ POST被捕獲,而不是$ _ GET

+1

不推薦,因爲如果未設置$ _POST ['val'],這將生成未定義的關鍵通知。該OP有正確的做法,只需要用$ _POST – 2011-02-02 20:54:58

1

最乾淨way

<?php 

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

$url = 'http://localhost/web12/directory/list=' . urlencode($name);