2014-11-16 4 views
0

저는 PHP에 익숙하지 않아, 제가 작업해온 웹 사이트에 PHP 폼 유효성 검사를 구현하고 싶습니다. 이전에는 자바 스크립트를 사용하여 양식 내용의 유효성을 검사했지만 PHP가 더 나은 방법이라고 들었습니다.PHP 폼 유효성 검사 및 오류보고

필자는 필드를 검증 할 수 있도록 일부 웹 사이트를 구현하려고 시도했지만 현재는 아무 것도하지 않아야한다고 생각합니다. 이상적으로는 어떤 사용자 확인이 양식을 싶습니다

<form method= "POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 

<p class="ex"><strong>Full Name:</strong> 
<br> 
<input type="text" name="name" value="<?php echo htmlspecialchars($name);?>"> 
<span class="error"><?php echo $nameErr;?></span> 
<br><br> 

<strong>Contact Telephone:</strong> 
<br> 
<input type="text" name="tele" placeholder="Telephone Number" id="tele""/> 
<br><br> 

<strong>Contact Email:</strong> 
<br> 
<input type="text" name="email" placeholder="[email protected]" id="email""/> 
<!-- Party requirments --> 

<br><br> 
<strong>Select Party Size:</strong> 
<br> 
<select name="party" id="party"> 
<option value="">Please Select</option> 
<option value="5">1 Person (£5)</option> 
<option value="10">2 People (£10)</option> 
<option value="15">3 People (£15)</option> 
<option value="20">4 People (£20)</option> 
<option value="25">5 People (£25)</option> 
<option value="30">6 People (£30)</option> 
<option value="35">7 People (£35)</option> 
<option value="40">8 People (£40)</option> 
<option value="45">9 People (£45)</option> 
<option value="50">10+ People (£50)</option> 
</select> 
<br><br> 
<strong>Dietary Requirements:</strong> 
<br> 
Vegetarian <input type="checkbox" name="diet[]" value="Vegetarian"> 
Vegan <input type="checkbox" name="diet[]" value="Vegan"> 
Peanut Allergy <input type="checkbox" name="diet[]" value="Peanut Allergy"> 
Gluten Allergy <input type="checkbox" name="diet[]" value="Gluten Allergy"> 
<br><br> 

<strong> VIP Area? </strong> 
<br> 
Yes (+£5) <input name="hand" id="left" value="5" type="radio"> 
No <input name="hand" id="right" value="0" checked="" type="radio"> 
<br><br> 

<strong> Reservation Date: </strong> 
<br> 
<input type="text" name="reservation" placeholder="DD/MM/YYYY" id="reservation"> 
<br><br> 

<strong> Reservation Time </strong> 
<br> 
<select name="time" id="time" onblur="validateTime(name)"> 
<option value="">Please Select</option> 
<option value="17:00">17:00</option> 
<option value="17:30">17:30</option> 
<option value="18:00">18:00</option> 
<option value="18:30">18:30</option> 
<option value="19:00">19:00</option> 
<option value="19:30">19:30</option> 
<option value="20:00">20:00</option> 
<option value="20:30">20:30</option> 
<option value="21:00">21:00</option> 
<option value="21:30">21:30</option> 
<option value="22:00">22:00</option> 
</select> 
<span id="timeError" class="timeError" style="display: none;">You must select a time for your reservation.</span> 
<br><br> 
<strong> Any Additional Information: </strong> 
<br> 
<textarea name="comments" placeholder="Birthday celebration arrangements, etc." rows="10" cols="50"></textarea> 
<br><br><br> 
<strong> Total booking cost based on party size & VIP selection: £<span id="price">0</span></strong> 
<br><br><br> 
<input type="submit" id="submit" name="submit" value="Submit"> 
<input type="reset" value="Reset form"> 

: 내가 작업하고있는 HTML 양식 여기

<?php 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (empty($_POST["name"])) { 
     $nameErr = "Missing"; 
    } 
    else { 
     $name = $_POST["name"]; 
    } 

    if (empty($_POST["tele"])) { 
     $teleErr = "Missing"; 
    } 
    else { 
     $tele = $_POST["tele"]; 
    } 

    if (empty($_POST["email"])) { 
     $emailErr = "Missing"; 
    } 
    else { 
     $email = $_POST["email"]; 
    } 

    if (empty($_POST["party"])) { 
     $partyErr = "You must select 1"; 
    } 
    else { 
     $party = $_POST["party"]; 
    } 

    if (!isset($_POST["hand"])) { 
     $handErr = "You must select 1 option"; 
    } 
    else { 
     $hand = $_POST["hand"]; 
    } 

    if (empty($_POST["reservation"])) { 
     $reservationErr = "Missing"; 
    } 
    else { 
     $reservation = $_POST["reservation"]; 
    } 

    if (empty($_POST["time"])) { 
     $timeErr = "You must select a time"; 
    } 
    else { 
     $time = $_POST["time"]; 
    } 
} 
?> 

됩니다 : 여기

내가 현재 작업하고있는 PHP 코드 잘못된 정보를 필드에 입력했거나 필드를 비워두면 오류 메시지가 입력되고 표시됩니다. 이 도움을 얻는 데 도움이되는 제안이있는 사람은 누구나이 작업을 위해 열심히 노력했지만 havent에는 많은 행운이있었습니다. (

답변

0

오류에 대해 연관 배열을 사용하는 것이 좋습니다. 변수를 가지며 코드를 효과적으로 작성하는 데 시간이 많이 걸립니다.

대신 $tele = $_POST["tele"]; 즉 : $f_err['tele'] = $_POST["tele"];을 사용하면 오류를 쉽게 찾아서 적절한 양식 필드 아래에 표시 할 수 있습니다. 솔직히 코드가 있습니다. 직접적으로 문제가 발생하지 않습니다.

제대로 작동하지 않는 부분을 자세히 설명해 주시겠습니까?

+0

답장을 보내 주셔서 감사합니다. 기본적으로 웹 페이지를 열어 제출을 클릭하면 빈 필드로 나타나는 오류 대신 빈 페이지로 연결됩니다. 또한 웹 페이지를 열면 이름 필드의 빈 상자 대신 ""라고 인쇄됩니다. ( – 05K3

+0

오류보고가 꺼져 있기 때문에 빈 페이지가있을 수 있습니다. . 아파치 로그 또는 error.log를 확인하여 문제가 무엇인지 확인하십시오. 발생한 오류가 있으면 우리에게 연락하십시오. – LukasS

0

나는 LukasS에 동의합니다. 추가 할 수있는 유일한 방법은 if ​​문 외부에서 변수를 초기화하는 것입니다. 이렇게하면 범위가 올바르게 설정됩니다.

+0

답장을 보내 주셔서 감사합니다. 더 나은 결과를 얻을 수 있도록 이러한 변경 사항이있는 pastebin에 나를 연결할 수 있습니까? 무슨 뜻인지 생각해? – 05K3