[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите "добить" регистрацию
Guest
Создаю сайт на примере этой статьи:

http://php.inkz.ru/kernel/index.php?a=1

Допустим я подключаю файл rigistration.php в шаблон с помощью switch

Имеется ссылка на регистрацию:
http://localhost/new/index.php?content=reg


<div class="post"><p class="title">Регистрация</p>
<form
action="??????" method="post" enctype="multipart/form-data">

<p>
<label>
Ваш логин*:<br></label>
<input
name="login" type="text" size="15" maxlength="15">
</p>

<p>
<label>
Ваш пароль*:<br></label>
<input
name="password" type="password" size="15" maxlength="15">
</p>
<p>
<label>
Выберите аватар. Изображение должно быть формата jpg, gif или png:<br></label>
<input
type="FILE" name="fupload">
</p>

<p>
Введите код с картинки *:<br>
<p><img
src="modules/capcha/my_codegen.php"></p>
<p><input
type="text" name="code"></p>
<p
class="red"> * - Поля обязательные для заполнения</p>
<p>


<p>
<input
type="submit" name="submit" value="Зарегистрироваться">
</p></form></div>



Если нажать на сабмит данные полетят в обработчик, но так как код прикреплён к шаблону через инклюд, напрямую я не могу указать обработчик. Например:


<form action="obrabotchik.php" method="post" enctype="multipart/form-data">


Помогите правильно прописать файл обработчика



Спустя 3 минуты, 38 секунд (29.11.2009 - 21:10) Guest написал(а):
Если я писал новости там всё просто было. данные я передавал с помощью GET. Ссылка имела вид:
index.php?content=news&id=1


А с POST не разберусь, да ещё и обработчик

Спустя 9 минут, 20 секунд (29.11.2009 - 21:19) Joker написал(а):
А ты прочитай все статьи которые там есть думаю многие вопросы сразу же исчезнут а лучше несколько раз прочитай.

Спустя 6 минут, 26 секунд (29.11.2009 - 21:26) Guest написал(а):
Много раз прочитал, очень много. А на свой вопрос ответ не нашёл sad.gif

Спустя 6 минут, 32 секунды (29.11.2009 - 21:32) Joker написал(а):
Довай свой файл обработчик и всё что с этим связанно сюда в листингах под спойлер а так гадать сложно что у тебя не получаеться, и почему и какие сложности возникли при написании обработчика я не понел напиши поподробнее.

Спустя 20 минут, 23 секунды (29.11.2009 - 21:53) denis39 написал(а):
Вот главная. в неё подключаю страницу регистрации

Listing1

<?php
session_start();
include 'functions/bd.php';

include 'config.php';

$content = !empty($_GET['content'])?$_GET['content']:NULL;

if (!$content)
{
$content='index';
}


?>

<?php
include './skins/'. SKIN .'/header.php'; ?>

<?php
include './skins/'. SKIN .'/topmenu.php'; ?>

<?php
include './skins/'. SKIN .'/left.php'; ?>

<?php


switch($content)
{
case 'reg':

include 'modules/registration/reg.php';
break;
}
?>

<?php
include './skins/'. SKIN .'/right.php'; ?>

<?php
include './skins/'. SKIN .'/footer.php'; ?>




Страница на регистрацию соответственно будет http://localhost/new/index.php?content=reg. Вот её код:
Listing2


<div class="post"><p class="title">Регистрация</p>
<form
action="Тут я не знаю как отправить данные обработчику" method="post" enctype="multipart/form-data">

<p>
<label>
Ваш логин*:<br></label>
<input
name="login" type="text" size="15" maxlength="15">
</p>

<p>
<label>
Ваш пароль*:<br></label>
<input
name="password" type="password" size="15" maxlength="15">
</p>
<p>
<label>
Выберите аватар. Изображение должно быть формата jpg, gif или png:<br></label>
<input
type="FILE" name="fupload">
</p>


<p>
Введите код с картинки *:<br>
<p><img
src="modules/capcha/my_codegen.php"></p>
<p><input
type="text" name="code"></p>

<p
class="red"> * - Поля обязательные для заполнения</p>
<p>


<p>

</p></form></div>



И обработчик:
Listing3


$login = isset($_POST['login'])?$_POST['login']:NULL;

$password = isset($_POST['password'])?$_POST['password']:NULL;

$code = isset($_POST['code'])?$_POST['code']:NULL;

if (empty($login) or empty($password)or empty($code))
{
echo '<p>Вы ввели не всю информацию, вернитесь назад и заполните все поля!</p>';
}
else{
function generate_code()
{
$hours = date("H");
$minuts = substr(date("H"), 0 , 1);
$mouns = date("m");
$year_day = date("z");
$str = $hours . $minuts . $mouns . $year_day;
$str = md5(md5($str));
$str = strrev($str);
$str = substr($str, 3, 6);
$array_mix = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
srand ((float)microtime()*1000000);
shuffle ($array_mix);

return implode("", $array_mix);
}
function chec_code($code)
{
$code = trim($code);
$array_mix = preg_split ('//', generate_code(), -1, PREG_SPLIT_NO_EMPTY);
$m_code = preg_split ('//', $code, -1, PREG_SPLIT_NO_EMPTY);
$result = array_intersect ($array_mix, $m_code);
if (strlen(generate_code())!=strlen($code))
{ return FALSE;}
if (sizeof($result) == sizeof($array_mix))
{ return TRUE;}
else
{ return FALSE;}}

if (!chec_code($code))

{
echo '<p>Вы ввели неверно код с картинки</p>';
}
else
{

$login = stripslashes($login);
$login = htmlspecialchars($login);

$password = stripslashes($password);
$password = htmlspecialchars($password);


$login = trim($login);
$password = trim($password);



if (strlen($login) < 3 or strlen($login) > 15) {
echo '<p>Логин должен состоять не менее чем из 3 символов и не более чем из 15</p>';
}
else {
if (strlen($password) < 3 or strlen($password) > 15) {
echo '<p>Пароль должен состоять не менее чем из 3 символов и не более чем из 15</p>';
}
else {

if (!empty($_POST['fupload']))
$fupload=$_POST['fupload']; $fupload = trim($fupload);
if ($fupload =='' or empty($fupload)) {
unset($fupload);
}
}


if (!isset($fupload) or empty($fupload) or $fupload =='')
{

$avatar = "modules/registration/avatars/net-avatara.png";
}

else
{

$path_to_90_directory = 'modules/registration/avatars/';


if (preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))
{

$filename = $_FILES['fupload']['name'];
$source = $_FILES['fupload']['tmp_name'];
$target = $path_to_90_directory . $filename;
move_uploaded_file($source, $target);

if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
$im = imagecreatefromgif($path_to_90_directory.$filename) ;
}
if(preg_match('/[.](PNG)|(png)$/', $filename)) {
$im = imagecreatefrompng($path_to_90_directory.$filename) ;.
}

if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
$im = imagecreatefromjpeg($path_to_90_directory.$filename);
}

//СОЗДАНИЕ КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ ВЗЯТО С САЙТА www.codenet.ru

// Создание квадрата 90x90
// dest - результирующее изображение
// w - ширина изображения
// ratio - коэффициент пропорциональности


$w = 90; // квадратная 90x90. Можно поставить и другой размер.

// создаём исходное изображение на основе
// исходного файла и определяем его размеры

$w_src = imagesx($im); //вычисляем ширину
$h_src = imagesy($im); //вычисляем высоту изображения

// создаём пустую квадратную картинку
// важно именно truecolor!, иначе будем иметь 8-битный результат

$dest = imagecreatetruecolor($w,$w);

// вырезаем квадратную серединку по x, если фото горизонтальное
if ($w_src>$h_src)
imagecopyresampled($dest, $im, 0, 0,
round((max($w_src,$h_src)-min($w_src,$h_src))/2),
0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));

// вырезаем квадратную верхушку по y,
// если фото вертикальное (хотя можно тоже серединку)

if ($w_src<$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
min($w_src,$h_src), min($w_src,$h_src));

// квадратная картинка масштабируется без вырезок
if ($w_src==$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);


$date=time(); //вычисляем время в настоящий момент.
imagejpeg($dest, $path_to_90_directory.$date.".jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.


$avatar = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара.

$delfull = $path_to_90_directory.$filename;
unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.

//конец процесса загрузки и присвоения переменной $avatar адреса загруженной авы


}
else
{
echo ("<p>Аватар должен быть в формате <strong>JPG,GIF или PNG</strong></p>"); }


}


$password = md5($password);

$password = strrev($password);
$password = $password."rg678eg";



$result = mysql_query("SELECT `id` FROM `users` WHERE `login`='". mysql_real_escape_string( $login ) ."'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {
echo '<p>Извините, введённый вами логин уже зарегистрирован. Введите другой логин.</p>';
}
else{

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

if ($result2=='TRUE')
{
echo "<p>Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href='index.php'>Главная страница</a></p>";
}

else {
echo '<p>Ошибка! Вы не зарегистрированы.</p>';
}
}
}
}
}
}


