Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Вывести сообщение о ошибке, проблема
Astin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 26 дней
Карма: 7




Приветствую Форумчане!

Решил сделать вывод сообщений о ошибке на той же странице где и
сама форма, но ничего у меня не выходит.

Надеюсь на вашу помощь.

Вот так вот подключается страница с формой
case 'zayvka' :
include_once './php/credit.php'; // Сам обработчик формы
$file = 'zayvka.tpl'; // Шаблон страницы с формой
$title = 'Онлайн заявка на кредит';
$description = 'Подать онлайн заявку на кредит без Отказа';
$keywords = 'заявка на кредит,подать заявку на кредит';
$css = './skins/css/style.css';
$clas = 'background-color:#215a8e;';
break;


Вот часть кода шаблона страницы где я подключаю
вывод сообщений об ошибках
<div id="zayvka"><!-- начало zayvka -->
<div class="zayvka-top2"><h2>Онлайн заявка на кредит</h2></div>
<?php
echo getInfo($error); ?>
<div
class="form-contact"><!-- начало form-contact -->
<form class="contact_form" action="" method="post">


Вот сам обработчик credit.php
<?php
// Генерация страницы ошибки при доступе вне системы
if(!defined('KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('../message/404.html'));
}
/////////////////////////////////////////////////////////

// Сама функция вывода сообщений об ошибках
function getInfo($error)
{
if(count($error))
return '<br>' . implode('<br>', $error);
}


//Если переменная zalog передана
if (isset($_POST["zalog"])) {

/* Задаем переменные */
$dat=date("d.m.Y");
$fio = htmlspecialchars(trim($_POST["fio"]));
$den = htmlspecialchars($_POST["den"]);
$mesyc = htmlspecialchars($_POST["mesyc"]);
$year = htmlspecialchars($_POST["year"]);
$city = htmlspecialchars($_POST["city"]);
$region = htmlspecialchars($_POST["region"]);
$zanyt = htmlspecialchars($_POST["zanyt"]);
$zalog = htmlspecialchars($_POST["zalog"]);
$sums = htmlspecialchars(trim($_POST["sums"]));
$srok = htmlspecialchars(trim($_POST["srok"]));
$history = htmlspecialchars($_POST["history"]);
$email = htmlspecialchars(trim($_POST["email"]));
$tel = htmlspecialchars(trim($_POST["tel"]));
$bezspama = htmlspecialchars($_POST["bezspama"]);
$pattern = "#^[а-яё\-\sa-z]+$#ius";
$status = "Новая заявка";
$ip = $_SERVER['REMOTE_ADDR'];

if (!preg_match($pattern, $fio)) {
$error[] = 'Поле "ФИО" заполнено не правильно!';
}
if (!preg_match("/^\+?[0-9]{11,12}$/",$tel)) {
$error[] = 'Поле "Телефон" заполнено не правильно!';
}
if (!preg_match("/^[a-z0-9_.-]+@([a-z0-9]+.)+[a-z]{2,6}$/i",$email)) {
$error[] = 'Не корректный адрес почты';
}
if (!empty($bezspama)) {
$error[] = 'Ты БОТ! БОТАМ запрещено заполнять форму!';
}
if (empty($zalog)) {
$error[] = 'Поле "Предмет залога" не должно быть пустым!';
}

if(!count($error))
{
$query = "
INSERT INTO
`pr`
SET
`status` = '"
.mysql_real_escape_string($status)."',
`dat` = NOW(),
`fio` = '"
.mysql_real_escape_string($fio)."',
`den` = "
.$_POST['den'].",
`mesyc` = '"
.mysql_real_escape_string($mesyc)."',
`year` = "
.$_POST['year'].",
`city` = '"
.mysql_real_escape_string($city)."',
`region` = '"
.mysql_real_escape_string($region)."',
`zanyt` = '"
.mysql_real_escape_string($zanyt)."',
`zalog` = '"
.mysql_real_escape_string($zalog)."',
`sums` = "
.$_POST['sums'].",
`srok` = "
.$_POST['srok'].",
`history` = '"
.mysql_real_escape_string($history)."',
`email` = '"
.mysql_real_escape_string($email)."',
`tel` = "
.$_POST['tel'].",
`ip` = '"
.$ip."'
"
;
$sql = mysql_query($query) or die("Ошибка данных!");
// получаем номер добавленной записи (id)
$id = mysql_insert_id();

//Если вставка прошла успешно
if (mysql_affected_rows() > 0) {

if (mail ("xxxxxxx@gmail.com",
/*** Сбор дополнительной информации об отправителе сообщения ***/
"Новая заявка с сайта xxxx.ru",
"Дата: $dat
======================================================
Персональные данные.
\n
ФИО: $fio \n
Дата рождения: $den.$mesyc.$year
-----------------------
Город:
$city \n
Регион: $region \n
Тип занятости: $zanyt \n
======================================================
Сведения о кредите.
\n
Предмет залога: $zalog \n
Сумма кредита, тг: $sums \n
Срок займа, месяц: $srok \n
Кредитная история: $history \n
======================================================
Контактная информация.
\n
E-mail: $email \n
Телефон: $tel",
"Content-type:text/plain; charset=utf-8"));
header('Location: ./message/ok.html');
echo '';
}
}

die();
}


Когда начал проверять форму на вывод ошибок, то получилась вот такая штука:
Данные при ошибке на добавляются в базу и не приходит сообщение на почту,
НО сама ошибка не выводится на той же странице и при этом просто показывается белый экран.

Вот точно что-то сделал не так, уже несколько часов ковыряю и все никак.

Как же сделать вывод сообщений о ошибке на той же странице где и сама форма?




PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22694
Пользователь №: 20039
На форуме: 7 лет, 1 день
Карма: 599




Не останавливай работу скрипта через exit. А пиши нормальный вывод, если $errors массив есть, то его выводи.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 26 дней
Карма: 7




Цитата (inpost @ 5.03.2016 - 16:06)
Не останавливай работу скрипта через exit. А пиши нормальный вывод, если $errors массив есть, то его выводи.

inpost

ООООГромное СПАСИБО!!!

Теперь буду знать, оказывается точно не нужно останавливать работу скрипта
Убрал die(); и все заработало

УРА!!!!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 10 дней
Карма: 77




`den` = ".$_POST['den'].",

почему ты эти(ещё 5) строчки никак не обрабатываешь ?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 26 дней
Карма: 7




Цитата (Kusss @ 5.03.2016 - 16:37)
`den` = ".$_POST['den'].",

почему ты эти(ещё 5) строчки никак не обрабатываешь ?

А как нужно обработать числовые поля?

Кстати, этот код со вставкой в базу ты мне писал пример еще в первых моих
топиках
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 10 дней
Карма: 77




Если ты вернешься к той теме ( http://phpforum.su/index.php?showtopic=0&v...dpost&p=3103380 ), то увидишь что перед добавление в запрос, мы проверяли значения, являются ли данные числом. Тут этой проверки нет.
смотри http://phpforum.su/index.php?showtopic=0&v...dpost&p=3103295

Это сообщение отредактировал Kusss - 5.03.2016 - 17:02
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 26 дней
Карма: 7




Цитата (Kusss @ 5.03.2016 - 16:57)
Если ты вернешься к той теме ( http://phpforum.su/index.php?showtopic=0&v...dpost&p=3103380 ), то увидишь что перед добавление в запрос, мы проверяли значения, являются ли данные числом. Тут этой проверки нет.
смотри http://phpforum.su/index.php?showtopic=0&v...dpost&p=3103295

Тогда получается мне нужно вместо вот этого
`sums` = ".$_POST['sums'].",

Прописать вот так
`sums` = '".intval($sums)."',


Правильно?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 10 дней
Карма: 77




Astin
нет ... (вздыхает) .
вторая ссылка, читай сообщения дальше. Ты опять на те-же грабли наступаешь.
$query = "
INSERT INTO
`pr`
SET
`status` = '"
.mysql_real_escape_string($status)."',
`dat` = NOW(),
`fio` = '"
.mysql_real_escape_string($fio)."',
`den` = "
.(int)$_POST['den'].",
`mesyc` = '"
.mysql_real_escape_string($mesyc)."',
`year` = "
.(int)$_POST['year'].",
.....
или
intval($_POST['den'])


Это сообщение отредактировал Kusss - 5.03.2016 - 17:14
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 26 дней
Карма: 7




Цитата (Kusss @ 5.03.2016 - 17:12)
Astin
нет ... (вздыхает) .
вторая ссылка, читай сообщения дальше. Ты опять на те-же грабли наступаешь.
$query = "
INSERT INTO
`pr`
SET
`status` = '"
.mysql_real_escape_string($status)."',
`dat` = NOW(),
`fio` = '"
.mysql_real_escape_string($fio)."',
`den` = "
.(int)$_POST['den'].",
`mesyc` = '"
.mysql_real_escape_string($mesyc)."',
`year` = "
.(int)$_POST['year'].",
.....
или
intval($_POST['den'])

Спасибо Kusss!
Извиняюсь за такой мелкий головняк.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 26 дней
Карма: 7




А вот если у меня прописано вот так
$den = htmlspecialchars($_POST["den"]);


То вместо
intval($_POST['den'])


Я могу же прописать вот так
intval($den)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 10 дней
Карма: 77




можешь
но лучше так
$year = (int)$_POST["year"];
$city = htmlspecialchars($_POST["city"]);

то есть изначально приводить данные к нужному типу.
 `year` = $year,
`city` = '".mysql_real_escape_string($city)."',
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса