Мой 2й урок, пусть нубы возмущаются сколько хотят, пишу я все сам))) И так в этом уроке использование капчи, завершение сессии, загрузка аватара, поиск пользователя по логину... Начнем с использования капчи Создадим captcha.php
Code
<?php /* Simple captcha @author: Failure @version: 1.0 beta @date: 08.01.2010 */ #Сразу задаем хедеры для картинки header('Content-Type: image/png'); #Создаем сессию session_start(); #Создаем изображение шириной 200 и высотой 40 $im = imagecreatetruecolor(200, 40); #Меняем бекграунд (задается в формате RGB) R=25, G=25, B=25 $bgc = imagecolorallocate($im, 25, 25, 25); #Применяем бекграунд на картинку, думаю с названия и так ясно как imagefilledrectangle($im, 0, 0, 200, 40, $bgc); #Сама картинка создана #осталось запихать туда циферки, и записать их в сессию
#переменная i у нас играет роль сдвига чисел по оси Х for($i=5;$i<200;$i=$i+20) { # генерируем случайное число от 0 до 9 $tmp = mt_rand(0, 9); #Дописываем к концу переменной сесии это число $_SESSION['key'] .= $tmp; #Задаем случайный цвет цифры, опять таки в RGB, что бы он не слился с цветом фона #минимальное его значение может быть 15, максимальное 255 $tc = imagecolorallocate($im, mt_rand(15, 255), mt_rand(15, 255), mt_rand(15, 255)); #теперь когда всё готово, осталось записать это число #размер шрифта не должен быть одинаковым, по этому сделали его рандомным, либо 5 #либо 6, $i это X, по игрику будет рандомное число от 0 до 25, не до 40 что бы цифра не #сползла вниз и её было хорошо видно imagestring($im, mt_rand(5, 6), $i, mt_rand(0, 25), $tmp, $tc); } #Выводим картинку imagepng($im); imagedestroy($im); ?>
Все сохраняем.... и закрываем Теперь идем в файл reg.php И дописываем Под строкой:
Все выход настроен, могут быть ошибки, пишите исправлю Теперь загрузка аватара Для начала в корне сайта создадим папку upload, если сайт находится на сервере выставим права 755 Теперь открываем reg.php ищем этот фрагмент:
Code
<tr> <td><img src="rgd.php" border="0" alt="Введите этот защитный код"></td> <td><input type="text" name="securityCode" title="Введите код, который изображен на картинке"></td> </tr>
Не стал усложнять и делать все в одном скрипте, поэтому создадим info.php И пишем:
Code
<?php $login = $_GET['login']; include ("connect.php"); $result = mysql_query("SELECT id FROM users WHERE login='$login'",$db); $myrow = mysql_fetch_array($result); if (!empty($myrow['id'])) { print <<<HERE $login <img src="upload/$ava"> HERE; } ?>
Примерно так, будут ошибки, пишите, не проверял, помогу исправить и исправлю сразу урок)) Вот и все урок подготовил cougraAcc, обо всех ошибках, недоточетах пишите, дополним, исправим)))) В следующем уроке, создание и вывод новостей, и прикрутка чата Исправленный info.php!!!
Code
<?php $login = $_GET['login']; include ("connect.php"); $query = mysql_query("SELECT * FROM users WHERE login='$login'");
Уважаемый cougraAcc. Это очень здорово, что ты решился на не благодарную работу - написание уроков. Первый урок я пробежал глазами и получил удовольствие от сверх простого изложение материала. Как раз для человека у которого опыта программирования 0 - самое то, желание и охоту не отобьет точно. А вот со вторым уроком вышла совершенно другая ситуация. Какая к черту капча, какие сессии и прочее??? Читатель не знает ни циклов, ни функций... Короче, продумывать надо уроки, а не писать на бум. Желаю успехов в твоем не легком начинании
ЗЫ Код для генерации капчи работать не будет, если не подключена в настройках PHP библиотека GD
Сообщение отредактировал logof - Воскресенье, 14 Февраля 2010, 13:17
logof, Вобще то по почти на всех серваках будь то денвер, топсервер и т.д. она подключена
Добавлено (14.02.2010, 14:03) --------------------------------------------- logof, Или советуешь дописать в уроке что нужно скачать php_gd2.dll потом закинуть его в windows потом открыть php.ini убрать комментарий, перезагрузить апач? и все это ради капчи..... это еще загруженее будет чем написанное мною выше...
(того же денвера на сайте имеется несколько сборок в разных конфигурациях или сервер PHP был поднят собственноручно, а не использовался готовый пакет) так что лучше всего добавить, что нужно скачать библиотеку php_gd2 и как с ней поступить в зависимости от ОС (вдруг у кого-то Linux стоит), ну или ссылку дать, где это описано.
Сообщение отредактировал logof - Воскресенье, 14 Февраля 2010, 19:32
Здравствуйте cougraAcc Первой урок вышел нормально без деиной ошибки всё работает Зато вот второй выдаёт ошибку после проверки капчи и exit Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\xampp\htdocs\index.php on line 48 Вот такую даёт ошибки 48 строка где-то сдесь вот примерный код
Code
print <<<HERE Привет, ".$_SESSION['login']." ты авторизован <a href=index.php?act=logout>Выход</a>" HERE; // работает)) знач не надо регится } if ($act==logout); { include ("exit.php"); }
Parse error: syntax error, unexpected T_STRING in C:\xampp\xampp\htdocs\index.php on line 48 'это если убрать <<< перед HERE
Прошу простить только учусь пхп ------------------------------------------------------------------
Code
print" Привет, ".$_SESSION['login']." ты авторизован <a href=index.php?act=logout>Выход</a> "; // работает)) знач не надо регится } Изменил вот так вроде бы работает но тогда вопрос а так можно?
Сообщение отредактировал Liv][ - Суббота, 01 Января 2011, 15:55
echo " Привет, {$_SESSION['login']} ты авторизован <a href=index.php?act=logout>Выход</a> "; // работает)) знач не надо регится } if ($act==logout); { include ("exit.php"); }
Большое спасибо работает Пробуя регистрацию столкнулся с такой проблемой Parse error: syntax error, unexpected '}' in C:\xampp\xampp\htdocs\reg2.php on line 81 Ошибка загрузки файлаВы успешно зарегистрированны, теперь вы можете войти на сайт войти
также вот тут нету отображения картинки это моя ошибка или нет dll или чего то ещо?
Сообщение отредактировал Liv][ - Суббота, 01 Января 2011, 16:20
Ага удалил получил вот такой код echo "Ошибка! регистрация не прошла"; } } else print "Капча введена не верно"; ?> и всё вышло) спасибо Я тогда если будут вопросы ещо отпишу ---- После удаления возникает ошибка
Warning: copy() [function.copy]: Filename cannot be empty in C:\xampp\xampp\htdocs\reg2.php on line 42 Ошибка загрузки файлаВы успешно зарегистрированны, теперь вы можете войти на сайт войти
Попробовал не вышло в файле c:\windows\php.ini находим строку extension=php_gd2.dll и убираем комментарий. файла просто нет в xampp всё заменил но не совсем понял где убрать коментарий