2011-02-02 7 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=") 감사. $ _POST에 의해 캡처됩니다

답변

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> 

참고 버튼을 제출합니다. 그들이 폼 요소 내에서 또는 하나의 외부에있는 경우

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 이상이었습니다. 당신의 $ url 값은 결코 기본값으로 "ddd"를 가지지 않았을 것입니다. 왜냐하면 $ _GET [ 'name']의 값을 찾고 있었기 때문에 항상 공백이었을 것입니다. – Steve

+0

또한 " form "을 사용할 수 있습니다. Steve

1

신속하고 더러운 방법은 또한

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

것, 당신이 양식 방법 = "POST",하지 $ _GET

+1

$ _POST [ 'val']이 설정되지 않은 경우 정의되지 않은 키 고지가 생성되므로 권장하지 않습니다.방공호는 올바른 접근 방식을 가졌지 만 $ _GET을 $ _POST로 대체해야했습니다. –

+0

True :]라고 말하면 빠르고 더러운 것이 었습니다. –

1

깨끗한 방법

<?php 

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

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