<?php require_once ROOT . 'models/model.php'; use Respect\Validation\Validator as v; $validateSignup = function () use($app) { $req = $app->request(); $data = $req->post(); $validator = v::key('domain', v::domain()->notEmpty())->key('username', v::string()->notEmpty()->length(1, 32))->key('email', v::email()->notEmpty())->key('nick', v::string()->notEmpty()->length(1, 32))->key('password', v::string()->notEmpty()->length(6, 20))->key('password_confirm', v::equals($data['password'])->notEmpty()); try { $validator->assert($data); } catch (\InvalidArgumentException $e) { $errors = $e->findMessages(array('domain' => '网站域名不能为空', 'username' => '账户只能是英文字符和数字', 'email' => '邮箱格式不正确', 'nick' => '用户名称不能为空', 'password' => '密码不能少于6个字符', 'password_confirm' => '两次输入的密码不一致')); $app->flash('errors', $errors); $app->redirect(SITE_URL . '/signup'); } }; /** *------------------------------------------- * User Signup *------------------------------------------- */ $app->get('/signup', function () use($app) { $app->render("signup.html"); })->name('signup'); $app->post('/signup', $validateSignup, function () use($app) { // $this->halt('500', "Signup Not Supported Now"); $req = $app->request(); $data = $req->post(); $error = null; $user = ORM::forTable('users')->where('email', $data['email'])->findOne(); if ($user) {
/** * @dataProvider providerForDomain */ public function testBuilder($validDomain, $checkTLD = true) { $this->assertTrue(v::domain($checkTLD)->validate($validDomain), sprintf('Domain "%s" should be valid. (Check TLD: %s)', $validDomain, var_export($checkTLD, true))); }
<?php define('MAX_SIZE', 3 * 1024 * 1024); require "vendor/autoload.php"; use Respect\Validation\Validator as v; $url = $_GET['url']; $url_parts = parse_url($url); //error_log(print_r($url_parts,1)); // check valid url. if (!v::arr()->key('scheme', v::startsWith('http'))->key('host', v::domain())->key('path', v::string())->validate($url_parts)) { die_and_log($status = 400, 'invalid url', $url); } // head access $c = new Curl(); $c->setHeader('X-Forwarded-For', getRemoteIP()); $c->setOpt(CURLOPT_NOBODY, true); $c->setOpt(CURLOPT_RETURNTRANSFER, true); $c->error(function () { die_and_log($status = 500, "head request error"); }); $c->get($url); error_log($url); //error_log(print_r($c->response_headers,1)); // check head res $length = null; $content_type = null; foreach ($c->response_headers as $header) { if (preg_match("/\\AContent-Length/i", $header)) { $length = (int) explode(":", $header, 2)[1]; } else { if (preg_match("/\\AContent-Type/i", $header)) {