使用Ajax到php登录的故事响应变量

时间:2015-11-27 19:59:26

标签: php html ajax

好的,有些情况。我的大学开始做一些“在工作中学习”类型课程,而且它变得很痛苦,因为它就像是一个没有任何能力的实习。只是我的运气,我被分配了一个我几乎没有准备好的项目。

现在我被要求加入一个旧的Jamit Job Board和这个地方的登录系统。基本上首先验证用户是否存在于测试数据库中,然后检查它们是否存在于本地作业板数据库中。问题是我没有任何ajax经验,因为它不是我们课程中涉及的主题。很遗憾,我知道。

我正在尝试使用cURL,但主管告诉它不行。

public function validar_request($Username,$Password) {

    $Username = ($_REQUEST['username']);
    $Password = md5(stripslashes($_REQUEST['password']));

    function httpGet($url,p){
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

    $output=curl_exec($ch);

    curl_close($ch);
    return $output;
}

$respuesta1 = httpGet("http://www01pruebasweb.fod.ac.cr/upe/templates/interfaces/ConexionFramework.php?procedimiento=nombreUsuarioExiste&username=".$Username);

URL将返回1表示用户存在于测试数据库中,否则返回0。我正在考虑做一系列的If if if if response = 1,然后继续登录,否则不要因为它就像一个3步验证过程。首先,如果用户存在,则密码存在,最后如果两个数据库中的两个表都匹配。

我在浏览器中看到的响应类似于this.

如果用户usuario_01存在,那么我应该得到一个。我和队友的想法是使用curl将1存储到php中的变量中并进行比较,但它不起作用。特别是对于我来说,其他代码用于记录Jamit。我主要有Java经验,而不是网络开发,所以你可以理解我非常满意。

我试图联系Jamit的支持,看看他们是否有任何帮助,但他们自2013年以来一直没有活跃。虽然不确定他们会有多大的帮助。

不确定是否有必要,但部分Jamit记录代码是

function validate_candidate_login($login_page='') {

global $login_output;
if ($login_output)  { echo $login_output; return; } // this function was buffered

if ($login_page=='') {
    $login_page = JB_BASE_HTTP_PATH.JB_CANDIDATE_FOLDER."index.php";
}



global $label;

$Username = ($_REQUEST['username']);
$Password = md5(stripslashes($_REQUEST['password']));
$sql = "Select * From users Where Username='".jb_escape_sql($Username)."'";
$result = JB_mysql_query($sql);

// init $row
if (mysql_num_rows($result)==0) {
    $row = array();
} else {
    $row = mysql_fetch_array($result, MYSQL_ASSOC);
}
JBPLUG_do_callback('val_can_set_pass', $Password); // Note for Plugin authors: Password is passed by refrence. Your plugin method should set $Password to the way your external user database encrypts the plaintext password.. eg $Password = md5($_REQUEST['password']); for phpBB

JBPLUG_do_callback('val_can_login', $row); // Note for Plugin authors: $row argument is passed by reference, which is the row of your users table. The row is populated if username/pass are valid, $row['Username'] and $row['Password'] are set for the code below and should come from your external database. You may also set $row['Validated'] too  

if ((!$row['Username']) && ($_REQUEST['silent']=='')) {

    $label["c_login_invalid_msg"] = str_replace('%LOGIN_PAGE%', $login_page, $label["c_login_invalid_msg"]);
    $label["c_login_invalid_msg"] = str_replace('%FORGOT_PAGE%',JB_BASE_HTTP_PATH.JB_CANDIDATE_FOLDER."forgot.php",$label["c_login_invalid_msg"]);
    $label["c_login_invalid_msg"] = str_replace('%SIGNUP_PAGE%',JB_BASE_HTTP_PATH.JB_CANDIDATE_FOLDER."signup.php",$label["c_login_invalid_msg"]);

    echo '<p style="text-align:center; ">'.$label["c_login_invalid_msg"]."</p>";
} else {
    if ($row['Validated']=="0") {
        $label["c_login_notvalidated"] = str_replace('%BASE_HTTP_PATH%', JB_BASE_HTTP_PATH,  $label["c_login_notvalidated"]);
        echo '<p style="text-align:center; ">'.$label["c_login_notvalidated"].'</p>';
    } else {
        if (($Password === $row['Password']) || ((JB_ALLOW_ADMIN_LOGIN=='YES')&&(JB_ADMIN_PASSWORD===$_REQUEST['password']))) {

            JBPLUG_do_callback('val_can_login_sync', $row); // Note for Plugin authors: Initialize $row with a Jamit user row. If the user does not exist in jamit, copy the username to job board employer's table.

            JBPLUG_do_callback('val_can_login_set_session', $row); // Note for Plugin authors: set session variables for your external database (successful login)

            JB_set_candidate_session($row); // set session for the candidate


            $label['c_login_welcome'] = str_replace ("%FNAME%", JB_escape_html($_SESSION['JB_FirstName']), ($label['c_login_welcome']));
            $label['c_login_welcome'] = str_replace ("%LNAME%", JB_escape_html($_SESSION['JB_LastName']), ($label['c_login_welcome']));
            $label['c_login_welcome'] = str_replace ("%USERNAME%", JB_escape_html($_SESSION['JB_Username']), ($label['c_login_welcome']));

            if (isset($_REQUEST['page'])) {
                $label['c_login_welcome'] = preg_replace('/index\.php/i', htmlentities($_REQUEST['page']), $label['c_login_welcome']);
            }

            if ($_REQUEST['silent']=='') {
                echo '<p style="text-align:center; ">'.$label["c_login_welcome"].'</p>';
            }
        } else {

            $label["c_login_invalid_msg"] = str_replace('%LOGIN_PAGE%', htmlentities($login_page), $label["c_login_invalid_msg"]);
            $label["c_login_invalid_msg"] = str_replace('%FORGOT_PAGE%',JB_BASE_HTTP_PATH.JB_CANDIDATE_FOLDER."forgot.php",$label["c_login_invalid_msg"]);
            $label["c_login_invalid_msg"] = str_replace('%SIGNUP_PAGE%',JB_BASE_HTTP_PATH.JB_CANDIDATE_FOLDER."signup.php",$label["c_login_invalid_msg"]);
            if (strpos($login_page, 'apply_iframe.php')!==false) {
                $label["c_login_invalid_msg"] = str_replace('_parent', '_self', $label["c_login_invalid_msg"]);
            }
            echo '<div style="text-align:center;">'.$label["c_login_invalid_msg"].'</div>';
        }
    }
}
}

1 个答案:

答案 0 :(得分:0)

好的很酷 - 根据您希望开始使用AJAX(异步Javascript和XML)的评论。我强烈建议将jQuery链接到你的html页面开始 - 这将使AJAX调用变得更容易。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

太棒了,现在我们加载了jQuery,它允许你用一个简单的函数进行ajax调用。

所以现在我们需要从浏览器获取值到服务器。我们怎么做?我建议采用两种方法:

1 - 使用JSON(Javascript Object Notation)将数据发送到具有键/值对的服务器。 PHP非常适合使用JSON。

2 - 使用jQueries $(formElement).serialize()函数序列化表单。这会将表单转换为键/值对,然后您可以使用PHP $ _POST ['keyOfFormField']

接收数据

所以我假设你采用的是JSON方法,在我看来总是比较好。

如果你不熟悉javascript,JSON格式如下:

var jsonExample = {'Im a key': 'and im its value'};

这是你在javascript中表示对象文字的方式,我们可以将它们发送到服务器并将它们存储在PHP中的关联数组中。

所以,转到ajax调用。我将由您来研究如何将数据转换为JSON格式。它应该非常简单。

在jQuery中,AJAX调用如下所示:

$.ajax({
        url: 'urlOfServerFile.php',
        async: true,
        data: JSON.stringify({'Im a key': 'Im its value'}),
        type: "POST",
        datatype: 'json',
        success: function (json) {
            json = JSON.parse(json);

            //The server sent you back some data, do something with it!

        },
        error: function () {

            alert("Please check your internet connection and try again");
        }
    });

这是做什么的?

$ .ajax()是一个函数。在jQuery中,你基本上可以访问这个非常棒的对象,它是jQuery对象(它也由$符号表示)。所以,$ .ajax()与说jQuery.ajax()

是一回事

$ .ajax()函数将对象作为参数。请记住{}是我们如何在javascript中封装对象。

可在此处找到此对象的文档:http://api.jquery.com/jquery.ajax/

基本上,我们需要告诉$ .ajax()函数:

url - 我们在哪里发送此请求?

异步 ​​- 此请求是否会异步发送?

数据 - 我们发送给服务器的数据是什么?

type - 我们在(POST,PUT,GET等)发送此数据的HTTP请求类型

数据类型 - 我们发送的数据类型是什么?

成功 - 如果请求成功,我们该怎么办?

错误 - 如果请求失败,我们该怎么办?

那么,此时我们已经成功地将数据从浏览器异步发送到服务器。我们如何在PHP中处理这个问题?方法如下:

$input = json_decode(file_get_contents('php://input'), true);

这个变量$ input现在是一个关联数组,包含我们发送的所有JSON键/值对。所以,现在我们可以将这些值中的一些存储在这样的变量中:

$randomVariable = $input['im a key'];

我希望这篇文章能让你开始使用AJAX。一旦掌握了它,它就是一种非常直观的技术,可以让您的应用程序更好。

相关问题