Отображение сообщений об ошибках с помощью php?

0

У меня есть HTML файл, который содержит регистрационную форму (входы, метки, кнопки и т.д.). У меня есть специальный div:

<div id ="errorArea"></div>

- это зарезервированное пустое пространство. Я хочу использовать для отображения сообщений об ошибках (логин уже используется, пароли не совпадают, адрес электронной почты не может быть пустым и т.д.). Существует кнопка отправки, которая запускает php. В текущем состоянии все работает нормально, поскольку я использую это для отображения сообщений:

if (!empty($myrow['id'])) {
    exit ("this login is already used");
 }

После нажатия кнопки отправки, если есть ошибка, новый белый пробел показывает нам предопределенный текст. Я пытаюсь достичь: показывать сообщения об ошибках внутри errorArea div, не покидая текущей страницы. Можете ли вы помочь, поскольку я не могу найти себе лучший способ сделать это. Имейте в виду, что у меня очень мало знаний в php-языке.

Обновление Возможно, есть способ обновить страницу с новыми параметрами или законно загружать другую, которая является той же самой страницей, за исключением добавления нового текста?
Update2 Может ли кто-нибудь объяснить мне, возможно ли, запустить javascript перед публикацией данных, а также запускать php-скрипт?

  • 0
    Вы должны отправить свою форму, используя ajax. Затем отобразите ответ php внутри вашего div, используя javascript.
  • 0
    похоже, вы можете использовать javascript в DOM для публикации значений через ajax, и php вернет сообщение в javascript для отображения в DOM.
Показать ещё 19 комментариев
Теги:

4 ответа

0
Лучший ответ

То, что вы хотите, - это проверка на стороне клиента, которая обычно достигается с помощью JavaScript. Я бы рекомендовал использовать библиотеку jQuery, поскольку он абстрагирует много уродства обеспечения совместимости с браузером. Следующий псевдокод - это начальная точка, если вы хотите проверить, когда пользователь попадает в submit.

$('#myForm').submit(function(e) {
    // do error checking here

    If (error) {
         // spend error message to div
         return false; // prevents standard form submission event
    }
 });

Другой вариант - проверить каждое поле ввода, когда пользователь закончит ввод в поле. Ниже наброски псевдокода:

$(document).on('change', '.my-form-fields', function () {
    // check if valid and post message if needed
});
  • 0
    «То, что вы хотите, это проверка на стороне клиента» - его пример состоит в том, что идентификатор входа в систему уже используется. как клиентская сторона может знать это? «чего можно достичь только с помощью JavaScript» - только? Попробуй обычно. См. En.wikipedia.org/wiki/Client-side_scripting
  • 1
    Я исправлен ... хотя я бы сказал, что vbscript практически мертв, и как ActionScript, так и DART являются надмножествами JavaScript. Ооо, я бы не назвал это непростительным преступлением!
Показать ещё 1 комментарий
0

Может быть, мой код поможет вам)

Html с jQuery:

(function($){

"use strict";

$('document').ready(function(){
    $( ".submit-button" ).on('click', function(){

    var ajaxData = {
        action: 'getsettings',
        string: $('.name').val()
    };

    $.ajax({
        type: 'POST',
        url: 'resp.php',
        data: ajaxData }).done(function(msg){
            console.log(msg);
        });
    });
});

})(jQuery);


<input type="text" class="name">
<button class="submit-button">Button</button>   

И файл resp.php с php-скриптом:

if ( 'POST' === $_SERVER['REQUEST_METHOD'] && 
     isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) && 
     'XMLHttpRequest' === $_SERVER['HTTP_X_REQUESTED_WITH'] ) {

    if (    'getsettings' === $_POST['action'] &&
        isset($_POST['action']) && 
        !empty( $_POST['action'] ) ) {

     echo $_POST['string'];
     /*.... Your code ....*/

    }

}

Это нормально!

0

"без оставления текущей страницы" - очень плохая идея.

