Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Игра :о)
 
 автор: Vyacheslav Tsv.   (06.01.2010 в 14:34)   письмо автору
 
 

Давайте скрасим свой досуг и "расслабим" свой ум от обыденного напряжения .
Мы — поиграем.

Правила игры:
- первый игрок начинает игру;
- он пишет код (далее — вопрос — мини игра), в котором есть затаившаяся ошибка или несколько ошибок (далее — ответ);
- другие игроки предлагают варианты, где именно находится/находятся ошибка/и (дают ответ);
- игрок, который угадает сразу все ошибки — очередной победитель очередной мини игры;
- игрок, который угадал предыдущий вопрос задаёт новый (после того, как автор подтвердил, что он ответил правильно);
- на новый вопрос другие игроки вновь пытаются найти правильный ответ-разгадку.

Оформление: Дабы не запутаться в вопросах и ответах предлагаю:
1. Вопрос (код с ошибкой) писать в тегах «[ code ] [ /code ]» (без пробелов).
2. Ответы на вопрос писать без этих тегов.

Рейтинг: Предлагаю за каждый очередной правильный ответ на мини-игру игроку давать 1 балл, а после выстраивать таблицу рейтинга, просто для интереса.

ВАЖНО! Задавайте такие вопросы, на которые Вы сами знаете правильный ответ, т.е. Вы точно знаете, где находится ошибка в предложенном Вами коде.

  Ответить  
 
 автор: Vyacheslav Tsv.   (06.01.2010 в 14:35)   письмо автору
 
   для: Vyacheslav Tsv.   (06.01.2010 в 14:34)
 

Вопрос первый:
if ( !preg_match ( '/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i' , $email ) ) $error = true;

  Ответить  
 
 автор: sl1p   (06.01.2010 в 14:48)   письмо автору
 
   для: Vyacheslav Tsv.   (06.01.2010 в 14:35)
 

Вроде бы ошибка в [0-9a-z_^\.] символ "^" по-моему, ставится только в начале скобок)

  Ответить  
 
 автор: Николай2357   (06.01.2010 в 15:10)   письмо автору
 
   для: Vyacheslav Tsv.   (06.01.2010 в 14:35)
 

В этом коде нет ни одной ошибки. Потому что нет входящих условий для паттерна.

  Ответить  
 
 автор: Trianon   (06.01.2010 в 15:33)   письмо автору
734 байт
 
   для: Vyacheslav Tsv.   (06.01.2010 в 14:35)
 

Я тут набросал список из полдюжины пунктов, но игру рушить не хочу.
Так что пока ответ под замок --->
Пусть народ побалуется, чо...

  Ответить  
 
 автор: Николай2357   (06.01.2010 в 23:39)   письмо автору
 
   для: Trianon   (06.01.2010 в 15:33)
 

Ах соблазн расковырять. Я осмелюсь предположить, что там что то в плане 21-й задачи.
Но - терпение.

  Ответить  
 
 автор: heed   (07.01.2010 в 00:37)   письмо автору
 
   для: Николай2357   (06.01.2010 в 23:39)
 

кроме того что ^ там совсем не к месту , если проверяется е-мэйл-адрес
, там для этих самых адресов целое RFC придумано
, и такие адреса какие бывают в это выражение даже не влезут
, и наоборот влезут такие каких не бывает.
, и какие они бывают - лучше таких выражений и не делать совсем ,)
Больше ошибок вроде и нет

  Ответить  
 
 автор: Trianon   (07.01.2010 в 02:45)   письмо автору
 
   для: Николай2357   (06.01.2010 в 23:39)
 

вопроса там нет.

  Ответить  
 
 автор: Николай2357   (07.01.2010 в 11:07)   письмо автору
 
   для: Trianon   (07.01.2010 в 02:45)
 

Жаль.

  Ответить  
 
 автор: Vyacheslav Tsv.   (06.01.2010 в 16:33)   письмо автору
 
   для: Vyacheslav Tsv.   (06.01.2010 в 14:35)
 

Подсказка: ошибки в синтаксисе нет...

  Ответить  
 
 автор: Саня   (07.01.2010 в 12:56)   письмо автору
 
   для: Vyacheslav Tsv.   (06.01.2010 в 16:33)
 

А, я понял! Дело в смайлике?
z_^

  Ответить  
 
 автор: ~AquaZ~   (07.01.2010 в 14:13)   письмо автору
 
   для: Саня   (07.01.2010 в 12:56)
 

