嗨,我有一个PHP web返回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":"إختصاصيفيالامراضالنفسيةوالعصبية"、"地址":"Av tahar sfar imm .El巴拉卡苏塞4000","adresse_arabe":"4000شارعطاهرسفرعمارةالبركةسوسة"、"telephone_cabinet":"73698521","gsm":"25631478"}]}
but with
$login = $_POST['login'];
$password = $_POST['password'];
it return
{"items":null}
有谁能给我解释一下吗:)谢谢
因为调用这个页面的post有一个GET方法,所以将它替换为post,它将像预期的那样工作。
另一点是,由于安全风险,不鼓励在查询数据库时使用字符串连接。
第一个:为了爱…明文密码和没有请求验证?
在你做任何事情之前,请先阅读一下sql注入,以及为什么明文是不好的,真的真的很糟糕。
现在回答你的问题。
$_GET
数组包含GET METHOD对服务器调用的查询参数ex (?test=test)。GET是基本的HTTP调用,它告诉服务器你想读取一个页面。
IN OLD TIME :
$_POST
数组包含post METHOD调用的post参数。当您想要更新或添加服务器上的信息时,使用POST。这通常是从html表单调用的。W3School有一个关于HTTP方法调用的指南。
BUT NOW WITH AJAX AND THE NEW FEATURES OF HTML5 :
你可以使用'POST'来获取数据。
这里的问题是像FIREFOX和CHROME这样的导航器的安全性;
THE SOLUTION :
在服务器PHP中修改cors http:将其添加到页面的第一个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.