31.10.2015 / 09:31 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| Banschey, разберись, почему у тебя падает футер, и сделай так, чтобы не падал.
|
31.10.2015 / 16:52 | |
Banschey Пользователь Сейчас: Offline
Имя: Banschey Откуда: Донецк, Украина Регистрация: 22.03.2015
| Ксакеп, причина известна. К примеру авторизация, скрипт формы: method POST action"". В актионе нет ссылки так как у меня роутинг и скрипт вшит в саму страницу с формой. Но происходит рефреш при нажатии на кнопку. Если в скрипте ошибка то я вывожу ещё из php скрипта при помощи js и рендю в селектор с ошибками на странице. Но так как маленький рефреш есть то страница формируется по новой и футер отлетает из за инжекта js скрипта в тело страницы. Там где можно использовать ajax я его использую и там проблем нет. Но вот когда нет такой возможности я использую сессии или такие вот инжекты. Использование сессий для таких вещей это нормально или все же нет ?
|
2.11.2015 / 18:58 | |
Artorius Пользователь Сейчас: Offline
Имя: Артур Регистрация: 29.08.2012
| Banschey, Цитата Banschey: В актионе нет ссылки так как у меня роутинг Эммм.. <form method="post" action="?r=get_form">
public function action_get_form(){
$a = $_POST['a'];
$b...
//Нормально обработал форму с роутером как обычно через метод
}
Или без аякса никак? |
7.11.2015 / 02:21 | |
Banschey Пользователь Сейчас: Offline
Имя: Banschey Откуда: Донецк, Украина Регистрация: 22.03.2015
| Artorius, нет, можно и без него.
|
23.11.2015 / 07:20 | |
kingdosya Пользователь Сейчас: Offline
Имя: Сергей Откуда: Вашингтон Регистрация: 06.08.2013
| помогите написать регулярку логина, а точнее: логин должен начинаться с англ. буквы потом можно англ. буквы или цифры 0-9 или знаки подчеркивания_ Сам я написал так: <?php
// login
$login='wwwwwww++++++';
echo preg_match('#^[a-z]+[a-z0-9_]*#i', $login);
?>
Там я специально поставил плюсы. Но функция все равно возвращает true |
23.11.2015 / 10:17 | |
aRiGaTo Пользователь Сейчас: Offline
Имя: Snork Откуда: Yerevan Регистрация: 03.02.2010
| kingdosya, Ещё не забудь про ограничение длины - {min - 1,max} __________________
don't tread on me |
23.11.2015 / 17:38 | |
kingdosya Пользователь Сейчас: Offline
Имя: Сергей Откуда: Вашингтон Регистрация: 06.08.2013
| Цитата aRiGaTo: kingdosya, Ещё не забудь про ограничение длины - {min - 1,max}Твой тоже не работает! <?php
// login
$login='wwwwwww++++++';
echo preg_match('#[a-zA-z][a-zA-Z0-9_]*#', $login);
?> // возвращает 1
Вот я сам сделал рабочий вариант <?php
// login
$login='wwwwwww++++++';
echo preg_match('#^[a-z]+[a-z0-9_]*$#i', $login);
?>
возвращает 0 |
24.11.2015 / 00:42 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| kingdosya, уж мог бы и сам догадаться поставить ^$ в регулярку. <?php
$login='wwwwwww++++++';
echo preg_match('#^[a-zA-z][a-zA-Z0-9_]*$#', $login); // 0
|
7.12.2015 / 14:24 | |
kingdosya Пользователь Сейчас: Offline
Имя: Сергей Откуда: Вашингтон Регистрация: 06.08.2013
| и так господа, помогите, мне. Форма не отправляется! 1! нету ни одного ошибки! 2! все работает, но вот только форма не передается 3! там нету ни куска js кода 4! есть url "/users?action=registration" где проверяется if (isset($_POST['submit'])) {...} else new registrationUsersView то есть если нету индекс submit массива $_POST то показать форму (смотрим фор) Открыть спойлер Закрыть спойлер <?php
// Супер класс Представителей
abstract class view {
protected $_content;
protected $_obj_con;
// Абстрактный метод
protected abstract function setContent();
// Шапка
private function _setHeader() {
return '<div class="header">this Header </div>';
}
// Баннер отображается если массив banner создано
private function _setBanner() {
if (is_array($this->obj_con->banner)) {
for ($i=0; $i<$this->obj_con->banner['max_index']; $i++) {
$to_return.='
<div class="banner">
<a href="'.$this->obj_con->banner[$i]['url'].'">
<img src="'.$this->obj_con->banner[$i]['img_url'].'" alt="'.$this->obj_con->banner[$i]['alt'].'">
</a>
</div>
';
}
return $to_return;
}
}
// Подвал
private function _setFooter() {
return '<div class="footer"> this footer </div>';
}
// вывод
protected function _toEcho() {
echo '
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 5 Transitional//RU" "http://www.w3.org/TR/html5/loose.dtd">
<html>
<head>
<title>'.$this->obj_con->header.'</title>
<link href="css/main.css" rel="stylesheet" type="text/css" >
<script type="text/javascript" src="js/main.js"></script>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta http-equiv="KEYWORDS" content="'.$this->obj_con->keywords.'">
<meta http-equiv="DESCRIPTION" content="'.$this->obj_con->description.'">
</head>
<body>
<div class="all_content">
'.$this->_setHeader().$this->_content.$this->_setBanner().$this->_setFooter().'
</div>
</body>
</html>
';
}
}
Открыть спойлер Закрыть спойлер <?php
// Контроллер регистрации
class registrationUsers extends controller {
public $error_list; // [1/2/3...] одномерный массив
public $login;
public $password;
public $password_2;
public $mail;
public function __construct() {
$this->_obj_model= new registrationUsersModel();
// Если форма отправлена **********************************************
print_r($_REQUEST);
print_r($_POST);
if (isset($_POST['submit'])) {
$this->login= $_POST['login'];
$this->password= $_POST['password'];
$this->password_2=$_POST['password_2'];
$this->mail= $_POST['mail'];
// Если введены корректные данные также, логин и эл.адрес свободны - создаем нового юзера
if ($this->_inspection()) {
$this->_createUsers ();
// и с меткой перенаправляем на страницу активации эл.почты
setcookie('call_from', 'registrationUsers', time()+7, '/');
header('Location: /users?action=mailActivator');
}
// Иначе выводим форму с описанием ошибки, т.е. создано массив $this->error_list
else
{new registrationUsersView ($this);}
}
// Если форма не отправлена - выводим форму ****************************
else
{new registrationUsersView ($this);}
}
/****************************************************************
* Если введены корректные данные также, логин и эл.адрес *
* свободны - возвращает TRUE *
* иначе возвращает FALSE и создает массив $this->$error_list *
****************************************************************/
private function _inspection() {
if (strlen($this->login)>system::MAX_LEN_LOGIN) {$this->error_list[]='Слишком длинный логин!'; $_login_error=1;}
if (strlen($this->login)<system::MIN_LEN_LOGIN) {$this->error_list[]='Слишком короткий логин!'; $_login_error=1;}
if (($_login_error!=1)&&( ! preg_match(system::REG_LOGIN, $this->login))) {$this->error_list[]='Некорректный логин!';}
if ($this->password===$this->password_2) {
if (strlen($this->password)>system::MAX_LEN_PASSWORD) {$this->error_list[]='Слишком длинный пароль!'; $_password_error=1;}
if (strlen($this->password)<system::MIN_LEN_PASSWORD) {$this->error_list[]='Слишком короткий пароль!'; $_password_error=1;}
if (($_password_error!=1)&&( ! preg_match(system::REG_PASSWORD, $this->password))) {$this->error_list[]='Некорректный пароль!';}
}
else
{$this->error_list[]='Пароли не совпадают!';}
if (strlen($this->mail)>system::MAX_LEN_MAIL) {$this->error_list[]='Слишком длинный адрес эл.почты!'; $_mail_error=1;}
if (strlen($this->mail)<system::MIN_LEN_MAIL) {$this->error_list[]='Некорректный адрес эл.почты!'; $_mail_error=1;}
if (($_mail_error!=1)&&( ! filter_var($this->mail, FILTER_VALIDATE_EMAIL))) {$this->error_list[]='Некорректный адрес эл.почты!';}
if ( ! is_array($this->error_list)) {
$res_fun= $this->_obj_model->sql_to_inspection($this->login, $this->mail);
if ($res_fun['login']==FALSE) {$this->error_list[]='Пользователь с таким логином уже существует!';}
if ($res_fun['mail']==FALSE) {$this->error_list[]='Пользователь с таким эл. почтой уже существует!';}
}
if (is_array($this->error_list)) {return FALSE;} // Если ошибки есть или логин/эл.почта заняты - возвращаем FALSE
else
{return TRUE;} // Если все OK - возвращаем TRUE
}
// Создает юзера и перенаправляет на страницу активации эл.почты
private function _createUsers () {
$pass=strrev($this->password);
$pass=md5($pass);
// Если юзер создан - получаем: id нового юзера и код активации эл.почты
if ($res_fun=$this->_obj_model->sql_to_createUsers($this->login, $pass, $this->mail)) {
// Входим в новый аккаунт
session_start();
$_SESSION['id']= $res_fun['id_new_user'];
$_SESSION['login']= $this->login;
$_SESSION['rank']= system::RANK_NO_KEY;
$_SESSION['status']= system::STATUS_BEGINNER_KEY;
$_SESSION['ban_time']=0;
setcookie('login', $this->login, time()+999999, '/');
setcookie('password', $this->password, time()+999999, '/');
// Отправляем код активации на мыло
$obj_mail= new classesMail();
$obj_mail->sendMailActivatorCode($this->mail, $res_fun['code']);
unset($obj_mail); // Очистить память PHP
}
else
{throw new Exception('sql_to_createUsers вернул false',97);}
}
}
Открыть спойлер Закрыть спойлер <?php
// Форма регистрации
class registrationUsersView extends view {
public function __construct(registrationUsers $obj_registrationUsers) {
$this->_obj_con=$obj_registrationUsers;
$this->setContent();
$this->_toEcho();
}
public function setContent() {
if (is_array($this->_obj_con->error_list)) {
$error='<div class="error">';
foreach ($this->_obj_con->error_list as $value) {
$error.='<div>'.$value.'</div>';
}
$error='</div>';
}
$this->_content='
<div class="content">
'.$error.'
<form method="POST" action="/users?action=registration">
Логин: <br>
<input type="text" name="login" size="32" maxlength="32" value="'.$this->_obj_con->login.'"> <br>
Пароль: <br>
<input type="password" name="password" size="32" maxlength="32" value=""> <br>
Повторите пароль: <br>
<input type="password" name="password2" size="32" maxlength="32" value=""> <br>
E-mail: <br>
<input type="text" name="mail" size="32" maxlength="100" value="'.$this->_obj_con->mail.'"> <br>
<input name="submit" type="submit" value="Зарегистрироваться">
</form>
</div>
';
}
}
Открыть спойлер Закрыть спойлер <?php
// Индексный файл папки users
require_once $_SERVER['DOCUMENT_ROOT'].'/SYS/index.php';
class indexUsers extends index{
public function __construct() {
$this->_obj_model=new indexUsersModel();
$this->_auth($this->_obj_model);
if ($this->_logined==TRUE)
{$this->_addOnlineTime($this->_obj_model);}
$this->_setAction();
$this->startAction();
}
public function startAction() {
$selected=FALSE;
// >>>>>> Доступно только для авторизованных <<<<<<
if ($this->_logined) {
// Доступно только для тех у кого должность Супер Админ, Админ или Модератор
if ($_SESSION['rank']==='sadm' || $_SESSION['rank']==='adm' || $_SESSION['rank']==='mod') {
}
// Доступно только для тех у кого должность Супер Админ или Админ
if ($_SESSION['rank']==='sadm' || $_SESSION['rank']==='adm') {
}
// Доступно только для тех у кого должность Супер Админ
if ($_SESSION['rank']==='sadm') {
}
// Доступно для всех авторизованных. Должность и статус не имеет значение
switch ($this->_action) {
case 'mailActivator': new mailActivatorUsers(); $selected=TRUE; break;
}
}
// >>>>>> Доступно только для не авторизованных <<<<<<
else {
switch ($this->_action) {
case 'registration': new registrationUsers(); $selected=TRUE; break;
case 'login': new loginUsers(); $selected=TRUE; break;
}
}
// >>>>>>> Доступно и для авторизованных и для не авторизованных <<<<<<
switch ($this->_action) {
case 'user': new userUsers($this->_logined); $selected=TRUE; break;
case 'default': new allUsers($this->_logined); $selected=TRUE; break; // Если не существует $_GET['action']
}
// >>>>> По умолчанию, если не выбрано не одного пункта <<<<<
if ($selected==FALSE) { include $_SERVER['DOCUMENT_ROOT'].'/SYS/404.php'; }
}
}
// Начало
try {
$obj_indexUsers=new indexUsers();
}
catch (Exception $ex) {
include $_SERVER['DOCUMENT_ROOT'].'/SYS/catch.php';
}
Изменено kingdosya (7.12 / 14:39) (всего 6 раз) |
7.12.2015 / 14:40 | |
kingdosya Пользователь Сейчас: Offline
Имя: Сергей Откуда: Вашингтон Регистрация: 06.08.2013
| 4! есть url "/users?action=registration" где проверяется if (isset($_POST['submit'])) {...} else new registrationUsersView то есть если нету индекс submit массива $_POST то показать форму (смотрим спойлер 2)
|