当前位置: 首页 > 知识库问答 >
问题:

将错误PHP发布到dynamoDB

程凯定
2023-03-14

发布到DynamoDB,以便用户登录

致命错误:未捕获的异常'Aws\DynamoDb\Exception\DynamoDbException',带有消息'在“https://dynamodb.us-east-1.amazonaws.com”上执行“GetItem”时出错;AWS HTTP错误:客户端错误:POSThttps://dynamodb.us-east-1.amazonaws.com导致400错误请求响应:{"__type":"com.amazon.coral.validate#ValidationException","消息":"提供的键元素与架构不匹配"(截断...)ValidationException(客户端):提供的键元素与架构不匹配 - {"__类型":"com.amazon.coral.validate#ValidationException","消息":"提供的键元素与架构不匹配"}'GuzzleHttp\Exception\ClientException:客户端错误:POSThttps://dynamodb.us-east-1.amazonaws.com导致400错误请求响应:{"__type":"com.amazon.coral.validate#ValidationException","消息":"提供的键元素与架构不匹配"(截断...)在 /var/www/html/sdks/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113堆栈跟踪:#0 /var/www/html/sdks/vendor/guzz在 /var/www/html/sdks/vendor/aws/aws-sdk-php/src/WrappedHttpH192行

我的PHP代码-----

    require 'config.php';
    use Aws\DynamoDb\DynamoDbClient;

    $client = new DynamoDbClient([
        //'profile' => 'default', // access ID + secret are in the       .aws/credentials file
        'region' => 'us-east-1', // also tried with "eu-west-1"
        'version' => 'latest',
        'debug'  => true
    ]);
    // echo "after client instanciation"; // this is not displayed

    $username = null;
    $password = null;

    if ($_SERVER['REQUEST_METHOD'] == 'POST') {

    if(!empty($_POST["userid"]) && !empty($_POST["password"])) {
         $username = $_POST["userid"];
         $password = $_POST["password"];

         $response = $client->getItem(array(
             'TableName' => 'user',
             'Key' => array(
             'userid' => array( 'S' => $username),
             'password' => array( 'S' => $password),
         )
         ));

         if($username == 'userid' && $password == 'password') {
              session_start();
              $_SESSION["authenticated"] = 'true';
              header('Location: index.php');
         }
         //else {
              //header('Location: login.php');
         //}

    //} else {
         //header('Location: login.php');
    }

    print_r ($response['Item']);
  }
?>

共有1个答案

徐智渊
2023-03-14

我怀疑您的主键(哈希/分区键)实际上是“userid”,而不是“userid”“password”。因此,DynamoDB确切地告诉您,无论您使用什么名称传递给DynamoDB,都与DynamoDB认为您的主键不匹配。我想,一旦你去掉下面这条线,它将更接近于为你工作:

'password' => array( 'S' => $password),

顺便说一句,您可能希望使用某种算法安全地存储密码-可能是bcrypt或类似算法。否则,您的密码将以纯文本形式存储,这在当今被认为是一种不好的做法。

 类似资料:
  • 问题内容: 我有一个简单的php文件,它可以解码我的json字符串,并与ajax一起传递并标记结果,但是我不能保留变量,为什么? 我尝试使用fireBug进行检查,我可以看到POST请求已正确发送,当调用 php 脚本时,他对我做出了Noooooooob的响应,似乎已设置了任何POST变量。 我想要的就是拥有我的数组=) JSON字符串由生成: 的JavaScript save_categorie

  • 问题内容: 如何将POST数据发送到PHP中的URL(无表单)? 我将使用它来发送变量以完成并提交表单。 问题答案: 如果您希望将数据从PHP代码本身发布到URL(不使用html表单),则可以使用curl来完成。它看起来像这样: 这会将post变量发送到指定的url,页面返回的内容将在$ response中。

  • 问题内容: -– -–解决方案— -– 问题在我们的服务器上。如果将www放在域名前面,它只能处理发帖请求。这就是造成问题的原因。我将第一个答案设置为THE答案,因为一旦我整理出网址,它便会起作用。 原始问题 我的PHP脚本中有一个POST变量,始终为空。 我试图更改变量的名称,变量的内容等。 问题必须存在于Java代码中,因为当我在php中请求时,它为null。 这是我的情况: 我让用户拍摄照片

  • 问题内容: 好吧,我已经建立了我的json字符串,但是我不确定下一步该怎么做? 在我的php文件中,我试图将dataString写入文本文件,这样我可以看到它通过ok,但是文本文件中什么都没有!我在客户端或PHP方面做错了什么,我的php代码: 问题答案: 您为什么不尝试像这样构造数据 然后在您的AJAX通话中 现在,您的PHP脚本可以将数据作为多维数组处理

  • 我试图使用Gradle将Jar文件发布到Azure DevOps工件中,但我得到了以下错误信息: 失败:生成失败,出现异常。 > 问题:在根项目“Project1”中找不到任务“publish”。 尝试:运行gradle tasks以获取可用任务的列表。使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。运行--扫描以获得完整的洞察力。

  • 问题内容: 我可能还差得远,但是我整个下午一直在尝试在本教程PHP框架教程中运行curlpost命令。我不明白的是PHP应该如何解释我的POST,它总是以空数组的形式出现。 (其中的斜线只是让我看起来不像是个白痴,而是我使用PHP 5.2在Windows上执行此操作,也曾在与Linux curl相同版本的Linux服务器上尝试过) 我必须缺少一些东西,因为它看起来很简单,帖子解释得不好,如果可以的