Форма подписки для женщин и мужчин

NewJey
На сайте с 21.11.2009
Offline
139
658

Добрый день.

Делаю простую форму подписки:

<html><body> 


<form action= "mail.php" method= "POST">

<p>E-mail: </p><p> <input type= "text" name= "email"></p>


<input type= "submit" value= "Отправить">

</body></html>

<? 

// Принимаем данные с формы
$email=$_POST['email'];
// Проверяем валидность e-mail
if (!preg_match("|^([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})|is",
strtolower($email)))
{
echo
"<center>Вернитесь <a
href='javascript:history.back(1)'><B>назад</B></a>. Вы
указали неверные данные!";
}
else
{
$msg="$email";
// Сохраняем в базу данных
$f = fopen("mail.txt", "a+");
fwrite($f,"\n $msg ");
fclose($f);
// Выводим сообщение пользователю
print "<script language='Javascript'><!--
function reload() setTimeout('reload()', 6000);
//--></script>
$msg
<p>Сообщение отправлено!</p>";
exit;
}
?>

Всё работает, но я хочу добавить ещё одну кнопку таким образом:

<html><body> 


<form action= "mail.php" method= "POST">

<p>E-mail: </p><p> <input type= "text" name= "email"></p>

<input type= "submit" value= "Женщина">
<input type= "submit" value= "Мужчина">

</body></html>

И что бы при нажатии на ту или иную кнопку информация писалась в 1.txt или 2.txt

Как мне так сделать?

Спасибо.

Ragnarok
На сайте с 25.06.2010
Offline
239
#1
//TODO: перестать откладывать на потом
NewJey
На сайте с 21.11.2009
Offline
139
#2

Разобрался вроде, вот так:

 if (isset($_POST['woomen'])){

// Сохраняем в базу данных
$f = fopen("woomen.txt", "a+");
fwrite($f,"\n $msg ");
fclose($f); }
else if (isset($_POST['men'])){
// Сохраняем в базу данных
$f = fopen("man.txt", "a+");
fwrite($f,"\n $msg ");
fclose($f); }


---------- Добавлено 29.01.2016 в 17:24 ----------

Но появился ещё вопрос, при нажатии на кнопку отправить меня перекидывает на другую страницу с надписью Спасибо.

Как прописать что бы не перекидывало а писало спасибо вместо формы подписки?

owx
На сайте с 27.06.2009
Offline
100
owx
#3
NewJey:
Разобрался вроде, вот так:
 if (isset($_POST['woomen'])){
// Сохраняем в базу данных
$f = fopen("woomen.txt", "a+");
fwrite($f,"\n $msg ");
fclose($f); }
else if (isset($_POST['men'])){
// Сохраняем в базу данных
$f = fopen("man.txt", "a+");
fwrite($f,"\n $msg ");
fclose($f); }


---------- Добавлено 29.01.2016 в 17:24 ----------

Но появился ещё вопрос, при нажатии на кнопку отправить меня перекидывает на другую страницу с надписью Спасибо.
Как прописать что бы не перекидывало а писало спасибо вместо формы подписки?

Меняем


<form action= "mail.php" method= "POST">

<p>E-mail: </p><p> <input type= "text" name= "email"></p>

<input type= "submit" value= "Женщина">
<input type= "submit" value= "Мужчина">

на


<form id="email-form" method="POST">
<p>E-mail: </p>
<p><input type="text" name="email"></p>
<input type="submit" name="woomen" value="Женщина">
<input type="submit" name="men" value="Мужчина">
</form>
<script>
$("#email-form").on('submit', function () {
$.ajax({
url: "mail.php",
type: "post",
data: $("#email-form").serialize(),
success: function () {
$("#email-form").html('Спасибо');
}
});
return false;
});
</script>

При этом на странице должен быть подключен jquery.

<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
NewJey
На сайте с 21.11.2009
Offline
139
#4

Спасибо, так работает но не записывает в базу (тоесть не пишет в файлы).

owx
На сайте с 27.06.2009
Offline
100
owx
#5
NewJey:
Спасибо, так работает но не записывает в базу (тоесть не пишет в файлы).

Пропустил небольшую деталь. Вот исправленный код для обработчика с проверкой e-mail на валидность.

NewJey
На сайте с 21.11.2009
Offline
139
#6
~AL~:
Пропустил небольшую деталь. Вот исправленный код для обработчика с проверкой e-mail на валидность.

Что-то или я неправильно делаю или код не работает.

Вставляю его в mail.php

<?

if (isset($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
if (isset($_POST['woomen'])) {
file_put_contents('woomen.txt', PHP_EOL . "\n" . $_POST['email'], FILE_APPEND);
} elseif (isset($_POST['men'])) {
file_put_contents('man.txt', PHP_EOL . "\n" . $_POST['email'], FILE_APPEND);
}
}
?>
owx
На сайте с 27.06.2009
Offline
100
owx
#7
NewJey:
Что-то или я неправильно делаю или код не работает.
Вставляю его в mail.php
<?
if (isset($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
if (isset($_POST['woomen'])) {
file_put_contents('woomen.txt', PHP_EOL . "\n" . $_POST['email'], FILE_APPEND);
} elseif (isset($_POST['men'])) {
file_put_contents('man.txt', PHP_EOL . "\n" . $_POST['email'], FILE_APPEND);
}
}
?>

Оказывается serialize() не охватывает submit, никогда этого не замечал.

Проверенный готовый скрипт.

NewJey
На сайте с 21.11.2009
Offline
139
#8
~AL~:
Оказывается serialize() не охватывает submit, никогда этого не замечал.
Проверенный готовый скрипт.

Так тупо, кидаю ваши готовые файлы на сервер, запускаю, но не пишет в файлы всё равно( Что может быть не так?

owx
На сайте с 27.06.2009
Offline
100
owx
#9
NewJey:
Так тупо, кидаю ваши готовые файлы на сервер, запускаю, но не пишет в файлы всё равно( Что может быть не так?

Попробуйте установить права (CHMOD) 777 на txt файлы. При тестах валидный e-mail вводили? Есть ли какие-нибудь ошибки в браузере или консоли (F12)?

NewJey
На сайте с 21.11.2009
Offline
139
#10
~AL~:
Попробуйте установить права (CHMOD) 777 на txt файлы. При тестах валидный e-mail вводили? Есть ли какие-нибудь ошибки в браузере или консоли (F12)?

Права в первую очередь проверяю обычно, всё в порядке, открыты для записи, в консоли ошибок ни каких, писать не хочет(

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий