Slim php 框架 3 在参数中传递电子邮件不起作用

Slim php framework 3 passing email in argument not working

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

"The requested resource /try/foo@bar.com/secret was not found on this server."

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

我基本上是在为 Android 制作 Web 服务,用户将在其中输入电子邮件地址和密码,所需的查询将以 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);

});

@ 不是 url 中的有效字符:(参见 )

您必须使用 url 编码的电子邮件值创建您的 link...

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

在您的情况下(例如):

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

其实我是通过Base64逻辑编码参数解决了这个问题

btoa(条件)

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