2013-05-27 4 views
0

테스트 및 try 메서드로 PHP를 배우려고합니다. isset()을 사용하여 고민하고 있습니다.Isset() 함수와 관련된 문제

<form action="validate.php" method="POST"> 
    <label title="User Input"> Custom Header Name</label> 
    <input type="text" name="user_input"> 
    <button type="submit" id="pageName">Submit</button> 
</form> 

및 PHP 파일이

<?php 
    if(isset($_POST['user_input'])) 
    { 
    echo "Input Is Set"; 
    } else{ 
      echo "Not Yet Set"; 
      } 
?> 

나는 두 경우 모두 (빈 또는 채워진 입력) 내가 첫 번째 메시지 결과로 "입력이 설정"을 얻고있다 : 여기 내가 가지고있는 코드입니다! 왜 이런 일이 발생하는지 알려 주시기 바랍니다.

+1

아직 그 사람의 입력란이 아직 채워지지 않았기 때문에 user_input의 빈 게시물을 보냈습니다. isset은 콘텐츠가 아닌 존재 여부 만 확인합니다. – lemondrop

+0

Hola lemondrop,하지만 나는 $ name과 같은 litral php 변수로 isset() 함수를 테스트한다. 그리고 그것은 잘 작동하고 있습니다. 어떻게 작동하지 않는가? –

+0

당신이 필요로하는 답변을 확인하십시오. – lemondrop

답변

2

작동합니다, 당신은이 작업을 수행 할 수 있습니다

<?php 
    if(isset($_POST['user_input'])) 
    { 
    if (!empty($_POST['user_input'])) { 
     echo "Input Is Set"; 
    } else { 
     echo "Input is empty!"; 
    } 
    } else{ 
    echo "Not Yet Set"; 
    } 
?> 

상세 정보 : http://php.net/manual/en/function.empty.php

+1

정확하게 내가 타이핑하고 있었던 것. –

+0

안녕하세요 파비오, 답장을 보내 주셔서 감사합니다. 솔직히 저는 입력 내용의 유효성을 검사하고 싶지 않았습니다. 사실 내 질문은 isset() 함수는 변수가 설정되어 있는지 확인하는 경우입니다! 왜 지금 여기서 일하지 않는거야? –

+0

@MonaCoder 왜냐하면 그것은 채워지지 않은 채로 폼이 제출 될 때 여전히 빈 값을 전송하기 때문입니다. 왜냐하면 그 isset()은 사실이 될 것이므로 실제로 비어 있는지 확인해야합니다. – Fabio

0

당신은 어떤 가치를 보유하고 있는지 확인하기 위해 if (!empty($_POST['user_input'])

확인을 사용하여 다른

<?php 
    if($_POST['user_input'] != '') 
    { 
    echo "Input Is Set"; 
    } else{ 
      echo "Not Yet Set"; 
      } 
?> 

또는 뭔가를 시도 할 수 있습니다. 즉,이 형태가 작성되지 않은 경우에도 제출되면 user_inputisset을 가지고 있기 때문에, 오류가 단순히 !empty 체크

if(isset(($_POST['user_input'])) && (!empty($_POST['user_input']))) 
+1

그리고 그것이 설정되지 않았다면주의 할 것입니다 :) – Robert

1

대신는 isset의 추가 방지하는 것입니다

0

이 설정되어있는 경우는 확인하지만 당신은 확인해야합니다 비어있는 경우에도.

짧은 버전 :

<?php 
    echo isset($_POST['user_input']) && !empty($_POST['user_input'] ? "Input is set" : "not set"; 
?> 
0

난 당신이 함께 작동하도록도록 권장한다 2 개 이유로() 나 strlen :

if (strlen($_POST['user_input']) > 0 && strlen($_POST['user_input']) < 80) 
{ ... } 
  1. 당신이 변수 만 설정되어 있지 확신 할 수 있지만, 또한 실제로 데이터를 포함합니다.
  2. 예를 들어 삽입 된 쿼리를 피하기 위해 POST 및 GET의 문자열을 캡핑해야합니다.

보안을위한 자체 래퍼를 만들고 가장 작은 도우미 기능을 사용하는 것이 가장 좋습니다.

관련 문제