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

时间:2017-01-17 19:35:28

标签: php slim

我在使用纤薄的PHP框架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);

});

2 个答案:

答案 0 :(得分:1)

@不是网址中的有效字符:(请参阅http://heyjavascript.com/4-creative-ways-to-clone-objects/

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

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

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

  

https://stackoverflow.com/a/1856809/1172363

答案 1 :(得分:0)

实际上,我通过使用Base64逻辑对参数进行编码来解决了这个问题。

btoa(条件)

在端点(我的是PHP)中,我执行了base64decode操作。