嗨,我有一个php网页,用json!编码返回json数据但是当我将它从GET更改为POST时返回null
<?php
header('Content-Type: application/json; charset=utf-8');
include('settings.php');
mysql_connect($host,$user,$password);
mysql_select_db($base);
mysql_query('SET CHARACTER SET utf8');
$login = $_GET['login'];
$password = $_GET['password'];
$req = "select * from user WHERE username = '".$login."' and password = '".$password."'";
$sql=mysql_query($req);
$nn=mysql_num_rows($sql);
$items = array("items" => NULL);
while ($data=mysql_fetch_array($sql))
{
$items["items"][] = array(
"id" => $data['id'],
"username" => $data['username'],
"password" => $data['password'],
"nom_prenom" => $data['nom_prenom'],
"nom_prenom_arabe" => $data['nom_prenom_arabe'],
"specialite" => $data['specialite'],
"specialite_arabe" => $data['specialite_arabe'],
"adresse" => $data['adresse'],
"adresse_arabe" => $data['adresse_arabe'],
"telephone_cabinet" => $data['telephone_cabinet'],
"gsm" => $data['gsm'],
);
}
echo json_encode($items,JSON_UNESCAPED_UNICODE);
?>
它返回
{ “项”:[{ “ID”: “2”, “用户名”: “的 ** ”, “密码”:“的 * 的“,”“nom_prenom”:“ **** ”,“nom_prenom_arabe”:“مهذبعبدالصمد”,“specialite”:“Pediatrie”,“specialite_arabe”:“إختصاصيفيالامراض النفسيةوالعصبية“,”adresse“:”Av tahar sfar imm .El BARAKA sousse 4000“,”adresse_arabe“:”4000شارعطاهرسفرعمارةالبركةسوسة“,”telephone_cabinet“:”73698521“,”gsm“:”25631478“ }]}
但是
$login = $_POST['login'];
$password = $_POST['password'];
它返回
{"items":null}
任何人都可以向我解释为什么:)谢谢
答案 0 :(得分:0)
第一个:为了爱...明文密码,没有请求验证?
在你做任何事情之前,请先阅读有关sql注入的内容以及为什么明文不好,真的很糟糕。
现在问你。
$_GET
数组包含对GET METHOD调用服务器的查询参数ex(?test = test)。 GET是基本的HTTP调用,告诉服务器您要读取页面。
IN OLD TIME :
$_POST
数组包含POST METHOD调用的post参数。如果要在服务器上更新或添加信息,则使用POST。这通常是从html表单调用的。
W3School在这里有一个guide HTTP方法调用。
BUT NOW WITH AJAX AND THE NEW FEATURES OF HTML5 :
你可以使用&#39; POST&#39;获取数据。
这里的问题是导航员的安全,如火焰和铬;
THE SOLUTION :
修改cors http:在服务器PHP中将这个添加到你的页面的第一页php:
//Part added by ilyas :
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
//End of part.
答案 1 :(得分:0)
因为调用此页面的帖子有一个GET方法,所以用POST重新设置它然后它将按预期工作。
另一点是,由于安全风险,在查询数据库时不鼓励使用字符串连接。请改用prepared statements。