【问题标题】:Laravel - Post request empty fieldsLaravel - 发布请求空字段
【发布时间】:2020-05-12 06:31:26
【问题描述】:

我将LaravelNginxPHP 7.1Ubuntu 18 一起使用。

我有一个如下的登录表单:

登录.blade.php:

{!! Form::open(['action' => 'LoginController@login'],['class' => 'form'])!!}
    <h2 style="text-align: center;">{{__("Login to your account")}}</h2>
      {!! Form::text('timezone', null,
    array('style'=>'display:none',
      'class'=>'form-control',
      'id'=>'timezone',
      'placeholder'=>__('timezone'))) !!}

      {!! Form::text('pushToken', null,
    array('style'=>'display:none',
      'class'=>'form-control',
      'id'=>'pushToken',
      'placeholder'=>__('Token'))) !!}
   {!! Form::text('email', null,
    array('required',
      'class'=>'form-control',
      'placeholder'=>__('Email'))) !!}
   {!! Form::password('password',
    array('required','placeholder' => __('Password'))) !!}
    {!! Form::checkbox('remember_me', null, null, array(
    'class'=>'checkbox',
    'style'=>'width: fit-content; display: inline-block'
    ))!!}{{__("Remember Me")}}

   {!! Form::Submit(__('Login'), null,
    array(
      'class'=>'form-control'
      )) !!}

      {!! Form::close() !!}

在我的控制器中,当我尝试检查 emailpassword 的值时,它们始终为空。知道当我在 ubuntu 16.04 上测试时一切都很好

控制器代码:

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Request as Req;
use Session;
use Cookie;
use Config;
use Redirect;
class LoginController extends Controller
{


    public function login(Request $request)
    {
        $email = Req::input('email');
        $password = Req::input('password');
        echo $email;
}}

作曲家.json

"require": {
        "php": ">=5.6.4",
        "guzzlehttp/guzzle": "^6.2",
        "laravel/framework": "5.5.*",
        "laravel/tinker": "~1.0",
        "laravelcollective/html": "^5.4",
        "maatwebsite/excel": "~2.1.0",
        "mariuzzo/laravel-js-localization": "^1.4",
        "nesbot/carbon": "^1.25",
        "symfony/psr-http-message-bridge": "^1.0"
    },

【问题讨论】:

  • 你使用的是哪个版本的 laravel?
  • @MayuriPansuriya 添加了 composer.json
  • 你能把你控制器的所有代码贴出来吗?我感觉你是在静态调用请求,而不是通过控制器方法的请求参数
  • 可能是 php.ini 设置中的问题
  • @thisiskelvin 添加了整个控制器

标签: php laravel ubuntu nginx


【解决方案1】:

控制器方法总是接收一个参数Request。试试这个:

public function methodInYourController(Request $request)
{
    $email = $request->get('email');
    $password = $request->get('password');
}

【讨论】:

  • 我可以看到 $_REQUEST 的输出吗?
【解决方案2】:

请使用作为参数传递给login() 方法的Request,而不是您在控制器类顶部别名的请求。

 public function login(Request $request)
    {
        $email = $request->input('email');
        $password = $request->input('password');
        echo $email;
  }

【讨论】:

  • @mustafabarakat 让我知道这是否适用于编辑
  • 它也是空的,我认为这不是问题,因为它在使用旧版本的 ubuntu 时可以工作
  • @mustafabarakat 你试过dd($request-&gt;all()) 看看会发生什么吗?
【解决方案3】:

很多时候 .htaccess 文件有问题。

默认情况下,laravel 带有一个 ModRewrite 规则,该规则将所有不是文件或文件夹的内容重定向到 index.php,但 ami 永远无法正常工作......所以我每次做项目时都会纠正它。 我稍微更改语法以捕获所有内容,但使用 (. *) 并且 重新传输 GET 请求的 QueryString 非常重要的是我在“L”之后添加的关键字“QSA”(最后一条)

在我的情况下,我保留这样的规则:

# Handle Front Controller ...
     RewriteCond %{REQUEST_FILENAME} !-D
     RewriteCond %{REQUEST_FILENAME} !-F
     RewriteRule ^(.*) $ index.php?$1 [L,QSA]

我希望这对某人有帮助!

【讨论】:

    【解决方案4】:

    我知道出了什么问题 在我的 .env 中

    SESSION_DOMAIN=.production.tld
    

    删除该行,现在一切正常

    【讨论】:

      猜你喜欢
      • 2018-03-22
      • 2017-07-23
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 2021-07-25
      • 1970-01-01
      • 2019-10-29
      相关资源
      最近更新 更多