Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Регистрация


Автор: Aliance 22.2.2005, 17:26
Код

<?php

if ( isset ($name) AND isset ($password))
{

$data = File ("users.db");
$pass = md5 ($password);

for ($i=0;$i<count($data);$i++) {
$dat = explode (";", $data[$i]);
if ($name == $dat[0] && $pass."\r\n" == $dat[1])
 {
include("modules/header.php");
include("modules/nav.php");
include("modules/footer.php");
 exit;
 }
}
}
?>

<?php
include("modules/nav.php");
?>


У меня есть скрипт регистрации, там значит такая проблемка появилась, как сделать так,чтобы юзеру не зарегенному показывалось 1.php, зарегенному - 2.php, а мне - 3.php (условно говоря)

В коде выше работают такие условия: если зареген - показываеться
Код

include("modules/header.php");
include("modules/nav.php");
include("modules/footer.php");


Если нет:

Код

include("modules/nav.php");


Я так понимаю что нужно использовать if/else, думаю это легко:
Код

<?php

if ( isset ($name) AND isset ($password))
{

$data = File ("users.db");
$pass = md5 ($password);

for ($i=0;$i<count($data);$i++) {
$dat = explode (";", $data[$i]);
if ($name == $dat[0] && $pass."\r\n" == $dat[1])
 {
include("modules/header.php");
include("modules/nav.php");
include("modules/footer.php");
 exit;
 } else if (????????) {
include("modules/header.php");
include("modules/admin.php");
include("modules/footer.php");
 exit;  
}
}
}

?>


Что нужно вставить вместо ????????, чтобы работало ТОЛЬКО для одного юзера - админа.
Есть файл users.db, там я по идеи буду первым (админ), вот как получить именно меня?
Скажем, у меня логин 'login' и пароль '123' ?

ЗЫ: не пытайтесь переписать данный код, у меня с ним все в порядке, мне не нужно более сложного, просто подскажите что тут писать в else if (???) smile

Автор: sergejzr 22.2.2005, 18:00
Тебе группу надо помечать. По ней и определять. Иначе как ты собираешься различать админ или нет? По имени? smile


А если на первого проверять. То вот блок:

Код

if ($name == $dat[0] && $pass."\r\n" == $dat[1])
 {
include("modules/header.php");
include($i==0?"modules/admin.php":"modules/nav.php");
include("modules/footer.php");
 exit;
 }

Автор: Aliance 22.2.2005, 18:20
Цитата(sergej @ 22.2.2005, 18:00)
По имени?

Почему бы и нет, можно вписать если имя равно 'login', а пароль равен '123' - то так.

ЗЫ: ты уверен что в твоем примере правельно расставлены кавычки?

Цитата(sergej @ 22.2.2005, 18:00)
include($i==0?""modules/admin.php":modules/nav.php");


Добавлено @ 18:30


Вау, мой третий собственный smile скрипт на php:
Код

<?php

if ( isset ($name) AND isset ($password))
{

$data = File ("users.db");
$pass = md5 ($password);

for ($i=0;$i<count($data);$i++) {
$dat = explode (";", $data[$i]);
if ($name == $dat[0] && $pass."\r\n" == $dat[1])
 {

global $file;
if ($i == o) {
  $file = "modules/admin_nav.php";
} else {
  $file = "modules/nav.php";
}

include("modules/header.php");
include($file);
include("modules/footer.php");
 exit;
 }
}
}

?>


ЗЫ: а в php переменные обозначаються global Всегда?

Автор: Aliance 22.2.2005, 18:35

А теперь после захода мне нужно форму убрать и вывести Привет + имя юзера, это делаеться так?!

Код

if ($name) {
echo "Привет ".$name;
} else {
include("form.php");
}

Автор: sergejzr 22.2.2005, 19:07
Цитата(Aliance @ 22.2.2005, 17:20)
Ты уверен что в твоем примере правельно расставлены кавычки?

нет конечно, на одну ошибся smile Уже подправил.
-------------------

Глобаль в твоём примере не нужна.

-------------
Тут у тебя буква о вместо 0 smile
Код
$i == o

Автор: Aliance 22.2.2005, 19:19
Цитата(sergej @ 22.2.2005, 19:07)
Тут у тебя буква о вместо 0

Странно, я писал нуль. хм... вообще ничего не понимаю...мистика какая-то вокруг меня твориЦЦа ))) ушел в сибя ))

Цитата(sergej @ 22.2.2005, 18:00)
include($i==0?"modules/admin.php":"modules/nav.php");

И еще 1 пропустил ))

И еще третий вопрос: как мне при такой регистрации сделать (с исп. кук наверное) чтобы повторного захода не приходилось делать?

Автор: Mal Hack 22.2.2005, 19:57
Aliance
глянь сюда: http://forum.vingrad.ru/index.php?showtopic=42583&view=findpost&p=326762
Цитата(Aliance @ 22.2.2005, 19:19)
И еще третий вопрос: как мне при такой регистрации сделать (с исп. кук наверное) чтобы повторного захода не приходилось делать?

Ты должен при авторизации сохранять у пользователя определенные данные, а при каждом заходе как проверять их.

Автор: InfMag 22.2.2005, 22:36
Aliance
По поводу global - это не всегда. Еще обозначаются не только допустим так:
Код

function f() {
global $a,$b,$c;
if ($a==$b) {
$c=$a+$b;
}
}

Но и так:
Код

function f() {
if ($_GLOBALS['a']==$_GLOBALS['b']) {
$_GLOBALS['c']=$_GLOBALS['a']+$_GLOBALS['b'];
}
}

Говорят некоторые мол global $a,$b,$c; - это плохо и не проффесионально, но было кем-то доказано, что это выгон. PHP типа выполняет один и тот же алгоритм если писать так или так. Тока в первом случае не нада париться.

Автор: Mal Hack 22.2.2005, 22:58
InfMag
правильным подходом считается передача параметров в функию и возврат значения, а не использования global... Да, это бывает полезно и нужно, но лучше этого избегать. Лишний код, лишняя нагрузка (смысловая) и т.п.

Автор: Aliance 23.2.2005, 17:45
Цитата(Mal @ 22.2.2005, 19:57)
Ты должен при авторизации сохранять у пользователя определенные данные, а при каждом заходе как проверять их.

А кодом можно? smile

Автор: Mal Hack 23.2.2005, 18:04
http://wboard.ru/index.php?showtopic=262

Автор: Aliance 23.2.2005, 20:39
Mal Hack
Мне вообще-то без баз данных нужно.

Автор: Mal Hack 23.2.2005, 20:42
Цитата(Aliance @ 23.2.2005, 20:39)
Мне вообще-то без баз данных нужно.

Это фарс тогда будет, а не авторизация.

Автор: Aliance 24.2.2005, 21:14
Без разницы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)