Я использую шаблон, и моя новостная рассылка не работает. У меня уже есть веб-сайт онлайн.
if($_POST){
$fileName = 'newsletter.txt'; //set 777 permision for this file.
$error = false;
$email = $_POST['email'];
if (!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email))
$error = true;//If all ok, save emali adress in file
if($error == false){
$file = fopen($fileName, a);
fwrite($file, "$email,");
fclose($file);
echo 'OK';
}
}
Это HTML и часть PHP.
<div class="span7">
<form class="inline-form">
<input type="email" name="email" id="nlmail" class="span8" placeholder="Ingresá tu email" required />
<button id="subscribe" class="button button-sp">Suscribite!</button>
</form>
<div id="err-subscribe" class="error centered">Por favor dejá un mail valido </div>
</div>
Вам нужно будет явно установить POST
внутри вашего <form>
чтобы это работало:
<form class="inline-form" method="POST">
Обратите внимание, что по умолчанию GET
когда опущено.
Sidenote: Если это опечатка, вы должны исправить эту строку:
$file = fopen($fileName, a); // missing quotes on "a"
Эти режимы должны быть переданы в виде строки:
$file = fopen($fileName, 'a');
Здесь HTML-форма отправляет данные в виде GET, а php ожидает POST.
Измените форму HTML, чтобы отправлять данные как POST.
<form class="inline-form">
должно быть
<form class="inline-form" method="POST">
Кроме того, попробуйте отладку, если переменная электронной почты пуста или нет. Вот как вы находите, что не так.
Кроме того, режим fopen должен быть в кавычках, если только он не является переменной.
$file = fopen($fileName, "a");
Ура!