^ не к месту точно. И не понятно, что должен давать REGEXP. Из-за одной задачки столько флуда.

  Ответить  
 
 автор: Николай2357   (07.01.2010 в 14:53)   письмо автору
 
   для: Саня   (07.01.2010 в 12:56)
 

Это птичка))). Вообще он там не к месту, но не вредит. И считать это ошибкой вряд ли стоит. Шаблон будет работать. Вопрос - что он призван исключить. А раз условие не поставлено (ни где не написано, что это проверка емайла), значит код рабочий.

  Ответить  
 
 автор: Vyacheslav Tsv.   (07.01.2010 в 17:34)   письмо автору
 
   для: Николай2357   (07.01.2010 в 14:53)
 

Проверка e-mail указано в названии переменной - ищите подвохи )
Ещё подсказка: таких доменов не бывает.

P.S. Не думал, что первый вопрос будет уже такой сложный )

  Ответить  
 
 автор: Николай2357   (07.01.2010 в 17:59)   письмо автору
 
   для: Vyacheslav Tsv.   (07.01.2010 в 17:34)
 

Вопрос сложен в своей простоте. Если это не подвох, а действительно проверка строки на соответствие E-mail, то тогда пожалуйста. По порядку.
1. Нет привязки к началу и концу строки
2. В первой части паттерна (собственно названии ящика) не хватает дефиса.
3. Его же нет и в доменном имени.
4. В доменном имени не бывает символа подчеркивания.
5. Исключать точку там бессмысленно, так как в классе есть перечисление разрешенных.
6. {2,3} - почему 3... Я знаю зоны и из 6-ти. А уж 4 так вообще полно.

Ну, полдюжины набрал, хватит)).

  Ответить  
 
 автор: Vyacheslav Tsv.   (07.01.2010 в 21:23)   письмо автору
 
   для: Николай2357   (07.01.2010 в 17:59)
 

Николай2357 дал правильный ответ.
Молодец! Ты — первый победитель. Теперь ты вправе задать следующий вопрос.

  Ответить  
 
 автор: Trianon   (07.01.2010 в 21:57)   письмо автору
 
   для: Vyacheslav Tsv.   (07.01.2010 в 21:23)
 

пароль к моему ответу: 6
Я, кстати, кое-что упустил там.

Касательно п2. Николая дополню, что там не хватает не только дефиса.
набор символов в имени пользователя вообще ограничен мало.

  Ответить  
 
 автор: heed   (07.01.2010 в 22:15)   письмо автору
 
   для: Trianon   (07.01.2010 в 21:57)
 

плюс длина домена ограничена до 255 (если не ошибаюсь)
, минимальная длинна некоторых доменов второго уровня 2 , а некоторых 3
, плюс ещё куча правил типа апострофов кавычек и других разнообразных символов в именах пользователей и указания других параметров, кроме имени и домена

поиск по сохранённым rfc ни к чему хорошему не привёл , просще найти ссылку здесь ,)
http://xpoint.ru/forums/programming/perl/regexp/faq.xhtml

  Ответить  
 
 автор: Vyacheslav Tsv.   (07.01.2010 в 22:42)   письмо автору
 
   для: heed   (07.01.2010 в 22:15)
 

Люди, не ищите новых ошибок - вопрос уже устарел )
Во-вторых (тамо было в-первых), самые распространённые имена для e-mail адресов:
1. В домене может быть только a-z, 0-9 и -.
2. В имено только a-z, 0-9, _; Даже "-" разрешается не всеми почтовыми сервисами, также как ".", например.
3. Если у кого-то почтовый адрес вместе с "@" и "домен.зона" больше 33 символов - ну, это "надо же было такой ящик зарегистрировать" )

P.S. Найти можно много изъянов. Все ваши догадки (хоть и игра это всё) пойдут на пользу тем, кто ещё учится программированию и умеет читать что пишут. Давайте не будем столь категоричны, друзья ,)

  Ответить  
 
 автор: Николай2357   (08.01.2010 в 07:40)   письмо автору
 
   для: Vyacheslav Tsv.   (07.01.2010 в 21:23)
 

Ну вот такой тогда код. Там есть где развернуться.))
<?php

 
    $query 
"SELEKT * FROM table";
    
$result mysql_query($query);
    
    
$my_row mysql_fetch_array($result);
    
        do
        {
            
printf ("<div class='my_div'>%s</div>",$my_row["text"]);
        }
        while(
$my_rows mysql_fetch_array($result));

  Ответить  
 
 автор: Commander   (08.01.2010 в 08:04)   письмо автору
 
   для: Николай2357   (08.01.2010 в 07:40)
 

