将Json数据解码为PHP变量


Decode Json data into PHP Variables

我使用angularJS ajax 将数据发送到这样的PHP文件

{ username: "someusername", password: "somepassword" }

以前我用这样的东西发送数据

var vars = "username="+fn+"&password="+ln;

但是由于像JSON这样的角度发送数据。我想解码成PHP变量。

这是我的PHP代码

if(isset($_POST['username']) && isset($_POST['password'])){
    $username = $_POST['username'];
    $password = $_POST['password'];
}
$sql = "SELECT * FROM member WHERE username = '$username' AND password = '$password'";

我想做的是像这个

$array = json_decode(file_get_contents('php://input'))
    $username = $array->username;
    $password = $array->password;

$sql = "SELECT * FROM member WHERE username = '$username' AND password = '$password'";

但不知道怎么做。也不知道这一节会发生什么'file_get_contents('php://input')'im将数据从本地计算机发送到互联网服务器PHP文件(跨域)

要将PHP数组转换为变量,请使用提取函数,但这不是一个好方法。

将JSON解码为数组,并使用PHP的过滤函数

在客户端,你需要这样的东西:

$http.post(http://your.url,
  {"username"  : someUserName, "password": somePassword}
).then(function (data, status, headers, config) {
  // do things.
});

在服务器端,您应该有:

$input = json_decode( file_get_contents('php://input'), true );
$username = filter_var($array['username'], FILTER_SANITIZE_STRING));
$password = filter_var($array['password'], FILTER_UNSAFE_RAW));

// this should work but is bad practice. Don't do it.
// extract($input);
// $username and $password are now available to you

此外,您还需要改进代码以防止SQL注入

你可以在这里阅读:how-can-i-prevent-sql-injection-in-hp。

在AngularJS中使用$http.post,然后用post传递JSON数据,然后只使用PHP中的$_post变量和JSON_decode,那么在PHP中就会有一个关联数组。