[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проверьте мой скрипт регистрации и письма
человекЕ
здравствуйте. посмотрите и скажите есть ли кривое
unction registration ( $name,$login,$password)
{
//создаю новый массив
$element=array();
$element['name']=$name;
$element['login']=$login;
$element['password']=$password;
$_SESSION['users'][]=$element;

$_SESSION['login'] = $login;
$_SESSION['password']=$password;
$_SESSION['name']=$name;
$message= "Вы зарегестрировались как-".
$_SESSION['login']."</br>".$_SESSION['password']."</br>".$_SESSION['name']."</br>";
$l=fopen("users.txt","a");
$a="$login | $name | $password";
$w=fwrite($l,$a);
fclose($l);
return $message;
}

if (fclose($l))
{
$to="pochta@mail.ru";
$subject="new user";
$message= "
<html>
<head><title>new user </title></head>
<body>
<p><новый человек></p>

$a<br>
$b<br>
$c<br>
</body>
</html>
"
;
$headers="Content-type: text/html charset=utf-8". "\r\n";
$headers.= "from my site". "\r\n";
mail ($to,$subject,$message,$headers);
return($message);
}




Спустя 1 минута, 50 секунд (28.01.2012 - 18:26) человекЕ написал(а):
тут убрал лишнее
if (fclose($l))
{
$to="pochta@mail.ru";
$subject="new user";
$message= "
<html>
<head><title>new user </title></head>
<body>
<p><новый человек></p>

$a<br>
</body>
</html>
"
;
$headers="Content-type: text/html charset=utf-8". "\r\n";
$headers.= "from my site". "\r\n";
mail ($to,$subject,$message,$headers);
return($message);
}

Спустя 2 минуты, 58 секунд (28.01.2012 - 18:29) inpost написал(а):
irbis-team.com и смотри, там целый раздел посвященный отправке письма.

Спустя 17 минут, 59 секунд (28.01.2012 - 18:47) человекЕ написал(а):
спасибо, но все же скажите есть что-то неправильное

Спустя 2 минуты (28.01.2012 - 18:49) человекЕ написал(а):
отбрасывая в сторону то,что получатель вместо кириллицы увидит белиберду

Спустя 59 секунд (28.01.2012 - 18:50) YVSIK написал(а):
сделал бы так, и понятней и нет ничего лишнего
//создаю новый массив
$element=array( name=>$name,
login=>$login,
password=>$password,
users=>$element
);

Спустя 3 минуты, 47 секунд (28.01.2012 - 18:54) inpost написал(а):
человекЕ
"Я делаю чат, но давайте отбросим сам чат. Что тут ещё не так". Ты пытаешься сказать, чтобы мы не смотрели на то единственное, ради чего делается всё это smile.gif

Спустя 1 час, 42 минуты, 23 секунды (28.01.2012 - 20:36) человекЕ написал(а):
спасибо.)я просто хочу узнать нигде логика не нарушается,если не учитывать
$subject = '=?utf-8?b?'. base64_encode($subject) .'?='; 
?
и еще хотел узнать я могу отправить письмо используя локалхост?

Спустя 1 минута, 36 секунд (28.01.2012 - 20:38) Winston написал(а):
Твое письмо будет находится в каталоге \tmp\!sendmail

Спустя 8 минут, 4 секунды (28.01.2012 - 20:46) YVSIK написал(а):
Цитата (человекЕ @ 28.01.2012 - 20:36)

и еще хотел узнать я  могу отправить письмо используя локалхост?

все будет зависеть не от имени названия вашего домена , а от настройки сервера, как пример на денвере есть заглушка, для отстройки, про ИРБИС ШКОЛ сказать не берусь все осталные удаленные хосты обращаемся к провайдеру или читаем условия хранения ваших файлов.

а что до слова локалхост(localhost-привыкаем к правильному написанию)? ДЫк любое может, быть хоть chelovekE.ru wink.gif

Спустя 8 минут, 9 секунд (28.01.2012 - 20:54) Winston написал(а):
Для того, чтобы с локалхоста можно было отсылать письма, нужно в php.ini директиве SMTP прописать адрес smtp сервера.

