[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите прописать условия..
denlam
Нужно написать три условия
1)
Если переменная $balans имеет только цифры, то продоожить...
2)
Если переменая $login имеет только латинские символы и цифры, то продолжить
3)
Если у переменной $balans последняя цифра "1", то $rub = "рубль";
Если у переменной $balans последняя цифра "2", то $rub = "рубля";
Если у переменной $balans последняя цифра "3", то $rub = "рубля";
Если у переменной $balans последняя цифра "4", то $rub = "рубля";
Если у переменной $balans последняя цифра "5", то $rub = "рублей";
Если у переменной $balans последняя цифра "6", то $rub = "рублей";
Если у переменной $balans последняя цифра "7", то $rub = "рублей";
Если у переменной $balans последняя цифра "8", то $rub = "рублей";
Если у переменной $balans последняя цифра "9", то $rub = "рублей";
Если у переменной $balans последняя цифра "0", то $rub = "рублей";



Спустя 37 минут, 47 секунд (20.06.2010 - 15:52) Ice написал(а):

if(intval( $balans ) ) {
continue;
}

if( preg_match( '/^[\w\d]+$/' ) ) {
continue;
}

а насчёт третьего нужно еще учесть, что есть такие пресловутые числа, как 11, 12, 13 и 14 рублей


if( $balans != 11 &&
$balans != 12 &&
$balans != 13 &&
$balans != 14 ) {
switch( substr( $balans, -1, 1) ) {
case 1: $rub = 'рубль'; break;
case 2:
case 3:
case 4: $rub = 'рубля'; break;
case 5:
case 6:
case 7:
case 8:
case 9:
case 0: $rub = 'рублей'; break;
default: $rub = '???';
}
}
else {
$rub = 'рублей';
}
print $balans .' '. $rub;

Спустя 3 минуты, 33 секунды (20.06.2010 - 15:55) Crash2007 написал(а):

3)
if($balans == 1) $rub = 'рубль';
elseif($balans == 2 or $balans == 3 or $balans == 4) $rub = 'рубля';
else $rub = 'рублей';

Спустя 44 минуты, 4 секунды (20.06.2010 - 16:39) denlam написал(а):
Ice
прописал
if( preg_match( '/^[\w\d]+$/' ) ) {
continue;
}

Теперь ваще хрен пройдешь эту проверку, пишу даже просто латинскими, всё равно вылезает то что в else...может что-то неправильно?
Повторюсь, условие такое что нужно проверить чтобы не было никаких символов кроме латинских букв и цифр, если ничего лишнего нет в переменной $login то продолжаем...
А стоп!!! в условии
if( preg_match( '/^[\w\d]+$/' ) ) {
continue;
}
мы же не указали что нужно проверять переменную $login !! куда это нужно прописать?

Спустя 30 минут, 56 секунд (20.06.2010 - 17:10) Ice написал(а):
слушайте, ну я же как пример условий написал, в соответствии с Вашим, заметьте заданием, а не готовое приложение.
Вместо continue должны быть инструкции, которые требуется выполнить при прохождении проверки.

Да, прошу прощения, ступил:

if( preg_match( '/^[\w\d]+$/', $login ) ) {
// инструкции
}


даже, если мне не изменяет память, можно и так:

if( preg_match( '/^\w+$/', $login ) ) {
// инструкции
}



