irdroleplaying.3bb.ru

Объявление

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » irdroleplaying.3bb.ru » Мастерская » Прочее


Прочее

Сообщений 21 страница 35 из 35

21

Вот весьма простое воплощение того, что я объяснял:

Код:
<?php

// удаление всех глобальных переменных, созданных register_globals=on
while ( list( $global ) = each( $GLOBALS ) )
{
	if ( !preg_match( '/^(_POST|_GET|_COOKIE|_SERVER|_FILES|GLOBALS|HTTP.*|_REQUEST)$/', $global ) )
	{
unset( $$global );
	}
}

unset($global);

// проверка на наличие аргументов
if ( !isset( $_POST['field1'] ) || !isset( $_POST['field2'] ) )
{
	die( "Недостаточно параметров." );
}

// для простоты
$f1 = $_POST['field1'];
$f2 = $_POST['field2'];

/*
проверка на формат аргументов
  '/^[a-zа-я0-9_\s]{1,200}$/i':
    регистронезависимо, русские и латинские буквы,
    цифры, подчеркивание и пробельные символы,
    длина от 1 до 200 символов
*/
if ( !preg_match( '/^[a-zа-я0-9_\s]{1,200}$/i', $f1 ) ||
	!preg_match( '/^[a-zа-я0-9_\s]{1,200}$/i', $f2 ) )
{
	die( "Неверный формат параметров." );
}

// составление письма
$msg = "Field1: $f1\nField2: $f2";
$msg = wordwrap( $msg, 70 );

// посылка письма
if ( !mail( 'Somebody <smbdy@domain.ru>', 'Subject', $msg,
	'From: noreply@domain.ru' ) )
{
	die( "Ошибка при отправке e-mail." );
}

// редирект, если все хорошо
// (если нет, то до сюда бы не дошло)
header( 'Location: /mailsent.html' );

Ток предупреждаю, сам я это не запускал :), но все должно быть ок.
Конкретно в этом случае форма отправки будет типа того:

Код:
<form action="mail.php" method="post">
<input type="text" name="field1" /><br />
<input type="text" name="field2" /><br />
<input type="submit" value="Send" />
</form>

Если скрипт оставлять как есть (ну не считая полей), то по-хорошему надо javascript'ом проверять данные в форме перед отправкой. Потому что если что-то не так, юзер увидит просто пустой экран с сообщением об ошибке.
Также можно изменить показ ошибки отправления письма, вместо die() сделать:

Код:
header( 'Location: /mailerr.html' );
exit();

0

22

Огромное спасибо, буду экспериментировать...

0

23

Ещё один вопрос... что есьм RSS и можно ли сделать так чтобы на сайт автоматически приходили и размещались новости с определенной ленты...

0

24

Вот ещё что хотел спросить, возвращаясь к отправке почты

что мне надо изменить в строке

!preg_match( '/^[a-zа-я0-9_\s]{1,200}$/i', $f1 )

чтобы можно было юзать верхний регистр кирилицы и латиницы? и что нужно добавить чтобы проходили спец символы (по крайней мере @ , . % / и т.д.)

0

25

Ну насчет верхнего регистра это даже я знаю!)))
[a-zа-я0-9_\s] =>> [a-zA-Zа-яА-Я0-9_\s]

0

26

таак.... а какие буквы "а" латинские а какие русские?

0

27

Аргх... ребят помогите, с меня импровезированный фуршетик... хочу же наконец закончить с этим сайтом...

0

28

Блин, Жень, ну ты же умный! Не видишь чтоли - там диапазоны!
Пофиг на порядок! Главное что у тебя написано А-Я, что значит от большой А до Большой Я. Диапазоны, как видишь пишутся слитно, т.е. а-яА-Яa-zA-Z

0

29

Хинт:эта фича называется "Регулярные выражения". Кто ее освоил - тот уже на 95%гуру;)

0

30

master jack написал(а):

Вот ещё что хотел спросить, возвращаясь к отправке почты

что мне надо изменить в строке

!preg_match( '/^[a-zа-я0-9_\s]{1,200}$/i', $f1 )

чтобы можно было юзать верхний регистр кирилицы и латиницы? и что нужно добавить чтобы проходили спец символы (по крайней мере @ , . % / и т.д.)

Насчет регистра ничего не надо менять, там модификатор i в конце регэкспа, означает case-insensivity (регистро-независимость). Однако если не работает (иногда бывает), то мона включить интервалы верхнего регистра.
Регэксп: /^[a-zа-я0-9\s@,\.%/]{1,200}$/i
если модификатор не срабатывает: /^[a-zA-Zа-яА-Я0-9\s@,\.%/]{1,200}$/

master jack написал(а):

таак.... а какие буквы "а" латинские а какие русские?

Ну в интервале "А-Я" и "а-я" - русские :) не понял, в чем трабла...

P.S. хотя есть потенциальная трабла с кодировками, и с тем, что PCRE регэкспы не всегда хорошо себя ведут в этой области
Какая там кодировка используется на странице? (т.е. какой там чарсет в content-type)

0

31

V0iD написал(а):

Ну в интервале "А-Я" и "а-я" - русские  не понял, в чем трабла...

Аргх... =) чувствую себя глупым =) но ничего, это иногда полезно...
Я с какого-то фига подумал что интервал задается не через "-" а слитно... и прифигел от записи яА-Яa-zA =)))) вот что значит другая точка зрения ;)
В любом случа спаибо большое! думаю на этой недели закончу с сайтом и угощу всех пивом (или кто что предпочитает)

0

32

master jack написал(а):

Ещё один вопрос... что есьм RSS и можно ли сделать так чтобы на сайт автоматически приходили и размещались новости с определенной ленты...

RSS - это по сути xml-документ (обычно динамически генерируемый).
Так можно сделать, но скрипт на порядок посложнее получится, т.к. там как минимум надо кэш делать. А по-хорошему еще и анализ заголовков веб-сервера, на котором лента находится (запросы к нему с загловками типа If-Modified-Since и ответы типа 304 Not Modified и так далее).

P.S. вот кстати на че я набрел - на первый взгляд то что нужно http://www.codenet.ru/webmast/php/newsimp/

Отредактировано V0iD (2007-10-09 17:53:09)

0

33

спотыкается на символе "/" ...

0

34

master jack написал(а):

спотыкается на символе "/" ...

Ой точна, надо было эскейпнуть слеш - поставь обратный слеш (\) перед ним.

0

35

нормуль... уже покуй, сделал так чтоб слеши никакие не появлялись...

0


Вы здесь » irdroleplaying.3bb.ru » Мастерская » Прочее