Форма электронной почты PHP / html больше не отправляется в базу данных mysql - PullRequest
1 голос
/ 12 ноября 2011

Я создал эту форму:

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

4 голосов
/ 12 ноября 2011

Вы должны проверить, работает ли ваше соединение, добавив:

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

также проверьте firebug, чтобы убедиться, что форма отправляет данные. Вы также можете повторить запрос, чтобы проверить формат. в противном случае все выглядит хорошо, поэтому я предполагаю, что соединение с БД плохое.

просто предположение, хотя:)

1 голос
/ 13 ноября 2011

Я не знаю, как добавить код, поэтому я сделал пасту: http://pastebin.com/baPUPhbt Вы можете использовать это

1 голос
/ 12 ноября 2011

Для тега формы на тестовом сайте не определено действие, что означает отправку данных самому себе, а HTML не может работать с базами данных.

0 голосов
/ 12 ноября 2011

Я думаю, что ваша проблема в том, что онклав JavaScript, попробуйте удалить его, он может работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...