Сразу в глаза запрос бросается, надо так:
<?php
$query 
"SELECT * FROM table";
?>

  Ответить  
 
 автор: Николай2357   (08.01.2010 в 09:01)   письмо автору
765 байт
 
   для: Николай2357   (08.01.2010 в 07:40)
 

Перечень ошибок прикреплю, пока тоже с паролем. ============>

  Ответить  
 
 автор: sl1p   (08.01.2010 в 09:31)   письмо автору
 
   для: Николай2357   (08.01.2010 в 07:40)
 

1 $query = "SELECT * FROM table";
2 для "чистоты" лучше всего использовать mysql_fetch_assoc
3 непонятно зачем перед циклом $my_row = mysql_fetch_array($result);
4 глупый цикл который выполнится даже если записей нет, следует использовать while(){}
5 в sprintf всегда будет значение от пункта 2

  Ответить  
 
 автор: .heed   (08.01.2010 в 12:24)
 
   для: sl1p   (08.01.2010 в 09:31)
 

3 потомучто цикл do while , а не просто while

увидел только $my_rows - ошибка в имени переменной

  Ответить  
 
 автор: root   (08.01.2010 в 12:28)   письмо автору
 
   для: sl1p   (08.01.2010 в 09:31)
 

в первом пункте все равно ошибка.

  Ответить  
 
 автор: sl1p   (08.01.2010 в 12:45)   письмо автору
 
   для: root   (08.01.2010 в 12:28)
 

кавычки?

ну это смотря какое название таблицы :) оно же здесь к примеру.

  Ответить  
 
 автор: sl1p   (08.01.2010 в 12:46)   письмо автору
 
   для: sl1p   (08.01.2010 в 09:31)
 

тоесть в sprintf всегда будет значение от пункта 3($my_row), перепутал :)

  Ответить  
 
 автор: Николай2357   (08.01.2010 в 12:56)   письмо автору
 
   для: sl1p   (08.01.2010 в 12:46)
 

Ну за исключением пары пунктов все верно. Знач водит sl1p )))
Пароль к файлу - 1221.

  Ответить  
 
 автор: sl1p   (08.01.2010 в 13:38)   письмо автору
 
   для: Николай2357   (08.01.2010 в 12:56)
 

<?
$s 
"some string";
for(
$i 0$i strlen($s); $i++) {
    echo @${
$s[$i]}--;
}


ы я дятел, я знаю))
не умею придумывать такое :)

  Ответить  
 
 автор: Vyacheslav Tsv.   (08.01.2010 в 16:51)   письмо автору
 
   для: sl1p   (08.01.2010 в 13:38)
 

Просто должно быть:
$s = "some string";
$strlen = strlen ( $s );
for ( $i = 0; $i < $strlen; $i++ )
{
echo $s [ $i ];
}

  Ответить  
 
 автор: sl1p   (08.01.2010 в 16:55)   письмо автору
 
   для: Vyacheslav Tsv.   (08.01.2010 в 16:51)
 

ну тут даже, допустим, вопрос: почему цикл бесконечный)

  Ответить  
 
 автор: Vyacheslav Tsv.   (08.01.2010 в 19:12)   письмо автору
 
   для: sl1p   (08.01.2010 в 16:55)
 

Ну, конечный же - равный strlen символов.

  Ответить  
 
 автор: sl1p   (09.01.2010 в 00:41)   письмо автору
 
   для: Vyacheslav Tsv.   (08.01.2010 в 19:12)
 

всмысле равный?:)))

  Ответить  
 
 автор: Vyacheslav Tsv.   (09.01.2010 в 01:32)   письмо автору
 
   для: sl1p   (09.01.2010 в 00:41)
 

strlen определяет количество символов и потом выводим снова по одному символу до последнего.

В итоге скрипт:
$s = "some string";
$strlen = strlen ( $s ); // даст ответ - 11
for ( $i = 0; $i < $strlen; $i++ ) // выводит с 0 до 10
{
echo $s [ $i ];
}

  Ответить  
 
 автор: sl1p   (09.01.2010 в 17:12)   письмо автору
 
   для: Vyacheslav Tsv.   (09.01.2010 в 01:32)
 

нет, не правильно :)
со strlen всё в порядке.

  Ответить  
 
 автор: Vyacheslav Tsv.   (10.01.2010 в 00:05)   письмо автору
 
   для: sl1p   (09.01.2010 в 17:12)
 