Спустя 13 минут, 51 секунда (28.01.2012 - 21:08) killer8080 написал(а):
Цитата (Winston @ 28.01.2012 - 19:54)
Для того, чтобы с локалхоста можно было отсылать письма, нужно в php.ini директиве SMTP прописать адрес smtp сервера.

Не только, ещё нужно установить sendmail for windows. smile.gif

Спустя 47 минут, 21 секунда (28.01.2012 - 21:55) человекЕ написал(а):
всем спасибо. а насчет логики,что скажете,нет нарушения,будет работать если скрипт залить на сервер?

Спустя 2 минуты, 1 секунда (28.01.2012 - 21:57) Семён написал(а):
человекЕ
типичный говнокод, от которого можно ожидать что угодно

Спустя 2 минуты, 3 секунды (28.01.2012 - 21:59) Winston написал(а):
Зачем здесь это?
Цитата (человекЕ @ 28.01.2012 - 17:24)
if (fclose($l))


Спустя 2 минуты, 42 секунды (28.01.2012 - 22:02) человекЕ написал(а):
проверка действия, если закрыл документ,то отправь письмо

Спустя 2 минуты, 12 секунд (28.01.2012 - 22:04) Winston написал(а):
А открывается он где?

Спустя 10 минут, 2 секунды (28.01.2012 - 22:14) человекЕ написал(а):
$l=fopen("users.txt","a");

Спустя 7 минут, 6 секунд (28.01.2012 - 22:21) Winston написал(а):
Открывается в ф-и, а проверяется на закрытость вне ф-и? blink.gif

Спустя 10 минут, 32 секунды (28.01.2012 - 22:32) bob marley написал(а):
Что вводят в переменные $name,$login,$password хотя бы проверяется?

Спустя 6 минут, 5 секунд (28.01.2012 - 22:38) человекЕ написал(а):
даже не задумывался).имеешь ввиду на наличие некорректных символов? пока нет.
я пока хочу узнать будет ли он работать,если залью его на сервер и что убрать или поставить чтобы работало



Спустя 2 минуты, 21 секунда человекЕ написал(а):
с функцией и та проверка вне функции это я ступил, спасибо. может проверку на закрытие файла вообще лучше убрать?

Спустя 16 минут, 14 секунд (28.01.2012 - 22:54) bob marley написал(а):
человекЕ
вот тебе проверка на имя\логин\пароль:

/// Проверим имя: 
$nametrue = preg_match('/([А-Яа-я]){3}/', $name);
# Если имя написанное пользователем не менее 3ех символов и написано русскими буквами
#то $nametrue будет равно 1,а если нет,то 0!


/// Проверим логин:
$logintrue = preg_match('/([A-Za-z0-9]){6}/', $login);
# Если логин состоит из английском языке и цифр и не менее 6ти символов
#то $logintrue будет равно 1,а если нет,то 0!


/// Проверим пароль:
$passwordtrue = preg_match('/([A-Za-z0-9]){6}/', $password);
# Если пароль состоит из английском языке и цифр и не менее 6ти символов
#то $passwordtrue будет равно 1,а если нет,то 0!


Думаю сам додумаешься что потом делать с переменными $nametrue и тд
У них значения если все верно - 1 или TRUE
если не верно то - 0 или FALSE
В переменные $name,$login,$password - то что ввели пользователи!
Поставишь +1 в карму за помощь по коду? :)



Спустя 30 секунд bob marley написал(а):
По поводу твоего кода..
А файлы обязательно использовать?! unsure.gif

Спустя 8 минут, 41 секунда (28.01.2012 - 23:03) killer8080 написал(а):
человекЕ
по коду
Во первых использовать файлы нужно в крайнем случае, если нет возможности использовать БД.
Во вторых нет проверки на существование добавляемого пользователя в системе.
В третьих нет никакой защиты от ботов.
В четвертых, открой для себя функцию file_put_contents()

Спустя 36 минут, 56 секунд (28.01.2012 - 23:40) Winston написал(а):
Это не правильно
Цитата (bob marley @ 28.01.2012 - 21:54)
не менее 3ех символов

