Понедельник, 11 Ноября 2024, 02:57

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
2й урок php
cougraAccДата: Суббота, 13 Февраля 2010, 15:26 | Сообщение # 1
Яркая личность GD
Сейчас нет на сайте
Мой 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
И дописываем
Под строкой:
Code

<p>
Ваш пароль:<br>
<input name="password" type="password" size="15" maxlength="15">
</p>

Этот код
Code

<img src="captcha.php"><br>
<input type="text" name="captcha">

Теперь в самом низу допишем
Code

<?php
unset($_SESSION['key']);
?>

Делаем проверку на правильность:

под строкой

Code

if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }

пишем
Code

if($_REQUEST[session_name()]) session_start();
if(isset($_POST['captcha'])) {
if($_POST['captcha'] == $_SESSION['key'])

внизу
под строкой
Code

echo "Ошибка! регистрация не прошла";

должно быть так:
Code

}
}
else print "Капча введена не верно";
?>

------
Вот вроде бы с капчей все:)

Теперь по порядку завершение сессии
Идем в файл index.php
Ищем кусок кода:

Code

print <<<HERE
Привет, ".$_SESSION['login']." ты авторизован
HERE;

--------
И дописываем после слова авторизован <a href="index.php?act=logout>Выход</a>"
Теперь ниже этого куска кода
Code

print <<<HERE
Привет, ".$_SESSION['login']." ты авторизован
HERE;
// работает)) знач не надо регится
}

Пишем
Code

if ($act==logout);
{
include ("exit.php");
}

Создадим файл exit.php и впишем в него:
Code

<?
session_start();
session_destroy();
Header("Location: index.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>

И под ним пишем
Code

<td colspan="2">Загрузите ваш аватар: <font color="#FF0000">*</font> </td>

<input type="file" name="filename"><br>
<input type="submit" value="Загрузить"><br>

Теперь открываем файл reg2.php
Ищем там

Code

include ("connect.php");

Ниже прописываем:
Code

if($_FILES["filename"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit;
}
if(copy($_FILES["filename"]["tmp_name"],
"upload".$_FILES["filename"]["name"]))
{
echo("Файл успешно загружен <br>");
echo("Характеристики файла: <br>");
echo("Имя файла: ");
echo($_FILES["filename"]["name"]);
echo("<br>Размер файла: ");
echo($_FILES["filename"]["size"]);
echo("<br>Каталог для загрузки: ");
echo($_FILES["filename"]["tmp_name"]);
echo("<br>Тип файла: ");
echo($_FILES["filename"]["type"]);
} else {
echo("Ошибка загрузки файла");
}

$ava = $_FILES["filename"];

потом ищем строчку:
Code

$result2 = mysql_query ("INSERT INTO users (login,password) VALUES('$login','$password')");

И меняем её на:
Code

$result2 = mysql_query ("INSERT INTO users (login,password,ava) VALUES('$login','$password','$ava')");

Тут все.....
Теперь в базе данных в таблице users создадим строку ava
И готово))

Теперь поиск пользователя по нику
Для начала создадим файл profiles.php
И пишем

Code

<form action="info.php">
Введите логин: <input type=text name="login"><br>
<input type=submit value="найти">

Не стал усложнять и делать все в одном скрипте, поэтому создадим 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!!!


Сообщение отредактировал cougraAcc - Воскресенье, 14 Февраля 2010, 12:37
DinoieraДата: Воскресенье, 14 Февраля 2010, 00:53 | Сообщение # 2
участник
Сейчас нет на сайте
Сделай под "CODE" всё

Помогаю чем могу и прошу взаимной помощи)
DCH - сайт разработчиков игр(новый проект)
cougraAccДата: Воскресенье, 14 Февраля 2010, 12:32 | Сообщение # 3
Яркая личность GD
Сейчас нет на сайте
Dinoiera, +)
DinoieraДата: Воскресенье, 14 Февраля 2010, 12:36 | Сообщение # 4
участник
Сейчас нет на сайте
В спойлере сделай "CODE"

Помогаю чем могу и прошу взаимной помощи)
DCH - сайт разработчиков игр(новый проект)
cougraAccДата: Воскресенье, 14 Февраля 2010, 12:38 | Сообщение # 5
Яркая личность GD
Сейчас нет на сайте
Dinoiera, поправил....
logofДата: Воскресенье, 14 Февраля 2010, 13:07 | Сообщение # 6
частый гость
Сейчас нет на сайте
Уважаемый cougraAcc. Это очень здорово, что ты решился на не благодарную работу - написание уроков. Первый урок я пробежал глазами и получил удовольствие от сверх простого изложение материала. Как раз для человека у которого опыта программирования 0 - самое то, желание и охоту не отобьет точно.
А вот со вторым уроком вышла совершенно другая ситуация. Какая к черту капча, какие сессии и прочее???
Читатель не знает ни циклов, ни функций...
Короче, продумывать надо уроки, а не писать на бум.
Желаю успехов в твоем не легком начинании

ЗЫ Код для генерации капчи работать не будет, если не подключена в настройках PHP библиотека GD

Сообщение отредактировал logof - Воскресенье, 14 Февраля 2010, 13:17
cougraAccДата: Воскресенье, 14 Февраля 2010, 14:03 | Сообщение # 7
Яркая личность GD
Сейчас нет на сайте
logof, Вобще то по почти на всех серваках будь то денвер, топсервер и т.д. она подключена

