javascript - PHP 在尝试验证表单时不会显示 HTML

标签 javascript php html css

<分区>


这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助 future 的读者。

关闭 9 年前

这是我第一次真正尝试使用 StackExchange,我希望我的问题尽可能相关。基本上,我是在跟随 O'Reilly 的书学习 PHP、MySQL、Javascript 等,并且我有点卡在第 16 章的身份验证协议(protocol)上。基本上,作者希望我们只将 CSS 和 JS 放在 echo <<<_END 语句中,我试图将它们放在它们的外部文件中。

我的问题是,当我加载 PHP 文件时,完全没有任何反应。连个头衔都没有。我担心这可能与我正在运行 WebMatrix 和 IIS Express 服务器进行开发有关,但是当我去测试它们时,我已经能够运行其他更小的 echo <<<_END 语句.

下面是代码,如果有人提供,我将不胜感激。

<?php 

$firstname = $lastname = $username = $password = $age = $email = "";

if (isset($_POST['firstname']))
{
    $firstname = fix_string($_POST['firstname']);
}

if (isset($_POST['lastname']))
{
    $lastname = fix_string($_POST['lastname']);
}

if (isset($_POST['username']))
{
    $username = fix_string($_POST['username']);
}

if (isset($_POST['password']))
{
    $password = fix_string($_POST['password']);
}

if (isset($_POST['age']))
{
    $age = fix_string($_POST['age']);
}

if (isset($_POST['email']))
{
    $email = fix_string($_POST['email']);
}

$fail  = valide_firstname($firstname);
$fail .= valide_lastname($lastname);
$fail .= valide_username($username);
$fail .= valide_password($password);
$fail .= valide_age($age);
$fail .= valide_email($email); 

echo <<<_END
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
<title>An Example Form</title>    
<link rel="stylesheet" type="text/css" href="StyleSheet.css>
</head>
_END;

if ($fail = "")
{
    echo "<body>Form data succesffully validated: $firstname, $lastname, $username, $password, $age, $email.</body></html>";

    //database entry field

    exit;
}

echo <<<_END
<body>
<table class="signup" border="0" cellpadding="2"
cellspacing="5" bgcolor="#eeeeee">
<th colspan="2" align="center">Signup Form</th>

<tr><td colspan="2">Sorry, the following errors were found<br />
in your form: <p><font color=red size=1><i>$fail</i></font></p>
</td></tr>

<form method="post" action = "adduser.php"
onSubmit = "return validate(this)">
<tr><td>First name</td><td><input type ="text" maxlength = "32"
name = "firstname" value = "$firstname" /></td></tr>
<tr><td>Last name</td><td><input type ="text" maxlength = "32"
name = "lastname" value = "$lastname" /></td></tr>
<tr><td>Username</td><td><input type ="text" maxlength = "16"
name = "username" value = "$username" /></td></tr>
<tr><td>Password</td><td><input type ="text" maxlength = "12"
name = "password" value = "$password" /></td></tr>
<tr><td>Age</td><td><input type ="text" maxlength = "3"
name = "age" value = "$age" /></td></tr>
<tr><td>Email</td><td><input type ="text" maxlength = "64"
name = "email" value = "$email" /></td></tr>
<tr><td colspan = "2" align = "center"><input type = "submit" value = "Signup" /></td></tr></form></table>
<script type="text/javascript" src="validate.js"></script>
</body>
</html>
_END;

function validate_fistname($field){
    if ($field == "") return "No First Name was entered <br/>";
}

function validate_lastname($field){
    if ($field == "") return "No Last Name was entered <br/>";
}

function validate_username($field){
    if ($field == "") return "No Username was enterted <br/>";
    else if (strlen($field) < 5) return "Usernames must be at least 5 characters long <br/>";
    else if (preg_match("/[\W]/", $field)) return "Only letters, numbers, - and _ is usernames<br/>";
    return "";
}

function validate_password($field){
    if ($field =="") return "No Password was entered <br/>";
    else if (strlen($field) < 6) return "Passwords must be at least 6 characters in length <br/>";
    else if (!preg_match("/[a-z]/", $field) ||
             !preg_match("/[A-Z]/", $field) ||
             !preg_match("/[\d]/", $field))
             return "Passwords require one upper case, one lower case, and one number<br/>";

    return "";
}

function validate_age($field) {
    if ($field == "") return "No Age was entered<br />";
    else if ($field < 18 || $field > 110)
    return "Age must be between 18 and 110<br />";
    return "";
}

function validate_email($field) {
    if ($field == "") return "No Email was entered<br />";
    else if (!((strpos($field, ".") > 0) &&
        (strpos($field, "@") > 0)) ||
        preg_match("/[^a-zA-Z0-9.@_-]/", $field))
    return "The Email address is invalid<br />";
    return "";
}

function fix_string($string) {
    if (get_magic_quotes_gpc()) $string = stripcslashes ($string);
    return htmlentities ($string);
}
?>

最佳答案

您有语法错误。
按照描述打开错误报告 here .

错误 1
你拼错了validate。这——

$fail  = valide_firstname($firstname);
$fail .= valide_lastname($lastname);
$fail .= valide_username($username);
$fail .= valide_password($password);
$fail .= valide_age($age);
$fail .= valide_email($email); 

必须是-

$fail  = validate_firstname($firstname);
$fail .= validate_lastname($lastname);
$fail .= validate_username($username);
$fail .= validate_password($password);
$fail .= validate_age($age);
$fail .= validate_email($email); 


错误 2
您的 validate_firstname() 函数定义缺少“r”-

function validate_fistname($field){
                    ^ Needs an 'r' here.

错误 3
条件 if ($fail = "") 应该是 if ($fail == "")

您目前正在使用 = 进行赋值,而不是进行比较 ==

关于javascript - PHP 在尝试验证表单时不会显示 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22596901/

上一篇:javascript - 我怎样才能使用 jquery slide toggle with class

下一篇:python - 如何在元素应用程序中扩展 Django 元素根 HTML 文件?

相关文章:

php - 如何在 PHP 中传递值并运行 C 程序(Web 应用程序)

html - 自动显示文本行

javascript - 强制页面预加载器出现在任何内容之前

javascript - TypeScript 中的条件接口(interface)

php - 我怎样才能 foreach 这个数组结果并在 codeigniter View 中回显

php - Laravel Fortify 验证错误不起作用

javascript - Jquery fadeToggle 不起作用

javascript - 在 Node JS 中使用 Promises 创建字符串

php - 任何特殊的 php 函数可以使字符串 'url' 对地址栏友好?

html - 将圆圈和线放在一起作为时间轴