Во-первых, whet - это ваша форма? Обычно это должно привести к скрипту проверки, который пользователь не видит, а это, в свою очередь, может привести к успешной странице входа или, как вам кажется, перестроить первую страницу входа в систему с сообщением об ошибке.

Все это очень стандартно. Просто google для чего-то вроде учебника проверки формы входа в PHP (или примера).

Не волнуйтесь, PHP учится учиться (но получайте хорошую IDE, например NetBeans).

Удачи!


[Обновление] Я просто искал для php login example и есть хорошие удары. Например, первый http://www.9lessons.info/2009/09/php-login-page-example.html, но зачем смотреть на некоторые из первых страниц хитов?

ВАЖНО: многие люди говорят вам, что ДОЛЖНЫ использовать клиентский код. Это не так.

Да, клиент-сайдеры, я могу и делаю, кодовую клиентскую сторону (я начал с простого JS, перешел на JQuery и теперь кодировал AndularJs). Я знаю, почему клиентская сторона, Ajax или иначе, это хорошая вещь, но похоже, что OP только начинается, поэтому почему бы не позволить ему сначала овладеть сервером? Затем, когда он справился с этим, он может посмотреть на клиентскую сторону (я просто боюсь, что кто-то здесь попытается поговорить с ним об использовании NodeJs на стороне сервера. Опять же, не совсем неправильно, но для новичка лучше всего начните с PHP)

Это можно сделать полностью на стороне сервера. Части входа ДОЛЖНЫ выполняться на стороне сервера (где вы собираетесь проверять пароль?).

OP, ввод какой-либо формы может быть проверен на стороне клиента (это то, что действительная дата, почтовый индекс и т.д. Является обязательным полем?)

Вы можете (я могу даже сказать "должен") сделать эту клиентскую сторону, чтобы избежать поездки туда и обратно на сервер.

Но вы также можете просто вытолкнуть весь пользовательский ввод на сервере и позволить ему разобраться. Я настоятельно рекомендую это - для более компактного.

Я советую вам, как более компактному,:

  • становятся достаточно опытными на стороне сервера, прежде чем попасть на клиентскую сторону (но обещают в среднесрочной перспективе)
  • получить хорошую среду IDE, такую как NetBeans, и узнать, как использовать отладчик
  • посмотрите на код других людей. Google для tutorial или example для того, что вы пытаетесь сделать. Было бы не больно покупать книгу, чтобы учиться.

Клиент-сидери - мольба - пусть не начнет пламенную войну. Я знаю, почему вы выступаете за то, что вы защищаете, но это не на 100% необходимо - в этом случае - все это может быть сделано на стороне сервера, и я просто пытаюсь помочь OP учиться, а не решать, что все слишком сложно & отказаться и уйти.

  • 0
    Извините, почему плохая идея не покидать страницу?
  • 2
    Это должен быть комментарий, а не ответ
Показать ещё 7 комментариев
-3

Вам нужен Javascript, поскольку PHP является серверной, и вы не можете изменять текст только с помощью PHP и не оставляя/обновляя/перенаправляя, вот пример того, как проверять адрес электронной почты и добавлять текст в div

Он взят из http://www.w3schools.com/js/js_form_validation.asp и изменен на ваш случай

<!DOCTYPE html>
<html>
<head>
<script>
function validateForm()
{
var x=document.forms["myForm"]["email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
  {
  document.getElementById('errorArea').innerHTML = "Invalid Email";
  return false;
  }
}
</script>
</head>

<body>
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post">
Email: <input type="text" name="email">
<input type="submit" value="Submit">
<div id ="errorArea"></div>
</form>
</body>

</html>
  • 2
    И как я буду работать с базой данных без php? :)
  • 0
    +1 Ага, ты не такой новичок, как я думал. Да, для некоторых из них вы ДОЛЖНЫ перейти на сервер, для всего этого вы можете перейти на сервер. JS не нужен , просто полезен. Можете ли вы сказать нам, если вы хотите изучать JS и PHP одновременно или сначала PHP, а затем JS?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню