本文整理汇总了PHP中CSRF::Check方法的典型用法代码示例。如果您正苦于以下问题:PHP CSRF::Check方法的具体用法?PHP CSRF::Check怎么用?PHP CSRF::Check使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CSRF
的用法示例。
在下文中一共展示了CSRF::Check方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: processLoginForm
/**
* Processa o formulário de login
*/
protected static function processLoginForm()
{
// proteção contra CSRF
\CSRF::Check();
$email = isset($_POST['email']) ? $_POST['email'] : null;
$password = isset($_POST['password']) ? $_POST['password'] : null;
$hashedPassword = \Hash::password($password);
$errors = [];
if (empty($email)) {
$errors[] = 'Informe seu email';
}
if (empty($password)) {
$errors[] = 'Informe sua senha';
}
if (count($errors) > 0) {
return \View::make('login', compact('errors'));
}
$DB = new \DB();
$sql = "SELECT id, password, status FROM users WHERE email = :email";
$stmt = $DB->prepare($sql);
$stmt->bindParam(':email', $email);
$stmt->execute();
$rows = $stmt->fetchAll(\PDO::FETCH_OBJ);
if (count($rows) <= 0) {
$errors[] = 'Usuário não encontrado';
} else {
$user = $rows[0];
if ($hashedPassword != $user->password) {
$errors[] = 'Senha incorreta';
} elseif ($user->status != \Models\User::STATUS_ACTIVE) {
$errors[] = 'Ative sua conta antes de fazer login';
} else {
// busca os dados do usuário para criar os dados no cookie
$objUser = new \Models\User();
$objUser->find($user->id);
// gera um token de acesso
$token = $objUser->generateToken();
// salva o cookie com os dados do usuário
self::saveSessionCookieForUser($objUser);
// redireciona para a página inicial
redirect(getBaseURL());
}
}
if (count($errors) > 0) {
return \View::make('login', compact('errors'));
}
}
示例2: store
/**
* Salva a resposta
*/
public static function store()
{
// impede acesso a usuário não logado
\Auth::denyNotLoggedInUsers();
// impede ataque por CSRF
\CSRF::Check();
$questionID = isset($_POST['question_id']) ? (int) $_POST['question_id'] : null;
$description = isset($_POST['description']) ? $_POST['description'] : null;
$errors = [];
if (empty($questionID)) {
$errors[] = 'ID da pergunta inválido';
}
if (empty($description)) {
$errors[] = 'Informe a resposta';
}
if (count($errors) > 0) {
// se ocorrer erro, exibe-os e encerra a execução deste método, usando o return
return \View::make('answer.create', compact('errors'));
}
// busca o usuário logado
$user = \Auth::user();
$user_id = $user->getId();
$now = date('Y-m-d H:i:s');
$DB = new \DB();
$sql = "INSERT INTO answers(user_id, question_id, description, created_at, updated_at) VALUES(:user_id, :question_id, :description, :created_at, :updated_at)";
$stmt = $DB->prepare($sql);
$stmt->bindParam(':question_id', $questionID, \PDO::PARAM_INT);
$stmt->bindParam(':description', $description);
$stmt->bindParam(':user_id', $user_id, \PDO::PARAM_INT);
$stmt->bindParam(':created_at', $now);
$stmt->bindParam(':updated_at', $now);
if ($stmt->execute()) {
// redireciona para a pergunta, já com a resposta criada
redirect(getBaseURL() . '/pergunta/' . $questionID);
} else {
// exibe erro e gera um log com os detalhes do problema
echo "Erro ao criar resposta";
\Log::error("Erro ao criar resposta: " . print_r($stmt->errorInfo(), true));
}
}
示例3: store
/**
* Processa o formulário de criação de pergunta
*/
public static function store()
{
\Auth::denyNotLoggedInUsers();
\CSRF::Check();
$title = isset($_POST['title']) ? $_POST['title'] : null;
$description = isset($_POST['description']) ? $_POST['description'] : null;
$errors = [];
if (empty($title)) {
$errors[] = 'Informe o título da pergunta';
}
if (empty($description)) {
$errors[] = 'Informe a descrição da pergunta';
}
if (count($errors) > 0) {
// se ocorrer erro, exibe-os e encerra o método usando return
return \View::make('question.create', compact('errors'));
}
$user = \Auth::user();
$user_id = $user->getId();
$now = date('Y-m-d H:i:s');
$DB = new \DB();
$sql = "INSERT INTO questions(user_id, title, description, created_at, updated_at) VALUES(:user_id, :title, :description, :created_at, :updated_at)";
$stmt = $DB->prepare($sql);
$stmt->bindParam(':title', $title);
$stmt->bindParam(':description', $description);
$stmt->bindParam(':user_id', $user_id, \PDO::PARAM_INT);
$stmt->bindParam(':created_at', $now);
$stmt->bindParam(':updated_at', $now);
if ($stmt->execute()) {
// busca o ID gerado na inserção
$id = $DB->lastInsertId();
// redireciona para a páginca com o pergunta criada
redirect(getBaseURL() . '/pergunta/' . $id);
} else {
echo "Erro ao criar pergunta";
\Log::error("Erro ao criar pergunta: " . print_r($stmt->errorInfo(), true));
}
}
示例4: store
/**
* Registra o usuário
*/
public static function store()
{
\CSRF::Check();
$nickname = isset($_POST['nickname']) ? $_POST['nickname'] : null;
$email = isset($_POST['email']) ? $_POST['email'] : null;
$password = isset($_POST['password']) ? $_POST['password'] : null;
$passwordConfirmation = isset($_POST['password_confirmation']) ? $_POST['password_confirmation'] : null;
$hashedPassword = \Hash::password($password);
$hasErrors = false;
$errorMessages = [];
if ($nickname == null) {
$errorMessages[] = "Informe seu apelido";
$hasErrors = true;
}
if ($email == null) {
$errorMessages[] = "Informe seu email";
$hasErrors = true;
}
if ($password == null) {
$errorMessages[] = "Informe uma senha";
$hasErrors = true;
}
if ($passwordConfirmation == null) {
$errorMessages[] = "Confirme sua senha";
$hasErrors = true;
}
if ($password != $passwordConfirmation) {
$errorMessages[] = "Senhas não coincidem";
$hasErrors = true;
}
if ($hasErrors) {
return \View::make('user.create', compact('errorMessages'));
}
$sql = "INSERT INTO users(name, nickname, email, password, status, admin, created_at, updated_at) VALUES(:name, :nickname, :email, :password, :status, :admin, :created_at, :updated_at)";
$DB = new \DB();
$stmt = $DB->prepare($sql);
$date = date('Y-m-d H:i:s');
$stmt->bindParam(':name', $name);
$stmt->bindParam(':nickname', $nickname);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':password', $hashedPassword);
$stmt->bindValue(':status', \Models\User::STATUS_ACTIVE, \PDO::PARAM_INT);
$stmt->bindValue(':admin', '0');
$stmt->bindParam(':created_at', $date);
$stmt->bindParam(':updated_at', $date);
if ($stmt->execute()) {
// em vez de apenas exibir uma mensagem de sucesso, faremos um redirecionamento.
// isso é melhor pois evita que o usuário atualize a página e crie uma nova conta
redirect(getBaseURL() . '/cadastro_finalizado');
} else {
list($error, $sgbdErrorCode, $sgbdErrorMessage) = $stmt->errorInfo();
if ($sgbdErrorCode == 1062) {
// erro 1062 é o código do MySQL de violação de chave única
// veja mais em: http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html
if (preg_match("/for key .?nickname/iu", $sgbdErrorMessage)) {
// nickname já em uso
$errorMessages[] = "Apelido já está em uso";
} else {
// email já em uso
$errorMessages[] = "Email já está em uso";
}
}
return \View::make('user.create', compact('errorMessages'));
}
}