2011-02-02 15 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

ここにいくつかの問題があります。

逃げることができない場合は、3進数を使用しないでください。彼らは読みにくく、混乱するかもしれません。もちろんこれは私自身の意見です。また、私はisset()と配列に問題があったので、issetではなくstrlen()でチェックします。

<?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; 

?> 

フォームはアンカー(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> 

注意ボタンを提出します。彼らは、フォーム要素内または1つの外にある場合

ANCHORは、フォームを発射していない

リンクが提出どんなにを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> 
+0

woo ~~ sevralメソッド、それは素晴らしい答えです。 –

+0

問題なく、うれしく助かりました。 :) –

2
$variable = isset($_POST['name']) ? $_POST['name'] : 'ddd'; 
... 
$url = "http://localhost/web12/directory/list=" . $variable; 
+0

GET/POSTだけではありません。 $ _GET ['name']の値を探していたので、あなたの$ urlの値にはデフォルトで "ddd"という文字列があったことはありませんでした。 – Steve

+0

また、 $ _POST ['val']が設定されていない場合、未定義のキー通知が生成されるので、これはお勧めしません。 Steve

1

迅速かつ汚い方法はまた、あなたが$ _POSTによって捕獲される方法= "POST"、ではなく、$ _GET

+1

$ _POST ['val']が設定されていない場合、OPは、$ _GETを$ _POST –

+0

Trueに置き換えるために必要な正しいアプローチをしていました:]と言ったように、それは迅速かつ汚れていた –

1

クリーンを持って形成

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

だろう方法

<?php 

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

$url = 'http://localhost/web12/directory/list=' . urlencode($name); 
関連する問題