-7
<html>
<head>
<title>
Registration
</title>
</head>
<?php
if(isset($_POST['submit buttton'])){
    processForm();
}else{
    displayForm();
}


/*check out this function. Here in array doesnot work*/

function validateField($fieldname,$missingfield){
    if(in_array($fieldname,$missingfield)){
        echo 'class = "error"';
    }
}
function setValue($fieldname){
    if(isset($_POST[$fieldname])){
        echo $_POST[$fieldname];
    }
}

function setChecked($fieldname,$fieldvalue){
    if((isset($_POST[$fieldname]) and ($_POST[fieldname] == $fieldvalue)){
        echo 'checked = "checked"';
    }
}
function setSelected( $fieldName, $fieldValue ) {
    if ( isset( $_POST[$fieldName] ) and $_POST[$fieldName] == $fieldValue ) {
        echo ' selected="selected"';
    }
}
function processForm(){
    $requiredfields = ("firstname","lastname","password1","password2","gender");
    $missingfields = array();
    foreach($missingfields as $missingfield){
        if((!isset($_POST[$requiredfield]) or $_POST[$requiredfield]){
            $missingfields[] = $requiredfield ;
        }
    }
    if ( $missingFields ) {
        displayForm( $missingfields );
    } else {
    displayThanks();
    }
}

function displayForm($missingfields){
    <?php
        <h1>Membership Form</h1>
        <?php if ( $missingFields ) { ?>
        <p class="error">There were some problems with the form you submitted.
        Please complete the fields highlighted below and  click Send Details to
        resend the form.</p>
        <?php } else { ?>
        <p>Thanks for choosing to join The Widget Club. To register, please
        fill in your details below and click Send Details. Fields marked with an
        asterisk (*) are required.</p>
    ?>

<?php } ?>

    <form action="registration.php" method="post">
    <div style="width: 30em;">
    <label for="firstName"<?php validateField( "firstName",
                        $missingFields ) ?>>First name *</label>
    <input type="text"  name="firstName" id="firstName"
                        value="<?php setValue( "firstName" ) ?>" />
    <label for="lastName"<?php validateField( "lastName",
$missingFields ) ?>>Last name *</label>
    <input type="text" name="lastName" id="lastName" value=
    "<?php setValue( "lastName" ) ?>" />
    <label for="password1"<?php if ( $missingFields ) echo
    ' class="error"’ ?>>Choose a password *</label>
    <input type="password" name="password1" id="password1" value="" />
    <label for="password2"<?php if ( $missingFields ) echo
    ' class="error"’ ?>>Retype password *</label>
    <input type="password" name="password2" id="password2" value="" />
    <label<?php validateField( "gender", $missingFields ) ?>>Your
    gender: *</label>
    <label for="genderMale">Male</label>
    <input type="radio" name="gender" id="genderMale" value=
    "M"<?php setChecked( "gender", "M" )?>/>
    <label for="genderFemale">Female</label>
    <input type="radio" name="gender" id="genderFemale" value=
    "F"<?php setChecked( "gender", "F" )?> />
    <label for="favoriteWidget">What’s your favorite widget? *</label>
    <select name="favoriteWidget" id="favoriteWidget" size="1">
    <option value="superWidget"<?php setSelected( "favoriteWidget",
    "superWidget" ) ?>>The SuperWidget</option>
    ?>

</html>

在我第一次运行文件时,in_array 函数似乎不起作用。我的意思是像 isset() 这样的函数以粗体显示,但似乎未检测到 in_array 函数。浏览器将错误显示为:

( ! ) 解析错误:语法错误,第 15 行 C:\wamp\www\reg.php 中出现意外的“{”。

4

3 回答 3

2
$requiredfields = ("firstname","lastname","password1","password2","gender"); 

此行无效。您应该array(.

通常,使用具有括号匹配的代码编辑器。)}]这将帮助您更({[轻松地找到丢失的内容。有些甚至以类似的方式包含 HTML 标记匹配。

http://notepad-plus-plus.org/就是一个很好的例子。

于 2012-06-17T00:07:47.853 回答
1
function setChecked($fieldname,$fieldvalue){
    if((isset($_POST[$fieldname]) and ($_POST[fieldname] == $fieldvalue)){

第二个(需要if((离开。

您还需要array在该$requiredfields = ...行中添加:

$requiredfields = array("firstname","lastname","password1","password2","gender");
于 2012-06-17T00:07:07.650 回答
0

如前所述:使用&& , ||而不是and , or。您需要array('a', 'b', 'c'),您需要非常小心大写、小写:$fieldname$fieldName(n/N) 不同。还有一些其他元素可以检查这应该会有所帮助:

<html>
<head>
<title>Registration</title>
<style type="text/css">.error{color:#F00}</style>
</head>
<?php

if($_SERVER['REQUEST_METHOD'] == 'POST') {
    processForm();
}
else {
    displayForm();
}

function validateField($error)
{
    if($error)
    {
        return 'class="error"';
    }
}

function setValue($fieldname)
{
    if(isset($_POST[$fieldname]))
    {
        return $_POST[$fieldname];
    }
}

function setChecked($fieldname,$fieldvalue)
{
    if(isset($_POST[$fieldname]) && $_POST[$fieldname] == $fieldvalue)
    {
        return ' checked="checked"';
    }
}

function setSelected( $fieldname, $fieldvalue )
{
    if ( isset( $_POST[$fieldname] ) && $_POST[$fieldname] == $fieldvalue )
    {
        return ' selected="selected"';
    }
}

function processForm()
{
    $requiredfields = array("firstName", "lastName", "password1", "password2", "gender");
    $missingfields = array();
    $missingfields['title'] = false;

    foreach($requiredfields as $requiredfield)
    {
        if(!isset($_POST[$requiredfield]) || empty($_POST[$requiredfield]))
        {
            $missingfields[$requiredfield] = true;
            $missingfields['title'] = true;
        }
        else {
            $missingfields[$requiredfield] = false;
        }
    }

    if ($missingfields['title'])
    {
        displayForm( $missingfields );
    } 
    else {
        echo displayThanks();
    }
}

function displayThanks()
{
    return '<h1>Everything is OK !</h1>';
}

function displayForm($missingfields)
{
?>
    <h1>Membership Form</h1>
    <?php if ($missingfields['title']) { ?>
    <p class="error">There were some problems with the form you submitted.
    Please complete the fields highlighted below and  click Send Details to
    resend the form.</p>
    <?php } else { ?>
    <p>Thanks for choosing to join The Widget Club. To register, please
    fill in your details below and click Send Details. Fields marked with an
    asterisk (*) are required.</p>
    <?php } ?>

    <form action="registration.php" method="post">
        <div style="width: 30em;">
            <label for="firstName"<?php echo validateField( $missingfields['firstName'] ) ?>>First name *</label>
            <input type="text"  name="firstName" id="firstName"  value="<?php echo setValue( "firstName" ) ?>" />
            <br>
            <label for="lastName"<?php echo validateField( $missingfields['lastName'] ) ?>>Last name *</label>
            <input type="text" name="lastName" id="lastName" value="<?php echo setValue( "lastName" ) ?>" />
            <br>
            <label for="password1"<?php echo validateField( $missingfields['password1'] ); ?>>Choose a password *</label>
            <input type="password" name="password1" id="password1" value="" />
            <br>
            <label for="password2"<?php echo validateField( $missingfields['password2'] ); ?>>Retype password *</label>
            <input type="password" name="password2" id="password2" value="" />
            <br>
            <label<?php echo validateField( $missingfields['gender'] ) ?>>Your gender: *</label>
            <label for="genderMale">Male</label>
            <input type="radio" name="gender" id="genderMale" value="M" <?php echo setChecked( "gender", "M" )?>/>
            <label for="genderFemale">Female</label>
            <input type="radio" name="gender" id="genderFemale" value="F" <?php echo setChecked( "gender", "F" )?> />
            <br>
            <label for="favoriteWidget">What’s your favorite widget? *</label>
            <select name="favoriteWidget" id="favoriteWidget" size="1">
                <option value="superWidget"<?php echo setSelected( "favoriteWidget", "superWidget" ) ?>>The SuperWidget</option>
            </select>
            <br>
            <input type="submit" value="Sign up">
        </div>
    </form>
<?php } ?>
</html>

希望能帮助到你。

于 2012-06-17T01:13:32.563 回答