Добавлено (14.02.2010, 14:03)
---------------------------------------------
logof, Или советуешь дописать в уроке что нужно скачать php_gd2.dll потом закинуть его в windows потом открыть php.ini убрать комментарий, перезагрузить апач? и все это ради капчи..... это еще загруженее будет чем написанное мною выше...

logofДата: Воскресенье, 14 Февраля 2010, 19:25 | Сообщение # 8
частый гость
Сейчас нет на сайте
как правильно замечено
Quote
почти на всех серваках
(того же денвера на сайте имеется несколько сборок в разных конфигурациях или сервер PHP был поднят собственноручно, а не использовался готовый пакет)
так что лучше всего добавить, что нужно скачать библиотеку php_gd2 и как с ней поступить в зависимости от ОС (вдруг у кого-то Linux стоит), ну или ссылку дать, где это описано.


Сообщение отредактировал logof - Воскресенье, 14 Февраля 2010, 19:32
cougraAccДата: Воскресенье, 14 Февраля 2010, 20:04 | Сообщение # 9
Яркая личность GD
Сейчас нет на сайте
logof, Логично.... поправлю, держи плюсик)
KrokodilДата: Среда, 03 Марта 2010, 16:06 | Сообщение # 10
был не раз
Сейчас нет на сайте
Что-то не то у меня получилось...
Вот это я не нашел((
Делаем проверку на правильность:

под строкой
Code

if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }

пишем

cougraAccДата: Среда, 03 Марта 2010, 19:03 | Сообщение # 11
Яркая личность GD
Сейчас нет на сайте
Krokodil, В самом верху в файле reg.php
Liv][Дата: Суббота, 01 Января 2011, 15:48 | Сообщение # 12
был не раз
Сейчас нет на сайте
Здравствуйте cougraAcc
Первой урок вышел нормально без деиной ошибки всё работает
Зато вот второй выдаёт ошибку после проверки капчи и exit cry
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
cougraAccДата: Суббота, 01 Января 2011, 15:59 | Сообщение # 13
Яркая личность GD
Сейчас нет на сайте
Code

echo "
Привет, {$_SESSION['login']} ты авторизован <a href=index.php?act=logout>Выход</a>
";
// работает)) знач не надо регится       
             }
if ($act==logout);
{
include ("exit.php");
}  

попробуй так
Liv][Дата: Суббота, 01 Января 2011, 16:11 | Сообщение # 14
был не раз
Сейчас нет на сайте
Большое спасибо работает
Пробуя регистрацию столкнулся с такой проблемой
Parse error: syntax error, unexpected '}' in C:\xampp\xampp\htdocs\reg2.php on line 81
Ошибка загрузки файлаВы успешно зарегистрированны, теперь вы можете войти на сайт войти

также вот тут

нету отображения картинки это моя ошибка или нет dll или чего то ещо?

Сообщение отредактировал Liv][ - Суббота, 01 Января 2011, 16:20
cougraAccДата: Суббота, 01 Января 2011, 16:17 | Сообщение # 15
Яркая личность GD
Сейчас нет на сайте
Liv][, Лишняя } попробуй удалить с 81 строки
Liv][Дата: Суббота, 01 Января 2011, 16:19 | Сообщение # 16
был не раз
Сейчас нет на сайте
Ага удалил получил вот такой код
echo "Ошибка! регистрация не прошла";
}
}
else print "Капча введена не верно";
?>
и всё вышло) спасибо
Я тогда если будут вопросы ещо отпишу
----
После удаления возникает ошибка

Warning: copy() [function.copy]: Filename cannot be empty in C:\xampp\xampp\htdocs\reg2.php on line 42
Ошибка загрузки файлаВы успешно зарегистрированны, теперь вы можете войти на сайт войти

Code
if(copy($_FILES["filename"]["tmp_name"],
"upload".$_FILES["filename"]["name"]))
{  
cougraAccДата: Суббота, 01 Января 2011, 16:19 | Сообщение # 17
Яркая личность GD
Сейчас нет на сайте
Liv][, скачай файлик php_gd2.dll Liv][, по поводу капчи установи библиотеку php_gd2, у тебя веб сервер какой?
Liv][Дата: Суббота, 01 Января 2011, 16:21 | Сообщение # 18
был не раз
Сейчас нет на сайте
Xampp ну через него на локалхосте php смотрю
Скачал куда его запихнуть в xampp или в Windows?


Сообщение отредактировал Liv][ - Суббота, 01 Января 2011, 16:23
cougraAccДата: Суббота, 01 Января 2011, 16:23 | Сообщение # 19
Яркая личность GD
Сейчас нет на сайте
Liv][, почитай статью по поводу библиотеки http://guzei.com/www/php/gd.php
Liv][Дата: Суббота, 01 Января 2011, 16:31 | Сообщение # 20
был не раз
Сейчас нет на сайте
Попробовал не вышло
в файле c:\windows\php.ini находим строку extension=php_gd2.dll и убираем комментарий. файла просто нет
в xampp всё заменил но не совсем понял где убрать коментарий

;extension=php_dblib.dll
extension=php_mbstring.dll
extension=php_exif.dll
extension=php_fileinfo.dll
extension=php_gd2.dll
extension=php_gettext.dll

Так же как я только новичок (прошу простить за тупые вопросы)
не совсем понял добавление строки ava какой тип ставить?

Сообщение отредактировал Liv][ - Суббота, 01 Января 2011, 16:33
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг