简体   繁体   中英

Preserving user input using PHP and htmlentities in form?

I'm trying to preserve user input in form, which works fine, but if there is no input and I press Submit button I get following error:

 Notice: Undefined variable: name in C:\xampp\htdocs\syncfolder\phpsols\contact_01.php on line 54 value="">  

The code I'm using comes from book "PHP solutions":

    <?php 
    $errors = array();
    $missing = array();
    //check if the form has been submitted
    if (isset($_POST['send'])){
    //email processing script
    $to = 'sampleemail1@gmail.com';
    $subject = 'Mailing script';
    //list of expected fields
    $expected = array('name', 'email','comments');
    //set required fields
    $required = array('name','email', 'comments');
    require('processmail.inc.php');
    }
    ?>
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset=utf-8">
    <title>Japan Journey</title>
    <link href="styles/journey.css" rel="stylesheet" type="text/css" media="screen">
    </head>

    <body>
    <div id="header">
    <h1>Japan Journey</h1>
    </div>
    <div id="wrapper">

    <div id="maincontent">
        <h2>Contact Us </h2>

        <?php if ($missing || $errors) { ?>
    <p class="warning">Please fix the item(s) indicated.</p>
        <?php } ?>




      <p>Ut enim ad minim veniam, quis nostrud exercitation consectetur adipisicing elit. Velit esse cillum dolore ullamco laboris nisi in reprehenderit in voluptate. Mollit anim id est laborum. Sunt in culpa duis aute irure dolor excepteur sint occaecat.</p>
        <form id="feedback" method="post" action="">

            <p>
                <label for="name">Name:
                <?php if ($missing && in_array('name', $missing)) { ?>
                <span class="warning">Please enter your name</span>
                <?php } ?>
                </label>
                <input name="name" id="name" type="text" class="formbox"
                    <?php if ($missing || $errors) {
                    echo 'value="' . htmlentities($name, ENT_COMPAT, 'UTF-8') . '"';
                    } ?>>
            </p>

            <p>
                <label for="email">Email:
                <?php if ($missing && in_array('email', $missing)) { ?>
                <span class="warning">Please enter your email address</span>
                <?php } ?>
                </label>
                <input name="email" id="email" type="text" class="formbox"
                    <?php if ($missing || $errors) {
                    echo 'value="' . htmlentities($email, ENT_COMPAT, 'UTF-8') . '"';
                    } ?>>
            </p>

            <p>
                <label for="comments">Comments:
                <?php if ($missing && in_array('comments', $missing)) { ?>
                <span class="warning">Please enter your comments</span>
                <?php } ?>
                 </label>
                <textarea name="comments" id="comments" cols="60" rows="8">
                <?php
                    if ($missing || $errors) {
                    echo htmlentities($comments, ENT_COMPAT, 'UTF-8');
                    } ?>
                </textarea>
            </p>

            <p>
                <input name="send" id="send" type="submit" value="Send message">
            </p>
        </form>
    </div>

</div>
</body>
</html>

And include file:

<?php
foreach ($_POST as $key => $value) {
// assign to temporary variable and strip whitespace if not an array
$temp = is_array($value) ? $value : trim($value);
// if empty and required, add to $missing array
if (empty($temp) && in_array($key, $required)) {
$missing[] = $key;
} elseif (in_array($key, $expected)) {
// otherwise, assign to a variable of the same name as $key
${$key} = $temp;
    }
  }

?>

All script works fine except html-entities.

在处理程序的末尾添加else语句,并设置$variable = ("")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM