2016-07-19 2 views
0

안녕하십니까. 나는 웹 페이지는 다음, 자동 전역 배열 세션에서 사용자 로그인 이름을 기록 할PHP에서 규칙이 잘못된 결과를 반환하는 경우

PHP 7을 기반으로 미래의 웹 사이트에 대한에 작은 테스트를 실행하고

,

은 if 사용자가 로그인 이름을 입력하면 포럼에 링크가 표시됩니다.

사용자가 로그인 이름을 입력하지 않고 제출 버튼을 누르면 스크립트에 홈 페이지로 연결되는 링크가 표시됩니다.

작업 페이지는 양식을 표시하는 페이지와 동일합니다.

<?php 
    if(isset($_POST['loginName'])) 
    {  
     $_SESSION['loginName'] = $_POST['loginName']; 
     echo 'Login name is : '.$_SESSION['loginName']; 
     echo '<a href="accessForum.php">Get to the forum !</a>'; 
    } 
    else 
    { 
     echo 'No name provided. Try again or move back to <a href="index.php">homepage</a>'; 
    } 
?> 

문제 : 내가 로그인 이름을 입력하지 않고 제출 버튼을 누르면 다른 문이 적용되지 않습니다

코드의 PHP 부분입니다. 대신, if 문이 적용되고 '로그인 이름 is'뒤에 빈 문자열이 표시됩니다.

이 동작의 이유를 알 수 없습니다. 누구든지 도와 줄 수 있습니까? 고마워, 크리스토퍼.

+0

직각 오류로 인해 유감스럽게 생각합니다. 그리고 텍스트와 링크 사이에 공백이 없어야합니다. 테스트 용입니다. 고맙습니다 ! –

+1

if (isset ($ _ POST [ 'loginName']) && $ _POST [ 'loginName']! = "") –

+1

또한 누락 된 session_start()가 있습니다. –

답변

3

양식이있을 때 양식 필드에 데이터가없는 경우에도 (빈 문자열) 서버에 제출됩니다. isset은 양식 필드가 제출되었는지 여부 만 알려줍니다. 이름에 콘텐츠가 포함되어 있는지 확인해야합니다. strlen($_POST['loginName']) > 0.

+0

이것이 맞습니다 ('if (empty ($ var))'또는 간단히'if ($ var)') 사용할 수도 있습니다. 그러나 양식 내용을 게시하지 않고 페이지를 호출 할 수 있기 때문에 내용이 비어 있는지 확인하는 것과 같이'isset()'*를 확인해야합니다. 예를 들어 누군가가 URL에 직접 액세스하려고 시도한 경우 귀하의 게시물 페이지. – Simba

+1

@Simba'isset()'_and_'empty()'를 확인할 필요가 없습니다. 'empty()'자체는'isset()'를 검사한다. – MrWhite

관련 문제