2016-03-13 17 views
2

У меня есть моя форма index.php, и если введено действительное имя студента и номер студента, мне бы хотелось «Имя и номер студента действительны». для эха.Функция форматирования PHP не работает должным образом

Я подтвердил имена учеников и номера учеников. Однако даже при вводе действительного имени студента и номера ученика сообщение эхо-сигнала равно «Информация, которую вы ввели, недействительна. Пожалуйста, введите свою информацию еще раз».

Я вызываю функцию validateStudent, но я должен называть ее не в том месте или неправильно. Эта функция вызывается к концу PHP-скрипта и непосредственно перед запуском HTML. Спасибо.

<?php 
 
ini_set('display_errors', 1); 
 
error_reporting(E_ALL); 
 

 
// Define and set variables 
 
$student = ""; 
 
$studentname = ""; 
 
$studentnumber = ""; 
 
$studentfile = "student.txt"; 
 
$course = ""; 
 
$coursename = ""; 
 
$coursenumber = ""; 
 
$coursemax = 0; 
 
$coursefile = "course.txt"; 
 
$in = fopen ('course.txt', 'r') or die ("course.txt cannot be opened for reading."); 
 

 
// Sanitization and Validation coding will go here 
 
if (isset($_POST['submit'])) { 
 
    $studentname = $_POST['studentname']; 
 
    $studentnumber = $_POST['studentnumber']; 
 
} 
 

 
if (isset($_POST['studentname'])) { 
 
    $studentname = strip_tags ($_POST['studentname']); 
 
    $studentname = htmlentities ($_POST['studentname']); 
 
} 
 

 
if (isset($_POST['studentnumber'])) { 
 
    $studentnumber = strip_tags ($_POST['studentnumber']); 
 
    $studentnumber = htmlentities ($_POST['studentnumber']); 
 
} 
 

 
if (isset($_POST['course'])) { 
 
    $course = strip_tags ($_POST['course']); 
 
    $course = htmlentities ($_POST['course']); 
 
} 
 

 
$studentname = trim($_POST['studentname']); 
 

 
$studentnumber = trim($_POST['studentnumber']); 
 

 

 
// Validate student name/number against text file 
 
function validateStudent($studentName, $studentNumber) 
 
{ 
 
    $found = false; 
 
    $fh = fopen('student.txt', 'r'); 
 
    while(($line = fgetcsv($fh, null, ':')) != false) { 
 
     if(count($line) > 1) { 
 
      if($line[0] == $studentName and $line[1] == $studentNumber) { 
 
       $found = true; 
 
       break; 
 
      } 
 
     } 
 
    } 
 
    return $found; 
 
} 
 

 
// Validate course name/number against text file 
 
function validateCourse($courseName, $courseNumber, $courseMax) 
 
{ 
 
    $found = false; 
 
    $fh = fopen('course.txt', 'r'); 
 
    while(($line = fgetcsv($fh, null, ':')) != false) { 
 
     if(count($line) > 1) { 
 
      if($line[0] == $courseName and $line[1] == $courseNumber and $line[2] == $courseMax) { 
 
       $found = true; 
 
       break; 
 
      } 
 
     } 
 
    } 
 
    return $found; 
 
} 
 

 

 
//$DB = fopen ($coursefile, 'r') or die ("$coursefile cannot be opened for reading."); 
 
//while ($record = fgets ($DB)) { 
 
    //$field = explode (":", htmlentities (trim ($record))); 
 
    //echo "<option value=\"$field[1]\">$field[0] $field[1] $field[2]</option>\n"; 
 
//} 
 
//fclose ($DB); 
 
    
 

 
if (isset ($_POST[$studentname], $_POST[$studentnumber])) { 
 
      validateStudent($_POST['$studentname'], $_POST['$studentnumber']); 
 
      echo 'Student name and number are valid.\n'; 
 
     } 
 
     else { 
 
      echo '<p style="color: red; text-align: center; font-size: 15px; font-weight: bold;">**The information you have entered is not valid. Please enter your information again.**</p>'; 
 
     } 
 

 
    
 
?> 
 
<html> 
 
<head> 
 
    <title>Registration Form</title> 
 
    <style> 
 
     body{background-color: #ffffe6; width:610px;} 
 
     h1 {color: #29a3a3;} 
 
     .inputbox {padding: 7px; border: #FF9966 1px solid; border-radius: 4px;} 
 
     .btn {padding: 10px; background-color: #29a3a3; border: solid 1px #FF9966; border-radius: 4px; color: #FFFFFF; font-weight: bolder; cursor: pointer;} 
 
    </style> 
 
</head> 
 
<body> 
 
<h1>Course Registration</h1> 
 
<form method="post" action="index.php"> 
 
    <fieldset><legend><strong>Student Information</strong></legend> 
 
     <dl> 
 
      <dt>Student Name:</dt> 
 
      <dd><input class="inputbox" name="studentname" type="text" id="studentname" value='<?php echo htmlentities($studentname) ?>' required autofocus placeholder="Please enter your first and last name" tabindex="10" size="50"></dd> 
 
      <br> 
 
      <br> 
 
      <dt>Student Number:</dt> 
 
      <dd><input class="inputbox" name="studentnumber" type="text" id="studentnumber" value='<?php echo htmlentities($studentnumber) ?>' required placeholder="Please enter using the following format: PX-03-046" tabindex="20" size="50"></dd> 
 
     </dl> 
 
     <br> 
 
    </fieldset> 
 
    <br> 
 
    <fieldset><legend><strong>Course Selection</strong></legend> 
 
     <br> 
 
     Select a Course:<select name="course" tabindex="30">\n"; 
 
      <option value="-1" >Available Courses...</option> 
 
       <?php 
 
       while(($fields = fgetcsv($in, null, ':')) != false) { 
 
        if (count($fields) > 1) { 
 
         echo " 
 
          <option value=\"$fields[1]\">$fields[0] $fields[1]</option>"; 
 
        } 
 
       } 
 
       ?> 
 
     </select> 
 
     <br> 
 
     <br> 
 
     <br> 
 
     <br> 
 
     <br> 
 
     <br> 
 
    </fieldset> 
 
    <div> 
 
     <p> 
 
      <input name="reset" type="reset" tabindex="40" value="Clear Form" class="btn"> 
 
      <input name="submit" type="submit" tabindex="50" value="Submit Form" class="btn"> 
 
     </p> 
 
    </div> 
 
</form> 
 
</body> 
 
</html>

+1

Почему вы перезаписываете $ studentnumber & $ studentname с данными $ _POST? Ни одна из ваших предыдущих функций санитарии не влияет. – Gavin

+0

Привет, Гэвин, я должен был указать, что я очень, очень новичок в PHP, и очень много на этапе обучения. Итак, сделав это, я упустил код санитарии вверху? – Christine

ответ

0

Ваш код имеет логическую ошибку:

if (isset ($_POST[$studentname], $_POST[$studentnumber])) { 
      validateStudent($_POST['$studentname'], $_POST['$studentnumber']); 
      echo 'Student name and number are valid.\n'; 
     } 
     else { 
      echo '<p style="color: red; text-align: center; font-size: 15px; font-weight: bold;">**The information you have entered is not valid. Please enter your information again.**</p>'; 
     } 

ваш код должен быть:

if (isset ($_POST['studentname'], $_POST['studentnumber'])) { 
    if (validateStudent($_POST['studentname'], $_POST['studentnumber'])){ 
     echo 'Student name and number are valid.\n'; 
    } 
    else { 
     echo '<p style="color: red; text-align: center; font-size: 15px; font-weight: bold;">**The information you have entered is not valid. Please enter your information again.**</p>'; 
    } 
} 

также вам нужна форма для отправки ваше переменное studentname и studentnumer как:

<form method="post"> 
    <input type="text" name="studentname"/> 
    <input type="text" name="studentnumber"/> 
    <input type="submit" name="submit"/> 
</form> 

Вашего выход, потому что ваш переменные $_POST['studentname'] и $_POST['studentnumber'] не установлены.

+0

Привет Панда и спасибо. Это очень крутая кривая обучения для меня. Я изменил свой код в соответствии с вашим и имел следующую ошибку: Ошибка синтаксиса: ошибка синтаксиса, неожиданный '{' в C: \ Users \ HP Pavilion \ XAMPP \ htdocs \ index.php в строке 94, которая является этой строкой [code] if (validateStudent ($ _ POST ['$ studentname'], $ _POST ['$ studentnumber']) {[/ code] – Christine

+0

Привет, Кристина, извините, я забыл («там». Попробуйте это: if (validateStudent ($ _ POST [ '$ studentname'], $ _POST ['$ studentnumber'])) { // .... – Panda

+0

Привет, Panda, не жалко - я ценю помощь. Он не возвращает сообщение об ошибке, но ни одно из выражений эха – Christine

Смежные вопросы