За последние 24 часа нас посетили 22562 программиста и 1583 робота. Сейчас ищет 1151 программист ...

Дайте пожалуйста советов. Пишу форум... Все вопросы в теме

Тема в разделе "PHP для новичков", создана пользователем Riddick, 9 авг 2008.

  1. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    Вот такие проблемы вышли. Пишу форумчик. Ну простой будет конечно, но все равно хотелось бы сделать нормальный код, и чтобы по возможности максимально "грамотный". Не хотел создавать темы в форуме, но когда постучал 2 людям в асю, так и ответа не дождался

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

    Теперь задача состоит в том чтобы сделать систему разделов, тем и сообщений(думаю поняли о чем я). То есть сообщения храняться в бд, могу это осуществить, но у меня не хватает теории по структуре самой бд с сообщениями.
    Как она должна выглядеть? Сколько таблиц должно быть? Если на Разделы взять 1 таблицу, на Темы 1 таблицу. И на каждую тему создавать таблицу для хранения сообщений, это правильно? Я пока могу себе представить это только так.

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

    И второй вопрос: хочу сделать проверку "Онлайн". Н-р если человек на форуме, то подсвечивать его ник Зеленым цветом. Кода не прошу, постараюсь сделать сам, опишите только что и как тут нужно использовать?
    Метод по которому это работает.

    P.S: Пожалуйста, помогите, я живу далеко в провинции, о php в моем городке кроме меня наверное врядли кто еще что-то слышал.

    Заранее спасибо
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Примитивный форум...
    `Users` -> id login pwd
    `topics` -> id name date author_id text
    `msgs` -> id topic_id author_id date text

    Нет.

    Просто в таблице msgs сделать topic_id ключом, чтобы выборка происходила быстрее.


    Создаете таблицу users_online. При входе пользователя на форум (старте сессии) записываете его туда. И так каждого, а при каждом обновлении страницы перезаписываете временную метку. Потом читаете - получается список пользователей онлайн.
    Каждые 15 минут по таблице необходимо проходиться скриптом и удалять записи, временные значения которых превышают 15 минут. Либо проверять таблицу при каждой загрузке страницы пользователем.
     
  3. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    Спасибо.

    :D Спасибо, буду работать, потом сообщу что получилось. Блин как-то даже не подумал о некоторых вещах, вы меня направили :)

    Да хотелось бы попросить Администрацию не закрывать эту тему. По мере появления вопросов просто буду сдесь вам отписывать, чтобы лишний раз не марать форум. Да и думаю будет полезно другим, ведь скорее всего не у меня одного появляються такие вопросы.
     
  4. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    Так возник следующий вопрос. Я забыл сделать.
    Подскажите как можно проверить размеры загруженой через браузер аватарки? Чтобы размер был н-р 100*100?[/i]
     
  5. marcuss

    marcuss Активный пользователь

    С нами с:
    6 авг 2008
    Сообщения:
    54
    Симпатии:
    0
    тоже интересно...
     
  6. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    getimagesize()
    Ps. Не рановато форум?
     
  7. Citius

    Citius Активный пользователь

    С нами с:
    10 апр 2008
    Сообщения:
    70
    Симпатии:
    0
    При получении файла на сервер вся нужная инфа храниться в массиве $_FILES, так вот $_FILES[size] и будет размер передаваемого файла
     
  8. marcuss

    marcuss Активный пользователь

    С нами с:
    6 авг 2008
    Сообщения:
    54
    Симпатии:
    0
    на сколько я понял он спрашивал разрешение, не могли бы вы написать эту функцию?
     
  9. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    marcuss
    чем тебя ЛИЧНО не устраивает getimagesize() ? Напиши, пожалуйста, поподробнее.
     
  10. marcuss

    marcuss Активный пользователь

    С нами с:
    6 авг 2008
    Сообщения:
    54
    Симпатии:
    0
    я прописываю echo getimagesize('img.gif');
    Мне выводит слово array.
     
  11. marcuss

    marcuss Активный пользователь

    С нами с:
    6 авг 2008
    Сообщения:
    54
    Симпатии:
    0
    Блин надо почаще справочником пользоваться...
    Извиняюсь, надо было так
    $a=getimagesize('img.gif');
    echo $a['0'].'*';
    echo $a['1'];
     
  12. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    Обижаешь Mr.M.I.T. Я уже несколько раз перерыл книгу свою по Php: "Разработка Web-приложений на PHP 5" А.В Олищук и А.Н.Чаплыгин. Помимо этого читал другие книги, но там скорее пользовался как справочником.

    Очень долгое время(правда с перерывами). Сидел по разным форумам. Раньше на CodeNet(там на C++ в основном и к Олимпиаде готовиться помогали), сейчас когда появилось немного свободного времени занялся php серьезнее, тут больше специалистов по области, перешел сюда :) .

    Написал некоторые другие свои скрипты. Гостевую книгу, Опрос там вроде счетчик...

    Программирование во мне развиваеться только посредством практики. Когда возникают четкие вопросы по задаче.

    мой ответ: не рановато. Лучше сейчас, чем никогда




    Честно функцию вижу впервые, в моей книги её нет. За это огромное спасибо.

    P.S: Всё уже добавил в форумчик. Сделан еще один шаг. :D
     
  13. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    У меня та же книга, там много чего нет. Некоторые вещи написаны не совсем верно, к сожалению. Но, тем не менее, это отличное начало в изучении PHP. Но только лишь начало.
     
  14. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    exif_imagetype

    (только PHP 4 CVS)

    exif_imagetype - определяет тип изображения.
    Описание

    int|false exif_imagetype ( string filename)

    exif_imagetype() читает первые байты изображения и проверяет его подпись. Если корректная подпись найдена, возвращается константа, иначе возвращается FALSE. Возвращается то же значение, что и из getimagesize() в индексе 2, но эта функция работает намного быстрее.

    Определены следующие константы: 1 = IMAGETYPE_GIF, 2 = IMAGETYPE_JPG, 3 = IMAGETYPE_PNG, 4 = IMAGETYPE_SWF, 5 = IMAGETYPE_PSD, 6 = IMAGETYPE_BMP, 7 = IMAGETYPE_TIFF_II (intel byte order), 8 = IMAGETYPE_TIFF_MM (motorola byte order), 9 = IMAGETYPE_JPC, 10 = IMAGETYPE_JP2, 11 = IMAGETYPE_JPX.

    Эта функция может использоваться для исключения других exif-функций с неподдерживаемыми типами файлов или в сочетании с $_SERVER['HTTP_ACCEPT'] для проверки того, может ли зритель видеть данное конкретное изображение в своём браузере.

    Примечание: Эта функция доступна только в PHP 4, скомпилированном с --enable-exif.

    Эта функция не требует наличия библиотеки GD image.

    Подумал может кому пригодиться. Ничего такого что спер с phpclub надеюсь
     
  15. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    определённо книга не фонтан...
    Зы. Надеюсь это не в ней написанно про таблицу сообщений для каждой темы?
     
  16. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Не, книга хорошая, просто там Notice-ошибки допускают и умалчивают об этом.
     
  17. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Спорим, в книге ещё многих функций нет? :)

    Используй сайт http://php.net для поиска функций, по такой системе: например, надо функцию которая бы обрезала текст. Заходи на php.net, там в доки, потом в строковые (текст это string) функции и смотри список функций с коротким описанием. Очень удобно.

    А когда тебе дают функцию, которую ты не знаешь, заходи так: http://php.net/функция.
    Например, функция getimagesize(): http://php.net/getimagesize.

    Я много функций помню, но всё равно в Опере по "p функция" в адресной строке перекидывает на http://php.net/функция. Я не компьютер - памяти не докупишь. :)
     
  18. marcuss

    marcuss Активный пользователь

    С нами с:
    6 авг 2008
    Сообщения:
    54
    Симпатии:
    0
    Только там скуповато функции обьясняют...
     
  19. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    marcuss, нормально там обьясняют. С примерами, блэкджеком и шлюхами. Плюс иногда полезные комментарии можно встретить.

    P.S. Но если "скуповато" это не на три главы, то да - скуповато. :)
     
  20. marcuss

    marcuss Активный пользователь

    С нами с:
    6 авг 2008
    Сообщения:
    54
    Симпатии:
    0
    угу, мне особенно понравилось как там обьясняют функцию preg_match();
    дали один примерчик без обьяснений и попробуй разобраться...
     
  21. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    Не волнуйся. Это я сам так предположил, зная что неверно, я у вас и спросил.

    Даже не сомневаюсь. Но книга очень полезная для начинающего.


    Ну я как бы тоже догадался так делать :D Для подробного изучения функций, поисковик даст ссылки с описанием :)
     
  22. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    marcuss, http://php.net/preg_match тут несколько полноценных примеров. Чё-то ты путаешь.
     
  23. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  24. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Sergey89, там в меню слева ссылка на описание релулярных выражений не даром имеется. ;)
     
  25. marcuss

    marcuss Активный пользователь

    С нами с:
    6 авг 2008
    Сообщения:
    54
    Симпатии:
    0
    PHP:
    1.  
    2. <?php
    3. // Извлекаем имя хоста из URL
    4. preg_match("/^(http:\/\/)?([^\/]+)/i",
    5.     "http://www.php.net/index.html", $matches);
    6. $host = $matches[2];
    7. ?>
    8.  
    И где там этого описание?