gpt4 book ai didi

PHP $_POST 空 - 变量存储在 $_REQUEST 中

转载 作者:行者123 更新时间:2023-11-29 19:46:35 25 4
gpt4 key购买 nike

我对 php 相当陌生,但我在我的 Web 服务器上设置了一个“API”,用于向 MySQL 数据库发送/接收数据。

由于某种原因,当我向 register.php 文件(注册入口点)发送 http post 请求时,$_POST 变量保持为空。然而,在使用 phpconfig() 并进行一些挖掘后,我注意到我发送的参数存储在 $_REQUEST 变量中,所以我更改了我的 register.php 因此,它奏效了。

我的问题是为什么会发生这种情况以及使用 $_REQUEST 是否错误。

我使用 angularjs 的 $http: 发送 http 请求

var link = 'http://www.temporaryurl.com/register.php'

$http.post(link, {'name': 'Adam'},{'email': 'awbasham@test.com'},{'password': 'testingPass!'}).then(function(response) {
console.log("Http success!");
console.log(response);
}, function(response) {
console.log("Http failure");
console.log(response);
});

这里是register.php

<?php
require_once 'include/DB_Functions.php';
$db = new DB_Functions();

// json response array
$response = array("error" => FALSE);

if (isset($_REQUEST['name']) && isset($_REQUEST['email']) && isset($_REQUEST['password'])) {

// receiving the post params
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$password = $_REQUEST['password'];

// Remove all illegal characters from email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);

// Validate e-mail
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
echo("$email is a valid email address");
} else {
echo("$email is not a valid email address");
}

if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
// check if user is already existed with the same email
if ($db->isUserExisted($email)) {
// user already existed
$response["error"] = TRUE;
$response["error_msg"] = "User already existed with " . $email;
echo json_encode($response);
} else {
// create a new user
$user = $db->storeUser($name, $email, $password);
if ($user) {
// user stored successfully
$response["error"] = FALSE;
$response["uid"] = $user["unique_id"];
$response["user"]["name"] = $user["name"];
$response["user"]["email"] = $user["email"];
$response["user"]["created_at"] = $user["created_at"];
$response["user"]["updated_at"] = $user["updated_at"];
echo json_encode($response);
} else {
// user failed to store
$response["error"] = TRUE;
$response["error_msg"] = "Unknown error occurred in registration!";
echo json_encode($response);
}
}
} else {
echo("$email is not a valid email address");
$response["error"] = TRUE;
$response["error_msg"] = "Email is invalid!";
echo json_encode($response);
}
} else {
$response["error"] = TRUE;
$response["error_msg"] = "Required parameters (name, email or password) is missing!";
echo json_encode($response);
}
?>

最佳答案

我的问题是双重的。一,我认为 $_POST 是空的,因为我天真地通过在网络浏览器中输入 url 来测试 register.php 文件(我忘记使用 chrome 扩展来强制 POST 而不是 GET)。

另外,我在我的 angularjs 文件中调用 $http ,如下所示:

$http({
method: 'POST',
url: link,
data: data1,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}}).then(function(response) {
console.log("Http success!");
console.log(response);
}, function(response) {
console.log("Http failure!");
console.log(response);
});

我认为有帮助的是将 Content-Type 定义为“application/x-www-form-urlencoded”并将 data1 传递为

var data1 = "name=adam&email=test@test.com&password=testPass!";

关于PHP $_POST 空 - 变量存储在 $_REQUEST 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40936148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com