2010-01-31 2 views
3

게시물 암호를 보호 할 수있는 확인란이 있습니다 -주의 사항 : 정의되지 않은 색인

내 PHP는 게시하려고합니다 -

 $password = htmlspecialchars(strip_tags($_POST['password'])); 

정의되지 않은 색인 오류가 나타납니다.

이제 암호를 설정했는지 확인하려고하면 같은 오류가 발생합니다.-

$sql = "INSERT INTO blog (timestamp,title,entry,password) VALUES ('$timestamp','$title','$entry','$password')"; 

$result = mysql_query($sql) or print("Can't insert into table blog.<br />" . $sql . "<br />" . mysql_error()); 

어떻게 수정합니까? 제목 텍스트 상자와 같은 모든 필드에 대해 모든 작업을 수행해야합니까?

답변

5

왜 태그를 제거하고 부울 값을 이스케이프합니까? 당신은 이런 식으로 그것을 할 수 :

$password = (isset($_POST['password']) && $_POST['password'] == 1) ? 1 : 0; 

또는 :

$password = isset($_POST['password']) ? (bool) $_POST['password'] : 0; 
1

당신은 아마 두 번째 경고 정의되지 않은 변수를 얻을. _POST [xyz]가 설정되었는지 여부에 관계없이 $ 비밀번호가 설정되었는지 확인할 수 있습니다.

$password = isset($_POST['password']) ? $_POST['password'] : '0'; 

당신은 정의되지 않은 인덱스 당신이 접근하기 때문에 존재하지 않는 배열 인덱스를받을

1

http://docs.php.net/ternary를 참조하십시오.

당신은 값을 설정하기 전에 설정되어 있는지 확인해야합니다 확인란을 선택하면

if (isset($_POST['password'])) { 
    $password = $_POST['password']; 
} 
+0

나는 조건 연산자에 반대'if' 문 경로를가는 오래된 학교를 생각합니다. :( –

0

체크 박스의 값은 반환됩니다. 따라서 암호 확인란을 선택하지 않으면 password 키가 $_POST 배열에 존재하지 않습니다.

당신은 할 수 :

$password = array_key_exists('password', $_POST) ? '1' : '0'; 
관련 문제