Тогда я не понял, что Вы хотите )

  Ответить  
 
 автор: .heed   (10.01.2010 в 12:32)
 
   для: sl1p   (09.01.2010 в 17:12)
 

там собака '@' совсем не к месту разлеглась ,)

  Ответить  
 
 автор: sl1p   (10.01.2010 в 16:28)   письмо автору
 
   для: .heed   (10.01.2010 в 12:32)
 

та к месту :)

хочу чтобы вы сказали почему именно мой код не измененный приводит к бесконечному циклу со всеми собаками т .д.:)

  Ответить  
 
 автор: Vyacheslav Tsv.   (11.01.2010 в 01:07)   письмо автору
 
   для: sl1p   (10.01.2010 в 16:28)
 

Вот непонятно, почто у тебя "--" стоит )

  Ответить  
 
 автор: sl1p   (11.01.2010 в 04:18)   письмо автору
 
   для: Vyacheslav Tsv.   (11.01.2010 в 01:07)
 

ну не по что.. я ж сказал код тупой и бессмысленый:)

вобщем
при каждом проходе цикла создаётся переменная с именем сдед. символа в строке $s = "some string";
тоесть получается:
$s--;
$o--;
$m--;
$e--;
и т.д.

и когда доходит то $i в слове "string" уменьшает её на единицу что и создаёт бесконечный цикл:)

  Ответить  
 
 автор: Vyacheslav Tsv.   (11.01.2010 в 12:44)   письмо автору
 
   для: sl1p   (11.01.2010 в 04:18)
 

«Ты почто боярыню обидел» или «зачем раскрыл все карты»? (((

  Ответить  
 
 автор: ~AquaZ~   (11.01.2010 в 14:42)   письмо автору
 
   для: sl1p   (11.01.2010 в 04:18)
 

>вобщем...
Только что хотел сказать!.. Задавайте новый вопрос!

  Ответить  
 
 автор: Vyacheslav Tsv.   (12.01.2010 в 00:08)   письмо автору
 
   для: sl1p   (11.01.2010 в 04:18)
 

sl1p, раз карты открыл — тебе и флаг в руки снова.

В Этой мини-игре никто не одержал победы.

  Ответить  
 
 автор: ~AquaZ~   (12.01.2010 в 01:37)   письмо автору
 
   для: Vyacheslav Tsv.   (12.01.2010 в 00:08)
 

>тебе и флаг в руки
Флаг в руки и паровоз напротив. :)
А вопрос был сложный, можно было помучать народ!

  Ответить  
 
 автор: Vyacheslav Tsv.   (15.01.2010 в 22:58)   письмо автору
 
   для: sl1p   (11.01.2010 в 04:18)
 

Что молчишь, sl1p?

  Ответить  
 
 автор: Vyacheslav Tsv.   (18.09.2010 в 22:56)   письмо автору
 
   для: Vyacheslav Tsv.   (06.01.2010 в 14:34)
 

Попробуем возобновить игру ,)

Очень простой для этого пример:
<?php
for ( $i 0$i $count$i++ )
{
    if ( 
$i 20 && $i 10 ) echo'От 10 до 20';
    else continue;
}
?>

  Ответить  
 
 автор: psychomc   (19.09.2010 в 01:31)   письмо автору
 
   для: Vyacheslav Tsv.   (18.09.2010 в 22:56)
 

на первый взгляд бесконечный цикл если $count < 0
ну и сам $count не определен нигде

чуть позже:
и еще не от 10 до 20, а от 11 до 19 )

  Ответить  
 
 автор: Gubichev   (19.09.2010 в 04:26)   письмо автору
 
   для: Vyacheslav Tsv.   (18.09.2010 в 22:56)
 

Ошибки две:
1) $count не определена
2) "$i>$count" не имеет смысла если $i<$count

  Ответить  
 
 автор: Trianon   (19.09.2010 в 12:21)   письмо автору
 
   для: Gubichev   (19.09.2010 в 04:26)
 

как-то что-то мало.
3) else не имеет смысла в конце составного оператора
4) continue не имеет смысла в конце тела цикла
5) переменная $count не определена

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

  Ответить  
 
 автор: Vyacheslav Tsv.   (03.01.2011 в 14:04)   письмо автору
 
   для: Trianon   (19.09.2010 в 12:21)
 

По незнанию нет никаких ) Пока полного ответа не вижу )))

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования