[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Форма капризничает
pulvik
Всем привет. Собственно вот сама форма,

<form method="POST" action="/index.php?step=2">
Введите E-mail адрес: <br/>
<input
name="email" value="' . $UserMail . '" type="text" maxlength="36" />
<br/>
<br/>
<input
type="hidden" name="step" value="2" />
<input
class="buttons" type="submit" value="Продолжить >>" >
</form>



и вот, кнопка submit не отправляет данные формы. Кто покажет где я накосорезил?



Спустя 12 минут, 32 секунды (25.02.2012 - 17:40) killer8080 написал(а):
<form method="POST" action="/index.php?step=2">
Введите E-mail адрес: <br/>
<input
name="email" value="<?=$UserMail?>" type="text" maxlength="36" />
<br />
<br />
<input
type="hidden" name="step" value="2" />
<input
class="buttons" type="submit" value="Продолжить &gt;&gt;" />
</form>

Спустя 11 минут, 48 секунд (25.02.2012 - 17:52) pulvik написал(а):
Однако, сама форма в отдельном html файле работает отлично в первоначальном виде, но в php скрипте работать отказывается.

Спустя 5 минут, 36 секунд (25.02.2012 - 17:57) pulvik написал(а):
http://pastebin.com/fLeu5CTB - тут сам скрипт

Спустя 1 час, 25 минут, 53 секунды (25.02.2012 - 19:23) inpost написал(а):
Может тут выставить код с ПХП?

Спустя 9 часов, 49 минут (26.02.2012 - 05:12) Эли4ка написал(а):
pulvik
у Вас вообще виртуальный сервер стоит..?

Спустя 2 часа, 45 минут, 41 секунда (26.02.2012 - 07:58) pulvik написал(а):
Эли4ка
сервер у меня стоит и виртуальный, и сайт на хостинге, не там не там submit данные не отправляет.

Сам скрипт:


<?php

# Разрешаем прямой доступ к данной странице.
define ('__RECOVERY__', 'true');
# Задаём директорию, в которой находится наш файл.
define('ROOT_DIR', join( strstr(__FILE__, "/") ? "/" : "\\", array_slice( preg_split("/[\/\\\]+/", __FILE__), 0, -1 ) ).( strstr(__FILE__, "/") ? "/" : "\\" ));
# Подключаем файл конфигурации.
include ROOT_DIR . 'config' . DIRECTORY_SEPARATOR . 'config.php';
# Подключаем файл функций.
include ROOT_DIR . 'function' . DIRECTORY_SEPARATOR . 'index.php';
# Подключаем класс для работы с базой данных.
include ROOT_DIR . 'library' . DIRECTORY_SEPARATOR . 'DbSimple' . DIRECTORY_SEPARATOR . 'Generic.php';
# Подключаем библиотеку для работы с почтой
include ROOT_DIR . 'library' . DIRECTORY_SEPARATOR . 'PHPMailer' . DIRECTORY_SEPARATOR . 'phpmailer.php';
# Создаём подключение к базе данных Auth/realmd
$Auth = DbSimple_Generic::connect("mysql:/". $Config['DataBase']['Auth']['User'] .":". $Config['DataBase']['Auth']['Passw'] ."@". $Config['DataBase']['Auth']['Host'] ."/". $Config['DataBase']['Auth']['DbName'] ."");
# Устанавливаем кодировку соединения.
$Auth->query("SET NAMES ?s", $Config['DataBase']['Auth']['Charset']);
# Создаём подключение к базе данных сервиса
$Recovery = DbSimple_Generic::connect("mysql:/". $Config['DataBase']['Site']['User'] .":". $Config['DataBase']['Site']['Passw'] ."@". $Config['DataBase']['Site']['Host'] ."/". $Config['DataBase']['Site']['DbName'] ."");
# Устанавливаем кодировку соединения.
$Recovery->query("SET NAMES ?s", $Config['DataBase']['Site']['Charset']);

/**
* Присваиваем необходимые переменные.
*/


# Задаём номер шага.
if(isset($_REQUEST['step'])) $Step = (int) $_GET['step']; else $Step = '1';
# Задаём переменную для почты.
if(isset($_POST['email'])) $UserMail = $_POST['email']; else $UserMail = '';
# Задаём переменную для аккаунта.
if(isset($_REQUEST['account'])) $UserID = (int) $_GET['account']; else $UserID = '';
# Задаём переменную для хеша.
if(isset($_GET['hash'])) $Hash = $_GET['hash']; else $Hash = '';

/**
* Все приготовления завершены, теперь можно приступить непосредственно к телу страницы
* и её функционалу.
*/


# Выводим хеадер.
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru-RU" lang="ru-RU">
<head>
<meta http-equiv="content-type" content="text/html; charset='
. $Config['Site']['Charset'] . '" />
<meta name="author" content="Desperado />
<title>'
. $Config['Site']['Title'] . '</title>
</head>
<body>'
;

switch ($Step) {
case '1':
echo '<form method="POST" action="/index.php?step=2">
Введите E-mail адрес: <br/>
<input name="email" value="'
. $UserMail . '" type="text" maxlength="36" />
<br />
<br />
<input type="hidden" name="step" value="2" />
<input class="buttons" type="submit" value="Продолжить >>" />
</form>

<br/>
<h4 align="center">Обращаем Ваше внимание, что восстановление пароля возможно только при наличии работающего E-mail, на который регистрировался аккаунт.</h4>'
;
break;

case '2':
# Проверяем валидность почтового адреса.
if(!CheckValidMail($UserMail))
echo '<h4 align="center"><span style="color: red;"><b>E-mail адрес введён некорректно.</b></span><br/><a href="/index.php">Вернуться</a></h4>';
# Проверяем существует ли аккаунты с указанным Email.
elseif(!CheckEmailExist($UserMail))
echo '<h4 align="center"><span style="color: red;"><b>Аккаунта с таким E-mail не существует.</b></span><br/><a href="/index.php">Вернуться</a></h4>';
else {
# Если всё хорошо, продолжаем.
# Выбираем список всех аккаунтов на данном e-mail и подставляем их в меню выбора.

$rows = $Auth->select("SELECT `id`, `username` FROM `account` WHERE `email` = ?", $UserMail);

echo '<form method="POST" action="/index.php?step=3">
Выберите аккаунт:   
<select name="account">'
;

foreach ($rows as $data) {
echo '<option value="' . $data['id'] . '" selected="selected">' .strtoupper($data['username']). '</option>';
}

echo '</select>
<br/>
<br/>
<input type="hidden" name="step" value="3"><input class="buttons" type="submit" value="Продолжить >>" />
</form>'
;
}

break;

case '3':
# Убеждаемся, что запрос не пустой.
if(!$UserID)
echo '<h4 align="center"><span style="color: red;"><b>Аккаунта с таким ID не существует.</b></span><br/><a href="/index.php">Вернуться</a></h4>';
else {
# Получаем информацию об аккаунте.
$rows = $realmd->SelectRow("SELECT `id`, `username`, `email` FROM `account` WHERE `id` = ?d", $Account);
# Генерируем хеш
$NewHash = md5(microtime());

# Отправляем почту с хешем.
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->Host = $Config['SMTP']['Host'];
$mail->Username = $Config['SMTP']['User'];
$mail->Password = $Config['SMTP']['Passw'];
$mail->SetFrom($Config['SMTP']['FromMail'], $Config['SMTP']['FromName']);
$mail->AddReplyTo($Config['SMTP']['FromMail'], $Config['SMTP']['FromName']);
$mail->Subject = 'Информация о Вашем аккаунте для доступа на сервер ' . $Config['ServerDetails']['ServerName'];

# Создаём тело сообщения.
$MailBody = 'Уважаемый(ая) ' . ucfirst($rows['username']) . '! <br/>
Вы запросили повторную установку пароля на сервере '
. $Config['ServerDetails']['ServerName'] .',
т.к. забыли свой пароль. Если Вы не делали такого запроса, пожалуйста, не отвечайте на данное сообщение. <br/><br/>
Чтобы повторно установить Ваш пароль, пожалуйста, проследуйте на страницу: <br/>
<a href="'
. $Config['Site']['PageURL'] .'/index.php?step=4&account='. $rows['id'] .'&hash='. $NewHash .'" target="_blank">
'
. $Config['Site']['PageURL'] .'/index.php?step=4&account='. $rows['id'] .'&hash='. $NewHash .'</a><br/><br/>
При переходе на данную страницу Ваш пароль будет переустановлен, и новый пароль будет отослан Вам по электронной почте.<br/><br/>
Ваше имя пользователя: '
. ucfirst($rows['username']) .'<br/><br/>
С Наилучшими Пожеланиями, <br/>
Администрация сервера '
. $Config['ServerDetails']['ServerName'];

$mail->MsgHTML($MailBody);
$mail->AddAddress($rows['email'], $rows['username']);
# Выводим ошибку в случае невозможности отправки почты.
if(!$mail->Send())
echo '<h4 align="center"><span style="color: red;"><b>Произошла ошибка при отправке почты. Пожалуйста, попробуйте позже.</b></span><br/><a href="/index.php">Вернуться</a></h4>';
else {
# Сохраняем информацию о нашей сессии.
$Recovery->query("INSERT INTO `passw_recovery` (`userid`,
`hash`,
`ip`,
`date`,
`email`
)
VALUES (?,?,?,?,?)"
,
$rows['id'],
$NewHash,
getenv('REMOTE_ADDR'),
time(),
$rows['email']);

$mail->ClearAddresses();

echo '<h4 align="center"><span style="color: green;"><b>Ваше имя пользователя и информация о том, как сменить пароль, высланы вам по электронной почте.</b></span><br/><a href="/index.php">Вернуться</a></h4>';
}
}


break;

case '4':
# Проверяем валидность присланного нам хеша.
if(!CheckHashValid($Hash))
echo '<h4 align="center"><span style="color: red;"><b>Данная ссылка неверна, либо устарела.</b></span><br/><a href="/index.php">Вернуться</a></h4>';
# Проверяем существует ли такой хеш и не восстановлен ли по нему пароль.
elseif(!CheckHashExist($Hash))
echo '<h4 align="center"><span style="color: red;"><b>Данная ссылка неверна, либо устарела.</b></span><br/><a href="/index.php">Вернуться</a></h4>';
else {
# Если всё хорошо, выбираем инфу по аккаунту.
# Фактически, мы повторяем действия в 3м шаге.

$rows = $Auth->SelectRow("SELECT `id`, `username`, `email` FROM `account` WHERE `id` = ?d", $Account);
# Если аккаунт не найден, выдаём ошибку.
if(!$rows)
echo '<h4 align="center"><span style="color: red;"><b>Данная ссылка неверна, либо устарела.</b></span><br/><a href="/index.php">Вернуться</a></h4>';
else {
# Генерируем новый пароль. По-умолчанию его длинна равна 5 символам.
# Если хотите её изменить, то подставьте нужную цифру в качестве аргумента функции.

$Passw = GenerateNewPassw();

# Отправляем почту с паролем.
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->Host = $Config['SMTP']['Host'];
$mail->Username = $Config['SMTP']['User'];
$mail->Password = $Config['SMTP']['Passw'];
$mail->SetFrom($Config['SMTP']['FromMail'], $Config['SMTP']['FromName']);
$mail->AddReplyTo($Config['SMTP']['FromMail'], $Config['SMTP']['FromName']);
$mail->Subject = 'Информация о Вашем аккаунте для доступа на сервер ' . $Config['ServerDetails']['ServerName'];

# Создаём тело сообщения.
$MailBody = 'Уважаемый(ая) ' . ucfirst($rows['username']) . '! <br/>
Это письмо содержит информацию о Вашем аккаунте. <br/>
Пожалуйста, прочитайте все полностью, распечатайте или сохраните данный текст. <br/><br/>
<strong>Данные по Вашему аккаунту на сервере</strong>. <br/>
Логин : '
. $rows['username'] .' <br/>
Пароль : '
. $Passw .' <br/><br/>
<strong>Правила Безопасности</strong>. <br/>
Для повышения уровня безопасности и сохранности данных на своем аккаунте мы рекомендуем: <br/>
1. Использовать последние версии программного обеспечения, производить их регулярное обновление.<br/>
2. Иметь на персональном компьютере антивирус и файроволл.<br/>
3. Как можно чаще изменять пароли доступа в игру, создавая их уникальными и сложными.<br/><br/>
С Наилучшими Пожеланиями, <br/>
Администрация сервера '
. $Config['ServerDetails']['ServerName'];

$mail->MsgHTML($MailBody);
$mail->AddAddress($rows['email'], $rows['username']);
# Выводим ошибку в случае невозможности отправки почты.
if(!$mail->Send())
echo '<h4 align="center"><span style="color: red;"><b>Произошла ошибка. Пожалуйста, попробуйте позже.</b></span><br/><a href="/index.php">Вернуться</a></h4>';
else {
$Auth->query("UPDATE `account` SET `sha_pass_hash` = ?, `sessionkey` = '', `v` = '', `s` = '' WHERE `id` =?d", CreateShaPassHash($rows['username'], $Passw), $Account);
$Recovery->query("UPDATE `passw_recovery` SET `status` = ?d WHERE `userid` = ?d", '1', $Account);

echo '<h4 align="center"><span style="color: green;"><b>Ваш пароль был переустановлен и выслан вам по электронной почте.</b></span><br/><a href="/index.php">Вернуться</a></h4>';
}

}
}

break;
}

# Выводим футер.
echo '<br/>
<br/>
©
</body>
</html>'
;

?>

Спустя 7 дней, 3 часа, 4 минуты, 58 секунд (4.03.2012 - 11:03) pulvik написал(а):
люди, где же вы? Есть какие варианты? в чем причина?

Спустя 7 минут, 39 секунд (4.03.2012 - 11:11) Visman написал(а):
Вопрос в чем?
Какие ошибки в логах сервера?
Быстрый ответ:

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