简体   繁体   English

获得一个PHP联系表格

[英]Getting a PHP contact form to work

I'm fairly new to PHP, and trying to get a contact form to work on my website has proven a little difficult. 我对PHP相当陌生,尝试获得联系表格以在我的网站上工作已证明有点困难。 I've put a contact form onto my site; 我已经将联系表格放到了我的网站上; Everything functions properly other then sending the mail. 除发送邮件外,其他所有功能均正常运行。 It's connected to my server on Godaddy, so not sure why it doesn't work. 它已连接到我在Godaddy上的服务器,因此不确定为什么它不起作用。 Here is my code(changed a few of the names to remain anonymous.) 这是我的代码(更改了一些名称以保持匿名。)

HTML: HTML:

<form id="contact.php" action="mywebsite" method="post">
                            <div class="div_input"><input type="text" name="c_name" value="Name" onfocus="if(this.value=='Name')this.value=''" onblur="if(this.value=='')this.value='Name';" /></div>
                            <div class="div_input"><input type="text" name="c_email" value="E-mail" onfocus="if(this.value=='E-mail')this.value=''" onblur="if(this.value=='')this.value='E-mail';" /></div>
                            <div class="div_input"><input type="text" name="c_tel" value="Telephone" onfocus="if(this.value=='Telephone')this.value=''" onblur="if(this.value=='')this.value='Telephone';" /></div>
                            <div class="div_textarea"><textarea name="c_text" rows="1" cols="1" onfocus="if(this.value=='Text')this.value=''" onblur="if(this.value=='')this.value='Text';">Text</textarea></div>
                            <div class="div_btn"><input id="form_send" type="submit" name="c_send" value="" /></div>
                            <div class="div_warnings"></div>
                            <div class="loading"><img src="" alt="Loading" /></div>
                            <div class="clear"></div>
                        </form>
                    </div>

PHP: PHP:

<?php
$field_name = $_POST['c_name'];
$field_email = $_POST['c_email'];
$field_message = $_POST['c_message'];

$mail_to = 'myemail';
$subject = 'Message from a site visitor '.$field_name;

$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">
        alert('Thank you for the message. We will contact you shortly.');
        window.location = 'mywebsiteurl';
    </script>
<?php
}
else { ?>
    <script language="javascript" type="text/javascript">
        alert('Message failed. Please, send an email to myemail');
        window.location = 'mywebsiteurl';
    </script>
<?php
}
?>

I appreciate any help, 感谢您的帮助,

thank you. 谢谢。

First thing, i didnt look further because it will throw undefined variable notices here and therefore your form wont work: 首先,我没有进一步查看,因为它将在此处引发未定义的变量通知,因此您的表单将无法工作:

<input type="text" name="c_name" value="Name" ...

$field_name = $_POST['cf_name'];

Look at the names. 看名字。 Use error reporting for detecting such mistakes. 使用错误报告来检测此类错误。

<form action="contact.php" id="mywebsite" method="post">
                            <div class="div_input"><input type="text" name="cf_name" value="Name" onfocus="if(this.value=='Name')this.value=''" onblur="if(this.value=='')this.value='Name';" /></div>
                            <div class="div_input"><input type="text" name="cf_email" value="E-mail" onfocus="if(this.value=='E-mail')this.value=''" onblur="if(this.value=='')this.value='E-mail';" /></div>
                            <div class="div_input"><input type="text" name="cf_tel" value="Telephone" onfocus="if(this.value=='Telephone')this.value=''" onblur="if(this.value=='')this.value='Telephone';" /></div>
                            <div class="div_textarea"><textarea name="cf_text" rows="1" cols="1" onfocus="if(this.value=='Text')this.value=''" onblur="if(this.value=='')this.value='Text';">Text</textarea></div>
                            <div class="div_btn"><input id="form_send" type="submit" name="cf_send" value="" /></div>
                            <div class="div_warnings"></div>
                            <div class="loading"><img src="" alt="Loading" /></div>
                            <div class="clear"></div>
                        </form>
                    </div>

Your name of the input fields are should be same when you access the data of your destination file. 访问目标文件的数据时,输入字段的名称应相同。 form action is used to get your form data and process.so you should given your destination file name there! 表单操作用于获取表单数据和流程。因此,您应该在其中指定目标文件名!

sorry for my English! 对不起我的英语不好!

i hope this help you! 希望对您有所帮助!

Perhaps this will help? 也许这会有所帮助? (add after existing $headers lines) (在现有的$ headers行之后添加)

$headers .= "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=UTF-8" . "\r\n";
$headers .= "Content-Transfer-Encoding:base64 \r\n";
$new_message_body= $base64contents = rtrim(chunk_split(base64_encode($body_message)));
mail($to, $subject, $new_message_body, $headers);

Found the problem. 找到了问题。 In my html, I should have pointed action="" to my php page rather then my website. 在我的html中,我应该将action =“”指向我的php页面,而不是我的网站。 Thanks for the help. 谢谢您的帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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