brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
Михаил, здравствуйте, вот хотел бы узнать, возможно ли сделать что нибудь в этом духе?
<?php
class Registration {
$log = $_POST['login'];
$pass = $_POST['password'];
function __construct ($log, $pass){
$this->log = $log;
$this->pass = $pass;
}
function verifyDataLogin() {
if (isset($this->log)){
if (empty($this->log))
exit ('');
}
}
}
?>
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Нет, здесь, во-первых, множество ошибок, во-вторых, так никто не делает. Каждый объект должен отвечать только сам за себя! Поэтому $_POST["log"] должен передаваться в конструктор извне. Да и какой смысл в присвоении свойствам $_POST["log"], если потом они в конструкторе переопределяются?
brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
Просто дело в том, что я сделал класс для регистрации, но проблема в том, как задать один раз $_POST['login']?
Я так понимаю её надо задать уже при построении класса?
$reg = new Registration ($_POST['login']);
Примерно так её надо объявлять получается?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Да, именно так правильно. Тоже самое и с паролем.
brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
Спасибо, понял, работаю дальше)))
brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
Михаил, здравствуйте, вот хотел бы узнать, возможно ли сделать что нибудь в этом духе?
<?php
class Registration {
$log = $_POST['login'];
$pass = $_POST['password'];
function __construct ($log, $pass){
$this->log = $log;
$this->pass = $pass;
}
function verifyDataLogin() {
if (isset($this->log)){
if (empty($this->log))
exit ('');
}
}
}
?>
brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
Вот сделал, но теперь ошибка вылетает при регистрации
registration.php
<?php
class registration {
$log;
$pass;
$repeatpass;
function __construct() {
$this->log = $log;
$this->pass = $pass;
$this->repeatpass = $repeatpass;
}
function checkDataLoginRegAuth() {
if (isset($this->log)) {
if ($this->log == '') {
unset($this->log);
}
}
}
function checkDataPassLog() {
$log = $_POST['login'];
if (isset($_POST['password'])) { $pass=md5($_POST['password']); if ($pass =='') { unset($pass);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (empty($log) or empty($pass)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!"
}
}
function checkDataPassReg() {
if (isset($this->pass)) {
if ($this->repeatpass == $this->pass) {
if (($this->pass == '') || ($this->repeatpass == '')) {
exit ("Введите данные заново"
}
}
else {
exit ("Пароли не совпадают!"
}
}
if ((empty($this->log)) || (empty($this->pass))) {
exit ("Обязательные поля должны быть заполнены!"
}
}
function insertDataReg() {
$name = $_POST['name'];
$insert = mysql_query ("INSERT INTO users (login, name, password) VALUES('$this->log', '$name', '$this->pass')"
if ($insert == 'TRUE')
{
echo "Вы успешно зарегистрированы!";
}
else {
echo "Ошибка при регистрации!";
}
}
function insertDataAuth() {
$result = mysql_query("SELECT * FROM users WHERE login='$this->log'" //извлекаем из базы все данные о пользователе с введенным логином
$myrow = mysql_fetch_array($result);
if (empty($myrow['password']))
{
//если пользователя с введенным логином не существует
exit ("Извините, введённый вами login или пароль неверный."
}
else {
//если существует, то сверяем пароли
if ($myrow['password']==$pass) {
//если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!
$_SESSION['login']=$myrow['login'];
$_SESSION['id']=$myrow['id'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь
echo "Вы успешно вошли на сайт! <a href='/index.php'>Главная страница</a>";
}
else {
//если пароли не сошлись
exit ("Извините, введённый вами login или пароль неверный."
}
}
}
}
?>
reg.php
<?php
require_once "classes/dbconnect.php";
require_once "classes/registration.php";
$registr = new registration($_POST['login'], $_POST['login']);
echo $registr->checkDataLoginRegAuth();
echo $registr->checkDataPassReg();
echo $registr->insertDataReg();
?>
Сама ошибка вот
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in L:\home\test33.ru\www\classes\registration.php on line 3
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Нужно перед свойством ставить модификатор доступа (public, private или protected).
brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
Спасибо, сейчас исправлю)
brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
Вот я поставил уровень доступа, только есть проблемма. Не проходит выполнение функция public function checkDataPassReg(), пишет, что не все данные введены, хотя введено всё, в чём может быть ошибка?
registration.php
<?php
class registration {
public $log;
public $pass;
public $repeatpass;
public function __construct() {
$this->log = $log;
$this->pass = $pass;
$this->repeatpass = $repeatpass;
}
public function checkDataLoginRegAuth() {
if (isset($this->log)) {
if ($this->log == '') {
unset($this->log);
}
}
}
public function checkDataPassLog() {
$log = $_POST['login'];
if (isset($_POST['password'])) { $pass=md5($_POST['password']); if ($pass =='') { unset($pass);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (empty($log) or empty($pass)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!"
}
}
public function checkDataPassReg() {
if (isset($this->pass)) {
if ($this->repeatpass == $this->pass) {
if (($this->pass == '') || ($this->repeatpass == '')) {
exit ("Введите данные заново"
}
}
else {
exit ("Пароли не совпадают!"
}
}
if ((empty($this->log)) || (empty($this->pass))) {
exit ("Обязательные поля должны быть заполнены!"
}
}
public function insertDataReg() {
$name = $_POST['name'];
$insert = mysql_query ("INSERT INTO users (login, name, password) VALUES('$this->log', '$name', '$this->pass')"
if ($insert == 'TRUE')
{
echo "Вы успешно зарегистрированы!";
}
else {
echo "Ошибка при регистрации!";
}
}
public function insertDataAuth() {
$result = mysql_query("SELECT * FROM users WHERE login='$this->log'" //извлекаем из базы все данные о пользователе с введенным логином
$myrow = mysql_fetch_array($result);
if (empty($myrow['password']))
{
//если пользователя с введенным логином не существует
exit ("Извините, введённый вами login или пароль неверный."
}
else {
//если существует, то сверяем пароли
if ($myrow['password']==$pass) {
//если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!
$_SESSION['login']=$myrow['login'];
$_SESSION['id']=$myrow['id'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь
echo "Вы успешно вошли на сайт! <a href='/index.php'>Главная страница</a>";
}
else {
//если пароли не сошлись
exit ("Извините, введённый вами login или пароль неверный."
}
}
}
}
?>
reg.php
<?php
require_once "classes/dbconnect.php";
require_once "classes/registration.php";
$registr = new registration($_POST['login'], $_POST['password'], $_POST['repeatpass']);
echo $registr->checkDataLoginRegAuth();
echo $registr->checkDataPassReg();
echo $registr->insertDataReg();
?>