好的,有些情况。我的大学开始做一些“在工作中学习”类型课程,而且它变得很痛苦,因为它就像是一个没有任何能力的实习。只是我的运气,我被分配了一个我几乎没有准备好的项目。
现在我被要求加入一个旧的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>';
}
}
}
}
答案 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。一旦掌握了它,它就是一种非常直观的技术,可以让您的应用程序更好。