簡體   English   中英

保留使用PHP和htmlentity形式的用戶輸入?

[英]Preserving user input using PHP and htmlentities in form?

我正在嘗試將用戶輸入保留為表格形式,這很好,但是如果沒有輸入,然后按Submit按鈕,則會出現以下錯誤:

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

我使用的代碼來自《 PHP解決方案》一書:

    <?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>

並包含文件:

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

?>

除html-entities外,所有腳本均正常運行。

在處理程序的末尾添加else語句,並設置$variable = ("")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM