PHP表单调用函数无法正常工作

时间:2016-03-13 22:27:36

标签: php forms function

我有我的index.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 个答案:

答案 0 :(得分:0)

您的代码存在逻辑错误:

<link rel="stylesheet" type="text/css" href="<?php echo $css; ?>"> 

你的代码应该是:

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>';
        }

你还需要一个表格来发布变量studentname和studentnumer,如:

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>';
     }
}

您的输出是因为您的变量<form method="post"> <input type="text" name="studentname"/> <input type="text" name="studentnumber"/> <input type="submit" name="submit"/> </form> $_POST['studentname']未设置。