В твоем случае это будет строго 3 символа.
+ К тому же у тебя будет некорректно работать при кодировке UTF-8.
+ У тебя даже такой текст "Превед медвед лол" вернет true, ибо ты не заякорил шаблон с помощью ^ $
А так же вместо "А-Яа-я" достаточно написать модификатор i, тогда достаточно будет просто писать "а-я" (Но это за исключением буквы "ё", ее нужно прописывать отдельно "ёЁ").


Спустя 5 минут, 21 секунда (28.01.2012 - 23:45) bob marley написал(а):
Winston
ты ко мне сегодня специально прицепился?а? biggrin.gif




Спустя 1 минута, 55 секунд bob marley написал(а):
Цитата (Winston @ 28.01.2012 - 20:40)
В твоем случае это будет строго 3 символа.

не фига подобного!вот у меня есть код:
$pm = preg_match('/([A-Za-z0-9]{2})+\@+([A-Za-z0-9]{2})+\.+([A-Za-z]{2})/', $_POST['mail']);
выдеат ошибку если только меньше двух,а так нормально!




Спустя 2 минуты, 36 секунд bob marley написал(а):
так что я не знаю с чего ты взял что это ограничение - {..}!



Спустя 3 минуты, 53 секунды bob marley написал(а):
Цитата (Winston @ 28.01.2012 - 20:40)
+ У тебя даже такой текст "Превед медвед лол" вернет true, ибо ты не заякорил шаблон с помощью ^ $

это защита делается не для того чтобы только одно слово могли ввести,а чтобы всякий код не написали!

Спустя 6 минут, 19 секунд (28.01.2012 - 23:52) Winston написал(а):
Цитата (bob marley @ 28.01.2012 - 22:47)
не фига подобного

Кто кого учить будет? smile.gif
Цитата (bob marley @ 28.01.2012 - 22:47)
выдеат ошибку если только меньше двух,а так нормально!

Правильно, ты же не добавил якорь начала ^ и конца $ строки.

Спустя 2 минуты, 17 секунд (28.01.2012 - 23:54) Winston написал(а):
Короче пока не выучишь регулярки, то на эту тему нам с тобой не получиться по-общаться wink.gif

Спустя 2 минуты, 22 секунды (28.01.2012 - 23:56) bob marley написал(а):
Winston
я тебе говорю о том что это значит {2} что не меньше двух символов..
а не как ты написал,что не больше и не меньше,конкретное число!
Не нравится?Считаешь не правильным и что я не помогаю,а делаю вред?Напиши сам ему эту проверку!!!

Спустя 6 минут, 30 секунд (29.01.2012 - 00:03) Winston написал(а):
{2} - строго 2 символа
{,2} - 2 и меньше сиволов
{2,} - 2 и больше символов

Ты уж если пишешь
Цитата (bob marley @ 28.01.2012 - 22:47)
$pm = preg_match('/([A-Za-z0-9]{2})+\@+([A-Za-z0-9]{2})+\.+([A-Za-z]{2})/', $_POST['mail']);

То хотя бы проверяй что у тебя там в результате выйдет. Вот так напиши
preg_match('/([A-Za-z0-9]{2})+\@+([A-Za-z0-9]{2})+\.+([A-Za-z]{2})/', 'mail@mail.ru', $match);
print_r($match);

И посмотришь какая ахинея у тебя в результате будет :D

А теперь напиши так
preg_match('/^[A-Za-z0-9]{4,}+\@+[A-Za-z0-9]{4,}+\.+[A-Za-z]{2,}$/', 'mail@mail.ru', $match);
print_r($match);

И попробуй ввести меньше 4 символов для ника или домена второго уровня или меньше 2 символов для корневого домена.
И кто здесь будет прав? :)

Спустя 22 минуты, 36 секунд (29.01.2012 - 00:25) bob marley написал(а):
Winston
http://phpprog.hut2.ru/
специально для тебя!!!
почему работает тогда?вот код:


<?php
$domain = parse_url($_SERVER['HTTP_HOST']);$domain = 'http://'.$domain['path'].'/';
if($_POST['mail'] != ''){
$pm = preg_match('/([A-Za-z0-9]{2})+\@+([A-Za-z0-9]{2})+\.+([A-Za-z]{2})/', $_POST['mail']);
if($pm == FALSE){$content = '<h4>Не верная структура е-майл: <font color="red">'.$_POST['mail'].'</font></h4>';}
if($pm == TRUE){
$content = '<h4>Подтвердите,что е-майл ваш!<br />Сообщение с проверкой придет на ящик: <font color="red">'.$_POST['mail'].'</font></h4>';
$url = rand('1', '99999');
mkdir($url);
$file = fopen($url.'/index.php', 'w+');
$filecontent = str_replace(array('{URL}', '{EMAIL}'),array($url, $_POST['mail']), '<?php $domain = parse_url($_SERVER["HTTP_HOST"]);$domain = "http://".$domain["path"]."/";$dir = "{URL}";$mail = "{EMAIL}";echo $mail; ?>');
fwrite($file, $filecontent);
fclose($file);
$title = 'Подтвердите подписку';
$contents = 'Ссылка для подтверждения: '.$domain.$url;
mail($_POST['mail'], $title, $contents);
}
}

?>

<?php
if($content != ''){echo $content;} /// Если есть ошибка,вывести их! ?>
<form method="post" action="">
Ваш е-майл: <input type="text" name="mail" <?php if($_POST['mail'] != ''){echo 'value="'.$_POST['mail'].'"';} /// Сохранять данные в блоке ?>><input type="submit" value="Подписаться">
</form>

Спустя 4 минуты, 50 секунд (29.01.2012 - 00:30) Winston написал(а):
Цитата (bob marley @ 28.01.2012 - 23:25)
почему работает тогда

Опять 25. laugh.gif
Иди почитай про якоря, начала и конца строки.
Вот например http://oooportal.ru/?cat=article&id=538
А так же почитай внимательнее этот пост http://phpforum.ru/index.php?showtopic=0&v...dpost&p=1695030, а также поэкспериментируй с тем, что там написано smile.gif

Спустя 4 минуты, 13 секунд (29.01.2012 - 00:34) bob marley написал(а):
Winston
Спасибо,окей..Я уже понял что я не прав..Мне просто интересно почему работает-то блин!!! blink.gif



Спустя 2 минуты, 8 секунд bob marley написал(а):
Понял про якоря..А почему ты скобочки круглые убрал?я так понимаю что когда сложения они не нужны,да?



Спустя 2 минуты, 38 секунд bob marley написал(а):
если рядом два такого вида будет тогда надо круглые а так нет..да?

Спустя 3 минуты, 11 секунд (29.01.2012 - 00:38) Winston написал(а):
Цитата (bob marley @ 28.01.2012 - 23:34)
Мне просто интересно почему работает-то блин

Когда разберешься - тогда поймешь.

Спустя 1 минута, 45 секунд (29.01.2012 - 00:39) bob marley написал(а):
Понял.
Все ясно!
Спасибо,винстон..Не зря я тебя курю! biggrin.gif

Спустя 32 секунды (29.01.2012 - 00:40) Winston написал(а):
Цитата (bob marley @ 28.01.2012 - 23:37)
если рядом два такого вида будет тогда надо круглые а так нет..да

Круглые скобки нужны для того, чтобы совпадение которое произойдет сохранилось в выходном массиве, имя этого массива передается 3-м параметром для ф-й preg_match и preg_match_all

Спустя 6 минут, 12 секунд (29.01.2012 - 00:46) bob marley написал(а):
человекЕ
вот тебе проверка на имя\логин\пароль:

<?php

/// Проверим имя:
preg_match('/^[А-Яа-я]{3,}$/', $name, $nametrue);
# Если имя написанное пользователем не менее 3ех символов и написано русскими буквами
#то $nametrue будет равно 1,а если нет,то 0!


/// Проверим логин:
preg_match('/^[A-Za-z0-9]{6,}$/', $login, $logintrue);
# Если логин состоит из английском языке и цифр и не менее 6ти символов
#то $logintrue будет равно 1,а если нет,то 0!


/// Проверим пароль:
preg_match('/^[A-Za-z0-9]){6,}$/', $password, $passwordtrue);
# Если пароль состоит из английском языке и цифр и не менее 6ти символов
#то $passwordtrue будет равно 1,а если нет,то 0!


?>


Думаю сам додумаешься что потом делать с переменными $nametrue и тд
У них значения если все верно - 1 или TRUE
если не верно то - 0 или FALSE
В переменные $name,$login,$password - то что ввели пользователи!
Поставишь +1 в карму за помощь по коду?и винстону обязательно! :)

Спустя 1 минута, 36 секунд (29.01.2012 - 00:48) Winston написал(а):
Цитата (bob marley @ 28.01.2012 - 23:39)
Не зря я тебя курю

Лучше мануал покури wink.gif

Спустя 1 минута, 21 секунда (29.01.2012 - 00:49) Winston написал(а):
Цитата (bob marley @ 28.01.2012 - 23:46)
preg_match('/^[A-Za-z0-9]{6,}$/', $login, $logintrue);

А если я логин хочу < 6 символов? smile.gif

Спустя 1 минута, 36 секунд (29.01.2012 - 00:51) Winston написал(а):
Достаточно

if(preg_match('/^[a-z\d]{3,15}$/iu', $login))
echo 'ok';
else
echo 'bad';

Спустя 48 секунд (29.01.2012 - 00:51) bob marley написал(а):
Winston
preg_match('/^[A-Za-z0-9]{,6}$/', $login, $logintrue);



Спустя 2 минуты, 9 секунд bob marley написал(а):
Winston
preg_match('/^[A-Za-z0-9]{6,12}$/', $login, $logintrue);
а так получается больше 6 но меньше 12 да?

Спустя 4 минуты, 1 секунда (29.01.2012 - 00:55) Winston написал(а):
>= 6 && <= 12

Спустя 31 минута, 18 секунд (29.01.2012 - 01:27) killer8080 написал(а):
Цитата (bob marley @ 28.01.2012 - 23:25)
Winston
http://phpprog.hut2.ru/
специально для тебя!!!
почему работает тогда?вот код:


<?php
$domain = parse_url($_SERVER['HTTP_HOST']);$domain = 'http://'.$domain['path'].'/';
if($_POST['mail'] != ''){
$pm = preg_match('/([A-Za-z0-9]{2})+\@+([A-Za-z0-9]{2})+\.+([A-Za-z]{2})/', $_POST['mail']);
if($pm == FALSE){$content = '<h4>Не верная структура е-майл: <font color="red">'.$_POST['mail'].'</font></h4>';}
if($pm == TRUE){
$content = '<h4>Подтвердите,что е-майл ваш!<br />Сообщение с проверкой придет на ящик: <font color="red">'.$_POST['mail'].'</font></h4>';
$url = rand('1', '99999');
mkdir($url);
$file = fopen($url.'/index.php', 'w+');
$filecontent = str_replace(array('{URL}', '{EMAIL}'),array($url, $_POST['mail']), '<?php $domain = parse_url($_SERVER["HTTP_HOST"]);$domain = "http://".$domain["path"]."/";$dir = "{URL}";$mail = "{EMAIL}";echo $mail; ?>');
fwrite($file, $filecontent);
fclose($file);
$title = 'Подтвердите подписку';
$contents = 'Ссылка для подтверждения: '.$domain.$url;
mail($_POST['mail'], $title, $contents);
}
}

?>

<?php
if($content != ''){echo $content;} /// Если есть ошибка,вывести их! ?>
<form method="post" action="">
Ваш е-майл: <input type="text" name="mail" <?php if($_POST['mail'] != ''){echo 'value="'.$_POST['mail'].'"';} /// Сохранять данные в блоке ?>><input type="submit" value="Подписаться">
</form>

Одно слово - говнокод.
Ты сам хоть понял зачем $_SERVER['HTTP_HOST'] совал в parse_url() ? user posted image

Спустя 9 часов, 42 минуты, 16 секунд (29.01.2012 - 11:09) человекЕ написал(а):
) спасибо. значит гавнокод будет работать, хоть и не имеет защиты?



Спустя 56 секунд человекЕ написал(а):
имею ввиду свой гавнокод

Спустя 55 минут, 21 секунда (29.01.2012 - 12:04) YVSIK написал(а):
Цитата (человекЕ @ 29.01.2012 - 11:10)
имею ввиду свой гавнокод