?>



Мне нужно просисать ссылку к обработчику


Большие листинги нужно запихивать под спойлер

Спустя 2 минуты, 28 секунд (29.11.2009 - 21:55) S{oRpiO написал(а):
а нормальный пост не сделать??? убери скрытый текст

Спустя 2 минуты, 17 секунд (29.11.2009 - 21:57) denis39 написал(а):
сек. ошибся

Спустя 10 минут, 4 секунды (29.11.2009 - 22:07) denis39 написал(а):
готово

Спустя 1 час, 36 минут, 59 секунд (29.11.2009 - 23:44) Joker написал(а):
Насколько я понел файл подключаемый этой
include 'modules/registration/reg.php';
строкой это листинг 2 правильно?

Спустя 7 минут, 42 секунды (29.11.2009 - 23:52) denis39 написал(а):
Нашёл выход из проблемы. Запихал форму и обработчик в один файл, чтоб он сам себе передавал данные.

добавил в форму строку <input name="one" type="hidden" value="1">

а файл заменил таким образом

$one = isset($_POST['one'])?$_POST['one']:NULL;

if (empty($one))
{
выводи форму регистрации
}
else
{
обрабатывай данные
}

Спустя 1 минута, 53 секунды (29.11.2009 - 23:54) Joker написал(а):
Лучше сделать так


if (isset($_POST))
{
обрабатывай данные
}
else
{
выводи форму регистрации
}

Спустя 8 часов, 28 минут, 22 секунды (30.11.2009 - 08:22) denis39 написал(а):
Исправлю
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.