PHP / html电子邮件表单不再提交到mysql数据库

时间:2011-11-12 19:07:17

标签: php mysql forms email

我创建了这个表单:

<form method="post" action="process-form.php" id="emailForm" name="emailForm"      target="_self">  
    <h4>Sign up to be notified when we go live!</h4>
<label for="email">E-mail</label>
    <input type="text" name="email" id="email" />
<input type="submit" name="submit" id="submit" value="Submit"  onclick="return alert('Thanks! Your email has been added.');">

    <p>emails will not be shared with third parties</p>
</form>

使用此PHP代码

<?php

//open database connect
$username = "username";
$password = "password";
$hostname = "server"; 

$conn = mysql_connect($hostname, $username, $password);
if (!$conn) die('Could not connect: ' . mysql_error());

//emaillist is the name of the database
mysql_select_db('emaillist');

//Clean data
function clean_data($string){
  if (get_magic_quotes_gpc()){
    $string = stripslashes($string);
  }
  $string = strip_tags($string);
  return mysql_real_escape_string($string);
}

//Mail Header removal
function remove_headers($string){
  $headers = array(
        "/to\:/i",
        "/from\:/i",
        "/bcc\:/i",
        "/cc\:/i",
        "/Content\-Transfer\-Encoding\:/i",
        "/Content\-Type\:/i",
        "/Mime\-Version\:/i",
    );

    $string = preg_replace($headers, '', $string);
    return strip_tags($string);
}

//Pick up cleaned data
$email = clean_data($_POST['email']);


//Insert data
//emails is the name of the table
$query ="INSERT INTO emails (email)
  VALUES ('$email')";

mysql_query($query);

//close Connection
mysql_close($conn); 

//redirect to page
header('Location: defaultUpCyc.html');
?>

在我的测试环境中,一切都工作得很好,在我投入使用的几天。但是,我去了我的数据库,看看是否有任何电子邮件提交,而且它完全是空的。我已将测试电子邮件放入表单并检查数据库,但没有任何内容。自从我把它放到现场以来,我没有改变任何东西,所以我很茫然。以下是测试网站:http://upcycledonline.com/test/Site/defaultUpCyc.html

感谢您的帮助!

4 个答案:

答案 0 :(得分:4)

您应该通过添加以下内容来检查您的连接是否有效:

if (!$conn) { die('Could not connect: ' . mysql_error()); }

还要检查firebug,以确保表单中包含数据。你也可以回应你的查询来检查格式。否则一切看起来都不错,所以我的假设是数据库连接不好。

只是猜测:)

答案 1 :(得分:1)

测试网站上的表单标记没有定义其操作,这意味着它将数据发送给自身,HTML无法与数据库一起使用。

答案 2 :(得分:1)

我不知道如何在这里添加代码,所以我做了一个粘贴: http://pastebin.com/baPUPhbt 你可以用这个

答案 3 :(得分:0)

我认为你的问题是onclick javascript,尝试删除它,它可能会起作用