2017-03-14 3 views
0

방금 ​​로그인 한 사용자가 있으며 사용자의 나이를 세션했습니다. 왜냐하면 내가하고있는 유효성 확인에 필요하기 때문입니다. 사용자가 로그인하면 그가 수행 할 수있는 설문 조사를 표시하는 표가있는 페이지로 리디렉션됩니다. 관리자가 설문 조사를 만들 때,이 시대에 특정 사람을 의미 연령 범위의 옵션 나는 사용자가 전용으로 얻을 것이다 검증/설정을 할 노력하고있어 지금 조사PHP 인증 코드가 유효하지 않습니다.

<select name="agestart" class="form-control-static">  

<label> TO </label> 

<select name="ageend" class="form-control-static"> 

를 취할 수있다 연령대에 맞는 설문 조사를 볼 수 있습니다.

<?php 



    $mysqli = mysqli_connect("localhost", "root", "", "imetrics"); 

    $query = mysqli_query($mysqli,"SELECT * FROM surveyform"); 

    if($query){ 
     while($row = mysqli_fetch_array($query)){ 

      $id = $row['survey_id']; 
      $title = $row['surveytitle']; 
      $agestart = $row['age_start']; 
      $ageend = $row['age_end']; 

      if(!$_SESSION['age'] >= $agestart || $_SESSION['age'] <= $ageend){ 

       echo "<tr align='center'>"; 
       echo "<td><font color='black'>" . $id . "</font></td>"; 
       echo "<td><font color='black'>" . $title . "</font></td>"; 
       echo "<td><a href='preview.php?survey_id=$id'><input class='btn btn-danger' type='button' value='Take Survey'/></td>"; 

       echo "</tr>"; 
      } 
     } 
    } 

    ?> 

그러나 사용자 만 연령은 agestart 내가 생각 ageend보다 높은 경우 (표시되지 않음) 작업 이후 내 상태에 문제가있는 것 같다. 나는 정말로 혼란 스럽다.

if(!$_SESSION['age'] >= $agestart || $_SESSION['age'] <= $ageend){ 
+5

세션을 시작하면 –

+1

또한'!'를 제거하고'if '조건에서'&&'를'||'로 변경합니다. – Condorcho

+0

@ Fred-ii- 이것은 전체 문서가 아닙니다. OP는 상태가 이상하게 행동한다고 ​​말합니다. 따라서 이것은 세션 문제가 아닙니다. –

답변

1

당신은이 일을, 중()으로 session_start를 추가 할 수 있습니다; 조건을 수정하거나 SQL 쿼리를 변경하십시오.

session_start(); 
$sessionAge = $_SESSION['age']; 

$query = mysqli_query($mysqli,"SELECT * FROM surveyform WHERE $sessionAge BETWEEN age_start AND age_end"); 

// OR with a condition 

if(($agestart <= $sessionAge) && ($sessionAge <= $ageend)) { 
    //.... 
} 
+0

대단히 유익합니다! @Yolo – Jola

1

여기에 연령 확인 할 수있는 적절한 방법 :

$age = intval($_SESSION['age']); 
if ($agestart <= $age && $age <= $ageend) { 
+0

대단히 선생님 께 감사드립니다 .Chris G! 나는 내가 평판이 15 이상이되면이 대답에 투표 할 것입니다. – Jola

+0

감사합니다.하지만 SQL 쿼리에서 나이 확인을 포함하는 방법에 대한 Yolo의 대답을 확인하십시오. –

0

난 당신이 아직 세션을 시작하지 않았다시피 :

session_start(); //Should be at the beginning of the file 

$_SESSION['age']에 값이 있어야 있습니다 :

부울 조건이 잘못 기록
$age = (isset($_SESSION['age'])) ? $_SESSION['age'] : 0; //For PHP < 7.x 
$age = $_SESSION['age'] ?? 0; //For PHP 7 
0

; 나는 이것이 위의 답변에 해당 논리적으로 알고 있지만, 이럴이 쉽게 읽을 수 :

if($_SESSION['age'] >= $agestart && $_SESSION['age'] <= $ageend) 

어쩌면 나는 오래된 학교,하지만 가장 빠르게 읽고 이해하는 $agestart <= $age && $age <= $ageend이 어려워 질 수 있습니다.

관련 문제