【问题标题】:Slim php framework 3 passing email in argument not workingSlim php framework 3 在参数中传递电子邮件不起作用
【发布时间】:2017-06-02 00:14:38
【问题描述】:

我在使用 slim PHP framework 3 时遇到错误。

“请求的资源 /try/foo@bar.com/secret 未在 这台服务器。”

我是苗条 PHP 框架的新手。当我输入电子邮件地址“foo@bar”和密码“secret”时,它会产生一个空白错误(即"")。 当我输入电子邮件地址“baz”和密码“secret2”时,它不会产生任何错误消息。

我基本上是在为 Android 制作网络服务,用户将在其中输入电子邮件地址和密码,所需的查询将以 JSON 格式返回。

$app - > get('/try/{email}/{password}', function($request, $response, $args) {
    include_once('db.php');




    $email = $request - > getAttribute('email');
    echo $email;
    $password = $request - > getAttribute('password');
    echo $password;

    $sql = "select * from user where email='$email' and password='$password'";
    echo $sql;
    $result = mysqli_query($con, $sql);

    if (mysqli_num_rows($result) > 0) {
        // output data of each row
        $data[] = mysqli_fetch_assoc($result);
        header('Content-Type:application/json');
        echo json_encode($data);

    } else {
        echo "0 results";
    }

    mysqli_close($con);

});

【问题讨论】:

  • 对我来说确实有效。我用的是XAMPP,你用的是什么?向我们展示您的 .htaccess 文件
  • 我正在使用 wamp 。 RewriteEngine On RewriteCond %{Request_Filename} !-F RewriteCond %{Request_Filename} !-d RewriteRule ^ public/index.php [QSA,L]
  • 它对我有用,但不同之处在于我在 public/ 目录而不是根目录中有 .htaccess 文件。
  • 包含一个示例 curl 请求和带有标头的响应,以帮助了解您实际执行的请求。

标签: php slim


【解决方案1】:

其实我通过Base64逻辑对参数进行编码解决了这个问题。

btoa(标准)

在端点(我的是 PHP)我做了一个 base64decode 操作。

【讨论】:

    【解决方案2】:

    @ 不是 url 中的有效字符:(请参阅https://stackoverflow.com/a/1856809/1172363

    您必须使用 urlencoded 电子邮件值创建链接...

    $app->urlFor("your_route_name", array("email" => urlencode($mail), "password" => urlencode($password));
    

    在你的情况下,它会是(例如):

    http://yourserver/try/foo%40bar/your_pass

    【讨论】:

    • 其实我对带句点“.”的地址有问题
    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 2014-05-01
    • 2018-04-17
    • 2012-05-26
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 2014-06-03
    相关资源
    最近更新 更多