как показать сообщения об ошибках в той же всплывающей форме PHP - PullRequest
1 голос
/ 03 февраля 2012

Я пытался создать всплывающую форму php и всплывающие страницы входа в систему, и, к счастью, я получил некоторые заметки и ресурсы из сети о том, как спроектировать и создать то, что я задумал.Единственная проблема сейчас заключается в том, что всякий раз, когда я отправляю форму или всплывающую страницу входа в систему, сообщения об ошибках возвращают страницу из всплывающего окна на исходную страницу, а это не то, что мне нужно.Я считаю, что есть способ, как сделать проверку на той же странице входа в систему / форма, которая может происходить в том же всплывающем окне.Любая идея, как это сделать ??

С нетерпением жду ответа от вас.

Если требуется код или что-нибудь связанное, я бы опубликовал его здесь и обновил оригинальный вопрос.

обновление # 1: вот код.PS этот код идет между тегами тела

<?php

if ($username && $userid){
    echo "You are already logged in as <b>$username</b>. <a href='./member.php'>Click here</a> to go to the member page...or <a href='./logout.php'>Logout</a>";
}
else{
    $form = "<form action='./login.php' method='post' id='loginform'>
    <table>
    <tr>
        <td>Username:</td>
        <td><input type='text' name='user' /></td>
    </tr>
    <tr>
        <td>Password:</td>
        <td><input type='password' name='password' /></td>
    </tr>
    <tr>
        <td></td>
        <td><input type='submit' name='loginbtn' value='Login' /></td>
    </tr>
    <tr>
        <td><a href='./register.php'>Register</a></td>
        <td><a href='./forgotpass.php'>Forgot your password?</a></td>
    </tr>
    </table>
    </form>";

    if ($_POST['loginbtn']){
        $user = $_POST['user'];
        $password = $_POST['password'];

        if ($user){
            if ($password){
                require("connect.php");

                $password = md5(md5("kj87fiJAR46ufj".$password."Fj754456fj"));
                // make sure login info correct
                echo"$password";
                $query = mysql_query("SELECT * FROM users WHERE username='$user'");
                $numrows = mysql_num_rows($query);
                if ($numrows == 1){
                    $row = mysql_fetch_assoc($query);
                    $dbid = $row['id'];
                    $dbuser = $row['username'];
                    $dbpass = $row['password'];
                    $dbactive = $row['active'];

                    if ($password == $dbpass){
                        if ($dbactive == 1){
                            // set session info
                            $_SESSION['id'] = $dbid;
                            $_SESSION['username'] = $dbuser;

                            echo "You have been logged in as <b>$dbuser</b>. <a href='./member.php'>Click here</a> to go to the member page.";

                        }
                        else
                            echo "You must activate your account to login. $form";
                    }
                    else
                        echo "You did not enter the correct password. $form";
                }
                else
                    echo "The username you entered was not found. $form";

                //mysql_close();
            }
            else
                echo "You must enter your password. $form";
        }
        else
            echo "You must enter your username. $form";
    }
    else
        echo $form;
}
?>

и есть код для всплывающего окна.

update # 2: Если найдены аналогичные слова, показывающие, какчтобы создать полную страницу входа в систему с всплывающим окном, поэтому я собираюсь начать оттуда: введите описание ссылки здесь

Спасибо,

1 Ответ

2 голосов
/ 03 февраля 2012

Используйте для этого ajax.

Для примера входа в систему:

отправка и запрос ajax с учетными данными

выполнить действие через javascript, в зависимости от результата, полученного сервером. Например, если результат запроса равен false, выведите ошибку, если результат равен true, закройте всплывающее окно и при необходимости перенаправьте родительское окно.

Просто пример (ни проверенный, ни работающий), чтобы помочь вам сделать это

1) Включите запросы ajax в код js, включенный в ваше всплывающее окно

//create the request object
if (window.XMLHttpRequest) {
  request = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
  request = new ActiveXObject("Microsoft.XMLHTTP");
}

//send the request (you can do it via post or get)
if (request) {
  request.onreadystatechange = checkAjaxResponse;
  request.open("POST", "your_server_file_that_generates_ajax_response.php", true);
  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  request.send("post params you want to include like param1=value");
}

/**
* Ajax callback function, this should handle your ajax response
*/
function checkAjaxResponse() {

  //check what was de ajax response
  if (request.readyState == 4) {
    if (request.status == 200) {
      xml_response = request.responseXML;   //you can do this with xml, json, ...
    }
  }

  //manipulate your response as needed, and take actions depending on if result is correct or not
  if (manipulated_data_from_the_response !== 'the answer you specified as right') {
    close_popup();
  }
  else {
    show_wrong_credentials_message();
  }
}

2) Реализуйте свой php-файл (или предпочитаемый язык сервера), чтобы войти в систему и создать http-ответ //your_server_file_that_generates_ajax_response.php

<?php

  function authenticateUser($user, $password) 
  {
    $query = "SELECT user_id FROM users_table WHERE user = $user AND password = $password LIMIT 1";

    //connect to your database, then make the query 
    $result = mysql_query($query);
    $row = mysql_fetch_row($result);

    //return the response you want    
    if ($row['user_id']) {
      $res = true; 
    }
    else {
      $res = false;
    }

    return $res;
  }


  //main actions
  echo authenticateUser($_POST['user'], $_POST['password']);

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...