Спустя 1 час, 10 минут, 28 секунд (20.06.2010 - 18:21) denlam написал(а):
почему-то пропускает русские символы, может я что-то неправильно написал? пожалуйста посмотрите
if($_GET[act] == "2"){
if (isset($_POST[reglogin]) & $_POST[reglogin] != "")
{
if( preg_match( '/^\w+$/', $_POST[reglogin]))
{
if (isset($_POST[regpass]) & $_POST[regpass] != "")
{
if (isset($_POST[regpass2]) & $_POST[regpass2] != "")
{
if ($_POST[regpass] == $_POST[regpass2])
{
if (isset($_POST[regemail]) & $_POST[regemail] != "")
{
$_POST[reglogin] = trim(htmlspecialchars($_POST[reglogin]));
$_POST[regpass] = trim(htmlspecialchars($_POST[regpass]));
$_POST[regemail] = trim(htmlspecialchars($_POST[regemail]));
$checklogin = mysql_query("select * from login where login='$_POST[reglogin]'");
if(mysql_num_rows($checklogin) == 0)
{
$checkemail = mysql_query("select * from login where email='$_POST[regemail]'");
if(mysql_num_rows($checkemail) == 0)
{
$reg = mysql_query("insert into login set login='$_POST[reglogin]',pass='$_POST[regpass]',email='$_POST[regemail]'");
if($reg == true)
{
/* отправляем письмо зарегистрировавшемуся! */
if(substr(PHP_OS, 0, 3) == "WIN")
$n = "\r\n";
else
$n = "\n";
$to = $_POST[regemail];
$from = 'robot@icq123.ru';
$subject = "Вы успешно зарегистрированы в мегамаркете семизначных уинов icq123.ru !";
$headers .= 'From: <'. $from .'>'. $n;
$message = "Здравствуйте! Вы успешно зарегистрированы! Ваши данные для входа: \n Логин: ".$_POST[reglogin]." \n Пароль: ".$_POST[regpass]."";
mail($to, $subject, $message, $headers);
/* отправляем письмо зарегистрировавшемуся! */
$_SESSION[reg_results] = "Вы успешно зарегистрированы в качестве продавца! Теперь можете войти под своим логином.";
}
}
else {$_SESSION[reg_results] = "К сожалению, аккаунт с таким email уже занят, попробуйте другой Email!";}
}
else {$_SESSION[reg_results] = "К сожалению, этот логин уже занят, попробуйте другой!";}
}
else {$_SESSION[reg_results] = "Вы не ввели EMAIL !";}
}
else {$_SESSION[reg_results] = "Введенные пароли не совпадают!";}
}
else {$_SESSION[reg_results] = "Подтвердите пароль!";}
}
else {$_SESSION[reg_results] = "Вы не ввели пароль!";}
}
else {$_SESSION[reg_results] = "Логин может состоять только из английских букв и цифр!";}
}
else {$_SESSION[reg_results] = "Вы не ввели логин!";}
$URL= "seller.php?p=reg&act=1";
header("Location:$URL");
exit();
}


Символы %^$ и так далее блокирует - правильно. а русские символы всё равно пропускает, чего нельзя делать..

Спустя 9 минут, 37 секунд (20.06.2010 - 18:30) Ice написал(а):
наверное, я всё же забыл, что такое \w, поэтому попробуем так:
if( preg_match( '/^[a-z\d]+$/', $_POST['reglogin'] ) )

или так
if( preg_match( '/^[0-9a-z]+$/', $_POST['reglogin']))

Как больше нравится.

Спустя 2 минуты, 49 секунд (20.06.2010 - 18:33) denlam написал(а):
О спасибо большое!!!

Спустя 2 минуты, 10 секунд (20.06.2010 - 18:35) Ice написал(а):
нужна станет регистронезависимость, напишете так:
if( preg_match( '/^[0-9a-z]+$/i', $_POST['reglogin'] ) )

Незачто smile.gif
____________________

Кстати говоря не встречал конструкцию c таким оператором ( & )

if (isset($_POST[regpass]) & $_POST[regpass] != "")


и отшлифовал бы подобные участки кода так:

if ( isset( $_POST['regpass'] ) && ! empty( $_POST['regpass'] ) )

или так

if ( isset( $_POST['regpass'] ) && empty( $_POST['regpass'] == false ) )

Спустя 1 час, 12 минут, 5 секунд (20.06.2010 - 19:48) denlam написал(а):
окей спасибо:) исправил!
Может быть уже не по теме, но меня также интересует,
какое условие нужно прописать чтобы проверял email на правильность ввода ?

Спустя 1 час, 14 минут, 15 секунд (20.06.2010 - 21:02) Ice написал(а):
Для простой проверки на валидность электронного адреса, можно воспользоваться, например, такой регуляркой:

$pattern = /^[a-z0-9_-]+
?:\.[
a-z0-9_-]+)*
@[a-z0-9_-]+
(?:\.[
a-z]{2,6})
$/ix

Более полно с форматом сообщений электропочты можно ознакомиться в RFC 2822

Спустя 19 часов, 35 минут, 7 секунд (21.06.2010 - 16:37) denlam написал(а):
то есть чтобы проверить переменную $email мне нужно прописать

$pattern = "/^[a-z0-9_-]+
?:\.[a-z0-9_-]+)*
@[a-z0-9_-]+
(?:\.[a-z]{2,6})
$/ix"
;
if( preg_match( '".$pattern."', $email ) )
{}

так?

Спустя 1 час, 27 минут, 27 секунд (21.06.2010 - 18:04) Ice написал(а):
да

if( preg_match( $pattern, $email ) ){}

Спустя 9 минут, 51 секунда (21.06.2010 - 18:14) denlam написал(а):
Написал

