X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> PHP работа с .txt файлом
Andrey-Kin
Andrey-Kin
Topic Starter сообщение 25.10.2010, 15:08; Ответить: Andrey-Kin
Сообщение #1


Добрый день форумчане! Нужна помощь, в двух словах: есть сайт, кое как склепал рассылку уведомления о новом материале, адреса подписчиков хранятся в .txt файле, пока что новые адреса прописываю вручную, сейчас пытаюсь склепать автоматическую подписку, форма подписаться и форма отписаться (добавить\удалить адрес из .txt файла)
нашел статью идеально подходящую на мой случай, но беда в том что в предоставленном (код сохранения и удаления адресов) где-то явно ошибка, код не сохраняет новые адреса в файл и не удаляет имеющиеся, очень прошу помогите исправить код.
вот источник статьи http://docs.com.ru/php_2.php
сам код:

index.php
[php]<? <form method="post" action="ras.php" enctype="multipart/form-data">
<input type="text" name="email" size="30">
<input type="submit" name="submit" value="подписаться"></form> ?>
[/php]

ras.php
[php]<?
$file = "maillist.txt"; // файл, содержащий адреса

error_reporting(0); // запрещаем вывод сообщений о возможных ошибках

function test_mail($char) // функция, проверяющая реальность адреса

{
$flag = false;
if (eregi("^[_\.0-9a-z-]+@([0-9a-z][-0-9a-z\.]+)\.([a-z]{2,3}$)", $char)) $flag = true;
if ($flag) return true;
else return false;
}

$email = trim(strtolower($email)); // получаем введеный в
// форму адрес с
// символами в нижнем регистре

function copy_mail($char) // проверяем, есть ли такой адрес в базе
{
$file = "maillist.txt";
$list = file($file);
for ($i = 0; $i < sizeof ($list); $i++)
if ($char == trim($list[$i])) $flag = true;

if ($flag) return true;
else return false;
}

echo "<center>";

if (is_file($file)) // далие проверяем адрес вышеописаными функциями
{
$maillist = file($file);
if (!$email == '') {
if (test_mail($email)) {
if (!copy_mail($email))
{
$maillist[] = "\n$email";
print "E-mail: $email добавлен базу рассылки</center>";
}
else print "E-mail: $email уже есть в базе</center>";
}
else print "E-mail: $email не сушествует</center>";
}
else print "</center>";
}
else print "Не найден файл $file ! Пожалуйста <A HREF=\"mailto:$fromemail\">сообщите</a> мне о ошибке.</center>";
// выводи на екран форму с предложением подписки и отписки
echo "<br><center>Подписаться на рассылку<form method=\"post\" action=\"ras.php\" enctype=\"multipart/form-data\">";
echo "Введите mail:<input type=\"text\" name=\"email\" size=\"30\"><input type=\"submit\" name=\"submit\" value=\"подписаться\"></form></center>";

echo "<CENTER><br><br><form method=\"post\" action=\"ras.php\" enctype=\"multipart/form-data\">";
echo "Отписаться от рассылки<br>Введите mail:";
echo "<input type=\"text\" name=\"delmail\" size=\"15\"><input type=\"submit\" name=\"submit\" value=\"Отписаться\"></form></CENTER>";
// если пользователь решил отписаться - удаляем введеный адрес
$flag = false;
$fw = fopen($file, "w");
for ($i = 0; $i < sizeof ($maillist); $i++)
if (trim(strtolower($delmail)) == trim(strtolower($maillist[$i]))) {
if (!$delmail == '')
{
print "<center>$delmail удален из базы рассылки</center>";
$flag = true;
}
}
else fputs($fw, $maillist[$i]); // введеного адреса в базе нет
fclose($fw);
if (!$delmail == '')
if (!$flag) print "<center>$delmail не найден в базе рассылки</center>";
?>
[/php]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 25.10.2010, 16:16; Ответить: alexdrob
Сообщение #2


Может быть у вас есть базы данных? тогда лучше переделать скрипт на работу с БД.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Andrey-Kin
Andrey-Kin
Topic Starter сообщение 25.10.2010, 18:41; Ответить: Andrey-Kin
Сообщение #3


пока что предпочтение работать с txt
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 25.10.2010, 20:30; Ответить: alexdrob
Сообщение #4


Во первых было бы не плохо предоставлять отформатированный код) Хотя бы для того что бы тот кто вам пытается помочь мог прочесть ваш код))

По коду

Не используйте <? в качестве открывающегося тега php мало где работает, открывайте так <?php

Почти везде регистр_глобал выключен, по этому переменной $email не существует пока вы её не присвоите, а есть переменная $_POST['email'] (в вашем случае, так как с формы отправленны данные методом post)
строку
$email = trim(strtolower($email));
замените например так
[PHP]$email = isset($_POST['email'])?trim(strtolower($_POST['email'])):'';[/PHP]

То же самое с $delmail, добавьте строку в скрипт
[PHP]$delmail = isset($_POST['delmail'])?trim(strtolower($_POST['delmail'])):'';[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Andrey-Kin
Andrey-Kin
Topic Starter сообщение 25.10.2010, 20:46; Ответить: Andrey-Kin
Сообщение #5


в ожидании ответа, догадался включить register_globals на сервере , код заработал))

но ваш вариант практичней и безопасней с выключенным register_globals , спасибо огромное теперь все работает)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужна работа
0 filatd 707 12.1.2024, 17:08
автор: filatd
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3293 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1171 24.11.2023, 14:46
автор: alexey
Открытая тема (нет новых ответов) Работа: Разная рутина
Работа, разные рутинные задачи: постинг / переговоры / поиск
1 ivanshargin 932 31.10.2023, 17:55
автор: ServersExpert
Открытая тема (нет новых ответов) Нужна удаленная работа
Нужна удаленная работа
0 filatd 990 12.9.2023, 11:40
автор: filatd


 



RSS Текстовая версия Сейчас: 29.3.2024, 13:12
Дизайн