Слово говнокод имеется в виду что это не ругательное слово, это вполне конкретное определение как посыл к вашим действиям(обязательным т.с.), а что значит будет работать, может ДА а может и НЕТ , зависит от конкретного случая, как пример сложит пару или даже больше неких подобный файлов или отрезков, может и даже заработать, вот только о последствиях врят-ли кто сможет дать результат ожидаемый, последствия могут быть САМЫЕ НЕОЖИДАННЫЕ blink.gif

Спустя 8 минут, 26 секунд (29.01.2012 - 12:13) bob marley написал(а):
killer8080
мне на вашем форуме писали,что так нужно!
получается просто parse_url() так?Не работает,только с $_SERVER...
Вот в чем остальные ошибки?



<?php
$domain = parse_url($_SERVER['HTTP_HOST']);$domain = 'http://'.$domain['path'].'/';
if($_POST['mail'] != ''){
preg_match('/^[-A-Za-z0-9]{2,}+\@+[-A-Za-z0-9]{2,}+\.+[A-Za-z]{2,}$/', $_POST['mail'], $pm);
if($pm == FALSE){$content = '<h4>Не верная структура е-майл: <font color="red">'.$_POST['mail'].'</font></h4>';}
if($pm == TRUE){
$content = '<h4>Подтвердите,что е-майл ваш!<br />Сообщение с проверкой придет на ящик: <font color="red">'.$_POST['mail'].'</font></h4>';
$url = 'reg/'.rand('1', '99999');
mkdir($url);
$file = fopen($url.'/index.php', 'w+');
$filecontent = str_replace(array('{URL}', '{EMAIL}'),array($url, $_POST['mail']), '<?php $domain = parse_url($_SERVER["HTTP_HOST"]);$domain = "http://".$domain["path"]."/";$dir = "{URL}";$mail = "{EMAIL}";echo $mail; ?>');
fwrite($file, $filecontent);
fclose($file);
$title = 'Подтвердите подписку';
$contents = 'Ссылка для подтверждения: '.$domain.$url;
mail($_POST['mail'], $title, $contents);
}
}

?>

<?php
if($content != ''){echo $content;} /// Если есть ошибка,вывести их! ?>
<form method="post" action="">
Ваш е-майл: <input type="text" name="mail" <?php if($_POST['mail'] != ''){echo 'value="'.$_POST['mail'].'"';} /// Сохранять данные в блоке ?>><input type="submit" value="Подписаться">
</form>

Спустя 20 минут, 51 секунда (29.01.2012 - 12:34) YVSIK написал(а):
bob marley на мой взгляд ничего особенного не произойдет, если ты вдруг выложишь этот свой код в отдельно теме и вместе с ребятами разбереш его до косточки, а в этой теме не совсем уместно, тема не твояи ТС ждет ответы на свои вопросы а не на чужие , тем более он вполне их получил.

Спустя 11 часов, 33 минуты, 10 секунд (30.01.2012 - 00:07) killer8080 написал(а):
Цитата (человекЕ @ 29.01.2012 - 10:09)
) спасибо. значит гавнокод будет работать, хоть и не имеет защиты?



Спустя 56 секунд человекЕ написал(а):
имею ввиду свой гавнокод

Откуда мне знать, кода я так и не видел, только фрагменты. Логику регистрации ты так и не показал, одна функция и все. Как она вызывается? Где? Как можно сказать будет она работать, или нет? Показывай код целиком, будем обсуждать :)

P.S. на слово говнокод обижаться не стоит. Говнокодерство - всего лишь этап в развитии, каждый программист через него проходил. Не говнокодил тот, кто ничего не кодил ;)


Цитата (bob marley @ 29.01.2012 - 11:13)
killer8080
мне на вашем форуме писали,что так нужно!
получается просто parse_url() так?Не работает,только с $_SERVER...
Вот в чем остальные ошибки?

Не знаю кто, и что тебе писал. В $_SERVER['HTTP_HOST'] находится домен сайта, загляни в мануал, и посмотри для чего нужна parse_url()
сделай
echo $_SERVER['HTTP_HOST'];
и
$domain = parse_url($_SERVER['HTTP_HOST']);
echo 'http://'.$domain['path'].'/';

и сравни результат. ;)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.