【问题标题】:Get Checkbox Values from Forms using an External PHP Processor使用外部 PHP 处理器从表单中获取复选框值
【发布时间】:2012-07-13 10:31:11
【问题描述】:

我有一个将其数据发送到 process.php 文件以在该文件中处理的表单我有以下代码:

<?php
    $name = $_GET['name'];
    $number = $_GET['number'];
    $email = $_GET['email'];
    $comment = $_GET['message'];
    $sales = $_POST['sales'];
    $lettings = $_POST['lettings'];

    $to = "me@me.com";

    $subject = "New website registration";

    $message = "Name: ".$name."\r\n";
    if(isset($number) && $number!='')
        $message.= "Number: ".$number."\r\n";
    if(isset($email) && $email!='')
        $message.= "Email: ".$email."\r\n";
    if(isset($comment) && $comment!='')
        $message.= "Comment: ".$comment."\r\n";
    if(isset($sales))
    {
        $message.= "I am Interested in Sales" . "\r\n";
    }else{
        //
    }
    if(isset($lettings))
    {
        $message.= "I am Interested in Lettings";
    }else{
        //
    }

    $headers = "From: ".$name." <".$email.">";

    $result = mail($to,$subject,$message,$headers);

    return $result;
?>

表单的 HTML 如下:

<form id="register_form" name="register" method="post" action="/content/contact/process.php">
    <input type="text" id="name" name="name" class="regform" onFocus="if(this.value=='Name'){this.value='';}" onBlur="if(this.value==''){this.value='Name';}" value="Name" />
    <input type="text" id="number" name="number" class="regform" onFocus="if(this.value=='Phone number'){this.value='';}" onBlur="if(this.value==''){this.value='Phone number';}" value="Phone number" />
    <input type="text" id="email" name="email" class="regform" onFocus="if(this.value=='Email address'){this.value='';}" onBlur="if(this.value==''){this.value='Email address';}" value="Email address" />
    <textarea id="message" name="message" class="regtext" onFocus="if(this.value=='Message'){this.value='';}" onBlur="if(this.value==''){this.value='Message';}">Message</textarea>
    <label for"sales">Sales<input type="checkbox" name="sales" value="1" /></label>
    <label for"sales">Lettings<input type="checkbox" name="lettings" value="1"/></label>
    <input id="submit" type="submit" value="Submit" class="regsender" />
    <div class="loading"></div>
</form>

选中复选框后,电子邮件中不会出现预期的消息。我在这里错过了什么吗。我已经尝试了几种不同的方法来让它工作,但都没有。任何帮助,将不胜感激。谢谢。

【问题讨论】:

  • @register_form 你使用的是post方法,但是@php你使用的是$_GET?你试过 $_POST, CMIIW
  • 是的,两个都试过了,但还是不行。

标签: php forms checkbox


【解决方案1】:

您正在使用 method = POST 并使用 $_GET 检索值

【讨论】:

    【解决方案2】:

    我已经更新了你的代码检查一下

    <?php
        if(isset($_POST['submit'])){
            $name = $_POST['name'];
            $number = $_POST['number'];
            $email = $_POST['email'];
            $comment = $_POST['message'];
            if (isset($_POST['sales'])) 
            {
                $sales = $_POST['sales'];
            }
            else if(isset($_POST['lettings']))
            {
                $lettings =$_POST['lettings'];
            }
    
            $to = "me@me.com";
    
            $subject = "New website registration";
    
            $message = "Name: ".$name."\r\n";
            if(isset($number) && $number!='')
                $message.= "Number: ".$number."\r\n";
            if(isset($email) && $email!='')
                $message.= "Email: ".$email."\r\n";
            if(isset($comment) && $comment!='')
                $message.= "Comment: ".$comment."\r\n";
    
            if(isset($_POST['sales']))
            {
                $message.= "I am Interested in Sales" . "\r\n";
            }
            else if(isset($_POST['lettings']))
            {
                $message.= "I am Interested in Lettings";
            }
            echo $message;
            $headers = "From: ".$name." <".$email.">";
    
            $result = mail($to,$subject,$message,$headers);
    
            return $result;
          }
        ?>
    
    <form id="register_form" name="register" method="post" action="testing_page.php">
        <input type="text" id="name" name="name" class="regform" onFocus="if(this.value=='Name'){this.value='';}" onBlur="if(this.value==''){this.value='Name';}" value="Name" />
        <input type="text" id="number" name="number" class="regform" onFocus="if(this.value=='Phone number'){this.value='';}" onBlur="if(this.value==''){this.value='Phone number';}" value="Phone number" />
        <input type="text" id="email" name="email" class="regform" onFocus="if(this.value=='Email address'){this.value='';}" onBlur="if(this.value==''){this.value='Email address';}" value="Email address" />
        <textarea id="message" name="message" class="regtext" onFocus="if(this.value=='Message'){this.value='';}" onBlur="if(this.value==''){this.value='Message';}">Message</textarea>
        <label for"sales">Sales<input type="checkbox" name="sales" value="1" /></label>
        <label for"sales">Lettings<input type="checkbox" name="lettings" value="1"/></label>
        <input id="submit" name="submit" type="submit" value="Submit" class="regsender" />
        <div class="loading"></div>
    </form>
    

    【讨论】:

    • 除复选框外,所有其他值都可以在外部 process.php 文件中使用 $_GET 很好地完成。如果我在 process.php 中将值从 $_GET 更改为 $_POST 什么都不会发生?
    • 处理表单的 PHP 代码位于外部文件中,而不是表单的一部分。
    • 仅将 $_POST['sales'] 用于复选框并检查它
    • 我已经使用 $_POST 而不是 $_GET 修改了上面的代码,但它不起作用?
    • 谢谢。我已将电子邮件更改为正确的电子邮件并添加了您的代码,但现在没有电子邮件通过?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2011-11-22
    • 2015-01-24
    • 1970-01-01
    相关资源
    最近更新 更多