$pattern = "/^[a-z0-9_-]+
?:\.[a-z0-9_-]+)*
@[a-z0-9_-]+
(?:\.[a-z]{2,6})
$/ix"
;
if( preg_match( $pattern, $email ) )

Выкидывает всё время в else, даже если правильно пишу мыло

Спустя 14 минут, 32 секунды (21.06.2010 - 18:29) Ice написал(а):
блин, я чтоль ошибку профукал, сорри, тут ошибка



$pattern = "/^[a-z0-9_-]+
(?:\.[a-z0-9_-]+)*
@[a-z0-9_-]+
(?:\.[a-z]{2,6})
$/ix";
if( preg_match( $pattern, $email ) )

перед вопросом-двоеточием скобку пропустил - несохранеяющая группировка. Еще раз сорри.

Спустя 1 минута, 33 секунды (21.06.2010 - 18:30) tomash написал(а):
$pattern = "/^[a-z0-9_-]+
(?:\.[a-z0-9_-]+)*
@(?:[a-z0-9_-]+\.)*
[a-z]{2,6}
$/ix"
;


А так???

Спустя 8 минут, 36 секунд (21.06.2010 - 18:39) denlam написал(а):
блиин че-то не идет.. смотрите код


if ( isset( $_POST['regemail'] ) && ! empty( $_POST['regemail'] ) )
{
$_POST[regemail] = trim(htmlspecialchars($_POST[regemail]));
$pattern = "/^[a-z0-9_-]+
(?:\.[a-z0-9_-]+)*
@[a-z0-9_-]+
(?:\.[a-z]{2,6})
$/ix"
;
if( preg_match( $pattern, $email ) )
{
$_POST[reglogin] = trim(htmlspecialchars($_POST[reglogin]));
$_POST[regpass] = trim(htmlspecialchars($_POST[regpass]));
$checklogin = mysql_query("select * from login where login='$_POST[reglogin]'");
if(mysql_num_rows($checklogin) == 0)
{
$checkemail = mysql_query("select * from login where email='$_POST[regemail]'");
if(mysql_num_rows($checkemail) == 0)
{
$reg = mysql_query("insert into login set login='$_POST[reglogin]',pass='$_POST[regpass]',email='$_POST[regemail]'");
if($reg == true)
{
/* отправляем письмо зарегистрировавшемуся! */
if(substr(PHP_OS, 0, 3) == "WIN")
$n = "\r\n";
else
$n = "\n";
$to = $_POST[regemail];
$from = 'robot@icq123.ru';
$subject = "Вы успешно зарегистрированы в мегамаркете семизначных уинов icq123.ru !";
$headers .= 'From: <'. $from .'>'. $n;
$message = "Здравствуйте! Вы успешно зарегистрированы! Ваши данные для входа: \n Логин: ".$_POST[reglogin]." \n Пароль: ".$_POST[regpass]."";
mail($to, $subject, $message, $headers);
/* отправляем письмо зарегистрировавшемуся! */
$_SESSION[reg_results] = "Вы успешно зарегистрированы в качестве продавца! Теперь можете войти под своим логином.";
}
}
else {$_SESSION[reg_results] = "К сожалению, аккаунт с таким email уже занят, попробуйте другой Email!";}
}
else {$_SESSION[reg_results] = "К сожалению, этот логин уже занят, попробуйте другой!";}
}
else {$_SESSION[reg_results] = "Корректно вводите EMAIL !";}
}
else {$_SESSION[reg_results] = "Вы не ввели EMAIL !";}



Может я где-то запутался?
Форма регистрации лежит здесь http://icq123.ru/seller.php?p=reg

Спустя 2 минуты, 22 секунды (21.06.2010 - 18:41) denlam написал(а):
упс.. исправил свой недочет,
надо было не
if( preg_match( $pattern, $email ) )

а
if( preg_match( $pattern, $_POST[regemail] ) )


laugh.gif наконец!!!

Спустя 2 минуты, 55 секунд (21.06.2010 - 18:44) Ice написал(а):
а какой у тебя емейл?smile.gif мой boeing86@bk.ru прошел я зареган продавцом)
---------------------
а то я и смотрю где переменну-то потерял biggrin.gif

Спустя 1 минута, 27 секунд (21.06.2010 - 18:46) tomash написал(а):
1.regemail в кавычки;
$_POST[regemail] = trim(htmlspecialchars($_POST[regemail])); 

