| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Помогите научиться программировать на PHP |
| Автор: Redstuff 2.7.2006, 13:25 |
| Хочу изучить PHP, с Вашей помощью. Т.к. заданий нет, а придумать самому бывает очень сложно, а то никак навыки не закрепить. Или если есть у кого-нибудь какая-нибудь книга с заданиями выложите плиз. Хотелось бы начать изучение с САМЫХ основ, чтобы закрепить материал, прочитанный из книг. (Переменные и типы данных; Выражения, операторы и управляющие конструкции) - вот с этого )). |
| Автор: PARROT 2.7.2006, 18:34 |
| Зайди сюда http://forum.vingrad.ru/index.php?showtopic=39074 |
| Автор: Redstuff 2.7.2006, 19:56 |
| Был там ) Там сразу задания идут сложные, я хочу начинать с самого простого, с нуля, чтобы закрепить всё. Если есть такая возможность дайте задания, я сразу буду писать сдесь, а вы поправлять, если что-то не так. Заодно синтаксит выучу. |
| Автор: HuKoLaU 3.7.2006, 01:18 |
| Там несильно сложные задания, да и что значит легкое, тебе будет это неинтерестно. Попробуй напиши запись и вывод сообщений. Форма: поле для ввода сообщения и кнопка отправить. Сообщение записывается в БД(или в файл, но лучше в БД). Потом выводятся все сообщения и форма. Простенькая гостевая |
| Автор: Redstuff 3.7.2006, 20:15 | ||
| Пока сделал только, чтобы сохранял в файл. guest.php
|
| Автор: Redstuff 4.7.2006, 16:11 |
| Не ужели все хорошо написал, что нагоняев не будет? Жду тогда еще заданий. |
| Автор: BobiKK 4.7.2006, 19:29 | ||
| Я, конечно, не профессионал, но выскажусь: 1) Данные я бы всё-таки передавал методом POST 2) Перед началом скрипта я бы проверял на какое-нибудь услвоие типа
3) Кажется, правильней писать $_GET['text'], a не $_GET["text"] |
| Автор: Redstuff 4.7.2006, 20:38 | ||
| http://redstuff.xost.ru/guest.php guest.php
|
| Автор: Platon 4.7.2006, 21:40 |
| Redstuff, глянь на свою страничку. Прости, если что не так |
| Автор: Redstuff 4.7.2006, 22:47 |
| Platon, да понятное дело, не ставил я блокировку тегов и прочего, чем через формы можно наломать. Ну на счет 2х дней я сомневаюсь, т.к. скриптов навалом в инете подобных ;) Лучше бы поделу что-нибудь написал )) |
| Автор: Platon 5.7.2006, 10:15 |
| По делу? По делу если тока другому. Я сам не против научиться. Но хочу сразу начать с форума. И первой же преградой стала установка сервера. Локальный то понятно. А как ты сделал чтоб тебя добрая половина человечества видела? |
| Автор: st1ng3r 5.7.2006, 10:21 | ||||||
А вообще качай учебники с гугла и сиди и читай, читай читай, но и думать тоже надо кстати! Добавлено @ 10:23
Всмысле? |
| Автор: Redstuff 5.7.2006, 11:15 |
| st1ng3r Книг у меня МНОГО, вот токо ни в одной книжке нет заданий, которые надо было бы выполнить, только пару примеров. А как можно освоить нормально, прочитанный материал без выполнения различных заданий. Самому трудно придумать и потом кто же проверит ). Поэтому и попросил выдавать задания. Я буду их делать и выкладывать, а ВЫ их проверять и давать советы. P.S. Довайте все-таки перейдем к заданиям. |
| Автор: Redstuff 6.7.2006, 10:37 |
| Будут еще задания? И еще вопрос: чтобы запретить писать html код в формы нужно использовать регулярные выражения? |
| Автор: BobiKK 6.7.2006, 11:02 | ||
Да, это было бы оптимальным решением. Однако, на крайняк можно и использовать что-нибудь типа str_replace('', '<', $_POST['text']) P.S. Задание (совсем простенькое): Имеется три страницы. (1.php, 2.php, 3.php). Сайт многоязычный, скажем, на английском, немецком и русском. Данные для этих страниц берутся из соответсвующих файлов (1_rus.txt, 1_eng.txt и т.д.) Надо сделать так, чтобы пользователь мог переключиться на другой язык, оставаясь в то же время на этой странице. Понятно объяснил? |
| Автор: alligator 6.7.2006, 11:26 | ||||
Для верности http://ru.php.net/manual/ru/function.htmlspecialchars.php |
| Автор: wil 6.7.2006, 11:34 |
| либо http://ru.php.net/manual/ru/function.strip-tags.php |
| Автор: Redstuff 6.7.2006, 12:12 |
| BobiKK, задание не очень понятно ( Имеется ввиду такое: 1. Главный файл (он же шаблон), например index.php. 2. В него подключаем 3 файла: 1.php, 2.php, 3.php (require или include) 3. Условием проверяем какая ссылка нажата, т.е. какой файл надо подключать и из него брать переменные. 4. В каждом файле (*.php - забыл уточнить) содержаться переменные, для каждого языка (например для форм) и соответственно текстовые файлы куда будем писать данные. Правильный ход мыслей? P.S. Хотя я вроде СОВСЕМ другое задание (см. выше) написал ) |
| Автор: BobiKK 6.7.2006, 12:36 |
| В чем-то ход мыслей правильный. Только вот в текстовых файлах не перменные хранятся, а просто шаблон, хтмл код. А 1.php, 2.php и т.д. - просто обработчики |
| Автор: Redstuff 6.7.2006, 13:45 | ||||||||
| http://redstuff.xost.ru/language/1.php 1.php
2.php
rus.txt (Аналогично eng.txt)
func.php
Правильно? Или имелось ввиду совсем другое? И есть ли у меня тут косяки (хотя думаю, что есть на 90%). |
| Автор: BobiKK 6.7.2006, 14:05 |
| Наверное, я несколько не так выразился. Если я нахожусь на странице 1.php и меняю язык, я по-прежнему должен находиться на странице 1.php |
| Автор: Redstuff 6.7.2006, 14:20 |
| BobiKK, а зачем тогда 3 файла (в данном случае 2) php? Что в них находиться должно? Я просто такого в инете даже не видел ) Если есть ссылка на сайт, который работает по такому принципу, выложи, чтобы я посмотрел работу хотя бы. |
| Автор: BobiKK 6.7.2006, 14:38 |
| Да не обязательно много всяких 1.php. Достаточно одного. Ну а в качестве примера: www.estma.ee |
| Автор: Platon 6.7.2006, 15:02 |
| (поторопился) |
| Автор: Redstuff 6.7.2006, 15:44 |
| BobiKK , может какую-нибудь подсказочку, что использовать? |
| Автор: BobiKK 6.7.2006, 16:13 |
| Да просто в адресе всегда передавать язык. А в скрипте уже проверять: if ($_GET['lang']) == 'rus' подключить то-то. if ($_GET['lang']) == 'eng' подключить другое |
| Автор: Redstuff 6.7.2006, 16:55 |
| Вот проблемка у меня как раз в том, что я не знаю как передать. |
| Автор: BobiKK 6.7.2006, 20:53 |
| 1.php?lang=rus 1.php?lang=eng и т.д. |
| Автор: Redstuff 6.7.2006, 21:12 | ||||
http://redstuff.xost.ru/language/2/1.php
Куда лучше сами ссылки пихать в php код или в html?
И в данном случае POST не работает или это токо у меня на машине так настроено? |
| Автор: BobiKK 6.7.2006, 22:11 |
| Дык, передачи значение в ссылке и есть метод GET По-поводу ссылок. А не лучше ли их формировать не статически а $_SERVER['PHP_SELF'] и $_SERVER['SERVER_NAME'] |
| Автор: Redstuff 6.7.2006, 23:48 | ||
Усек! Если на этом задание выполнено, жду следующего. |
| Автор: Redstuff 7.7.2006, 00:05 |
| А что лучше использовать для вырезки html, php и другого кода, который можно передать через форму. strip_tags(), регулярные выражения или что-то еще? |
| Автор: BobiKK 7.7.2006, 08:54 | ||
Смотря, какая задача стоит перед тобой. Если просто заменить теги в гостевой, подойдет htmlspecialchars(). Если надо проверить e-mail адрес или url, то только регулярки. А если работаешь с БД, то частенько надо будет пользоваться mysql_escape_string() |
| Автор: Redstuff 7.7.2006, 10:35 | ||
Понятно. Жду еще заданий |
| Автор: BobiKK 7.7.2006, 12:13 |
| Написать рекурсивную функцию для выставления прав 777 каталогам и 644 простым файлам. |
| Автор: Redstuff 10.7.2006, 15:00 | ||
Выдает ошибку. Чо не так? ОС: Win XP PHP: 4.4.0.0 Сервер: IIS |
| Автор: UzerPHp 10.7.2006, 15:39 |
| Брррр chmod использовать под Виндой извращение.... команда изначально заточена под Юникс.... есть возможность тести под Юниксовой машиной.... под Винды ограниченное использование... исполнение файла определяется расширением... и все файлы читаемые.... есть специльные режимы а 0777 не покатит( |
| Автор: BobiKK 10.7.2006, 16:33 | ||
В том, что нормальные хостинг-провайдеры мелкомягкой продукцией свои сервера не загрязняют. Ставь unix |
| Автор: Redstuff 10.7.2006, 17:20 |
| BobiKK, а так решение на твое задание правильно выполнил? Просто пока нет возможности поставить себе *nix систему. |
| Автор: -=Ustas=- 10.7.2006, 18:23 |
Неа, ты сервак этой функцией подвесишь и всё! |
| Автор: BobiKK 10.7.2006, 20:05 |
| Нет, не подвесит. Там ведь рекурсии нету |
| Автор: Redstuff 10.7.2006, 21:59 | ||||
Ошибка была из-за скобки Чтобы была рекурсия надо добавить:
Да? |
| Автор: BobiKK 10.7.2006, 22:11 |
| Нет. Надо внутри функции rule() вызвать её же |
| Автор: Redstuff 10.7.2006, 22:49 | ||
Так? |
| Автор: BobiKK 10.7.2006, 23:24 | ||
Не-а.
|
| Автор: st1ng3r 11.7.2006, 00:56 |
| Если автору топика интересно как же можно применить PHP то я думаю тут всё неплохо оговорено: http://php.ru/manual/faq.using.html |
| Автор: -=Ustas=- 11.7.2006, 09:33 |
Подвесил бы, если бы ошибку не допустил бы и поставил закрывающую скобку после вызова функции. Я это имел ввиду. |
| Автор: Redstuff 11.7.2006, 11:10 |
| Готов учиться дальше |
| Автор: Mribo 12.7.2006, 16:56 | ||
| Доброго времени суток. Тема мне интересна т.к. тоже учусь. Есть проблема котору не могу никак решить. Redstuff, Вам будет интересно в целях изучения. Ну, а у знающих прошу помощи. Есть страница. На ней форма, к примеру два поля и кнопка. Есть другая страница. Там тоже самое. Нужно что бы при заполнении одной из них заполнялась другая тоже. Еще не понятно.....
Вторая форма такая же только скрипт иначе называется и лежит на другом сервере. Нужно чтобы при заполении первой формы заполнялась вторая. Можно просто передать переменные скрипту $name и $surname и все выполнится, но хотелось бы решить вопрос иначе. Присвоить значения непосредственно компоненту формы и "программно" нажать OK второй формы. Т.е. программно заполнить поля value="Вася" value="Петров" ну чтобы текст был в поле ввода и нажать кнопку OK (программно) Скажите возможно ли заполнять поля других страниц. Спасибо. |
| Автор: Redstuff 21.7.2006, 14:43 |
| Не могли бы дать какое-нибудь задание, чтобы в процессе его выполнения необходимо было сделат шаблонизатор. |
| Автор: BobiKK 22.7.2006, 18:31 |
| Сделать шаблонизатор? В смысле написать свой парсер? |
| Автор: Redstuff 22.7.2006, 19:00 | ||||
Надо сделать сайт, в котором дизайн одинаковый, разный токо контент.
А что это? |
| Автор: BobiKK 22.7.2006, 19:19 |
| Ну, вообще, писать собственный класс для работы с шаблонами - занятие не самое удачное. Конкретно в данном случае лучше испольовать готовые решения: FastTemplate, Smarty. Заодно и их код посмотреть, понять принцип работы |
| Автор: Redstuff 22.7.2006, 19:44 | ||||
| Да мне ничего сложного собственно (это пока) не надо. Вот как я делаю: template.php
files.php
Это не очень удобно ( Т.к. возникла потребность вставлять уже функции php, который обрабатывают что-то и только потом выводят в контент на страницах. |
| Автор: w00w00 23.7.2006, 20:35 |
| 2 Redstuff Сначала надо выучить самые основы языка и тут же браться за более серьезные вещи,т.к в процессе написания будешь искать как сделать то или иное и знания тем самым будут накапливаться быстрее чем делать всякую мелочевку. Я конечно тоже начинающий и сразу взялся за http://trerum.jino-net.ru/index.php(кстати она еще не доделана и если надо могу дать исходники чтоб разобрался,посмотрел) и скажу чувствуется что потихоньку,но приходит опыт. Вобщем все вышесказанное ИМХО. |
| Автор: Redstuff 23.7.2006, 21:16 |
| w00w00 , просто задания закончились ( Поэтому приходиться делать то, что необходимо. И еще, я начинал изучение во время создания сайта для фирмы. Ладно хватит флеймить, помогите кто-нить лучше с шаблонами ) |
| Автор: BobiKK 23.7.2006, 21:24 |
| Redstuff, то, что ты ту привел в пример, это не шаблоны. Почитай на phpclub.ru про шаблоны. |
| Автор: Redstuff 25.7.2006, 22:20 |
| index.php?content=send безопастны ли такие ссылки? я где-то читал, что можно подменить своей страницей. |
| Автор: BobiKK 25.7.2006, 22:34 |
| В смысле подменить? Если у тебя в скрипте тупо стоит include($_GET['content']); то можно подключить что угодно |
| Автор: Redstuff 25.7.2006, 22:45 |
| include @$_GET['content'].".php" ага, как это обойти? хотя токо что делал так: http://site1/index.php?content=send менял на: http://site1/index.php?content=http://site2/hack.php и ничего не выводило |
| Автор: BobiKK 25.7.2006, 23:00 | ||
| 1) Если ты вставлял именно такое значение в content, то инклюдился бы у тебя http://site2/hack.php.php 2) В php.ini возможно запрещено использование url в include, fopen и т.д. В любом случае, включи вывод всех ошибок и посмотри, на что интерпретатор ругается. Как избежать подключения нежелательного: 1) Не использовать в include переменные. Попытаться как-то это обходить 2) Проверять на допустимое значение. Скажем,
|
| Автор: Redstuff 25.7.2006, 23:27 | ||||
да, без расширения работает. Ну допустим переменные в некоторых страницах уберу, а как тогда обработать функцию? У меня есть пару страниц, где выводиться много картинок, и все это делает такая функция:
|
| Автор: BobiKK 25.7.2006, 23:37 |
| А где в этой фунцкии переменные из адресной строки? |
| Автор: Redstuff 25.7.2006, 23:49 | ||||||
| Значит такое можно инклюдить? Добавлено @ 23:55 Приведуы страниц: index.php
rule.php
file.php
|
| Автор: BobiKK 26.7.2006, 08:30 |
| Ну прежде, чем инклюдить, проверить, если такой файл. |