и все переменные поправь $_POST[reglogin, $_POST[regpass]
2. поправь регулярку, а то у тебя с мылом зарегестрировыных с домено 3 уровня проблемы будут

3. Не используй в запросах глоб. переменные, объяви локальные, передай им значения

3. что такое if($reg == true) ?????
исправь на if (mysql_affected_rows ($res)>0)

дальше пока не смотрел)))

Спустя 31 секунда (21.06.2010 - 18:46) tomash написал(а):
Ice
А попрбуй www@www.com.ua

Спустя 6 минут, 33 секунды (21.06.2010 - 18:53) Ice написал(а):
Цитата (tomash @ 21.06.2010 - 19:46)
Ice
А попрбуй www@www.com.ua

без проблем пройдет smile.gif

"/^[a-z0-9_-]+
(?:\.[a-z0-9_-]+)*
@(?:[a-z0-9_-]+\.)*
[a-z]{2,6}
$/ix";

Спустя 59 секунд (21.06.2010 - 18:54) tomash написал(а):
Ice
А у меня не проходит wink.gif

Спустя 1 минута, 3 секунды (21.06.2010 - 18:55) denlam написал(а):
tomash
Исправил два пункта из твоих замечаний.
А почему нельзя использовать глобальные переменные, разве что-то изменится из-за этого?


P.S. www@www.com.ua не прошел ohmy.gif как исправлять? я в регулярках не шарю совсем.

Спустя 2 минуты, 29 секунд (21.06.2010 - 18:57) tomash написал(а):
denlam
Я там выше постил)))

Цитата
А почему нельзя использовать глобальные переменные, разве что-то изменится из-за этого?

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

Спустя 2 минуты, 12 секунд (21.06.2010 - 18:59) Ice написал(а):
Цитата (tomash @ 21.06.2010 - 19:54)
Ice
А у меня не проходит wink.gif


<?php
$email = 'www@www.com.ua';
$pattern = "/^[a-z0-9_-]+
(?:\.[a-z0-9_-]+)*
@(?:[a-z0-9_-]+\.)*
[a-z]{2,6}
$/ix"
;

if( preg_match($pattern, $email) ) {
print 'valid';
} else {
print 'invalid';
}
?>


и кэш обнулил, и всё.... проходит, хоть тресни! biggrin.gif

Спустя 1 минута, 36 секунд (21.06.2010 - 19:01) tomash написал(а):
Ice
Ну в таком виде да)))) А в первоначальном

"/^[a-z0-9_-]+(?:\.[a-z0-9_-]+)*@[a-z0-9_-]+(?:\.[a-z]{2,6})$/ix"

не проходит

Спустя 2 минуты, 14 секунд (21.06.2010 - 19:03) Ice написал(а):
всё, проа кончать бухать smile.gif

Спустя 1 минута, 32 секунды (21.06.2010 - 19:05) denlam написал(а):
Ice
Да, исправил как ты последний раз написал. Теперь работает!

Спустя 3 минуты, 8 секунд (21.06.2010 - 19:08) denlam написал(а):
Ууу извиняю за нагруженку со свими проблемами, есть вопрос...
У меня такая проблема, вот допустим человек набрал в форму и отправил уин на модерацию (там через глобальную $_POST идет).
Так вот, после того как отправилось ему высвечивается на экране "успешно отправлено на модрацию". если он обновит эту страницу то эта информация снова отправляется! Как бороться с этим?

Спустя 3 минуты, 54 секунды (21.06.2010 - 19:12) tomash написал(а):
header (location:...) попробуйте

Спустя 7 минут, 43 секунды (21.06.2010 - 19:20) denlam написал(а):
я пробовал, это не подходит по причине, что header (location:...) находится где-то посередине страницы и поэтому при попытке сделать это выходит "header already sent", но конструкция страницы никак не позволяет header (location:...) поместить наверх страницы.

Есть еще варианты? у меня есть идея перед добавлением проверять "есть ли уже в базе данных такой уин"... но может есть идеи получше?

Спустя 30 минут, 28 секунд (21.06.2010 - 19:50) Ice написал(а):
есть буферизация вывода: функции ob_. Но это всё знак того, по-моему, что архитектура продумана недостаточно хорошо.

Спустя 1 час, 9 минут, 45 секунд (21.06.2010 - 21:00) tomash написал(а):
Ice
Полностью согласен!

denlam
Пересмотрите структуру, если нельзя исправить, используйте буферизацию!
http://www.ru-coding.com/php_13.php

Спустя 2 часа, 54 минуты, 20 секунд (21.06.2010 - 23:54) denlam написал(а):
окей, спасибо=)
Быстрый ответ:

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