[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нужно составить условие if
bigforest
Привет. Я только начинаю писать на php, поэтому мой вопрос возможно покажется глупым, но...
Сабж: при такой конструкции:
<?php
$b=$_POST["username"];
if ($b!=admin);
{
echo "Вы успешно зашли";
}
if ($b==admin);
{
echo "Вы успешно зашли как администратор";
}
?>

При ЛЮБОМ значении $b выводит оба предложения
При такой:

<?php
$b=$_POST["username"];
if ($b!=admin);
{
echo "Вы успешно зашли";
}
else
{
echo "Вы успешно зашли как администратор";
}
?>

Выводит ошибку T_ELSE
Код файла, в который происходит ввод имени:
<p>Имя:</p>
<input
type="text" name="username">
<input
type="submit" value="Submit" />
</form><br />

Что делать?

 ! 

М
Давайте своим темам содержательные названия, иначе темы будут закрываться без предупреждений!
Winston




Спустя 2 минуты, 44 секунды (25.01.2012 - 17:28) Alehandr написал(а):
А блин... После if зачем ; ставишь?

Спустя 1 минута, 1 секунда (25.01.2012 - 17:30) Winston написал(а):
<?php
$b=$_POST["username"];
if ($b!='admin')
{
echo "Вы успешно зашли";
}
elseif ($b=='admin')
{
echo "Вы успешно зашли как администратор";
}
?>

Спустя 1 минута, 32 секунды (25.01.2012 - 17:31) Alehandr написал(а):
Winston
Не учи плохому! Зачем две проверки одинаковые практически?

Спустя 6 минут, 40 секунд (25.01.2012 - 17:38) bigforest написал(а):
Спасибо, все работает! Сейчас попробую сделать еще и пароль...

Спустя 1 минута, 28 секунд (25.01.2012 - 17:39) Winston написал(а):
Цитата (Alehandr @ 25.01.2012 - 16:31)
Не учи плохому! Зачем две проверки одинаковые практически?

Так лучше? :)
$b = !empty($_POST["username"]) ? $_POST["username"] : '';
echo $b == 'admin' ? 'Вы успешно зашли как администратор' : 'Вы успешно зашли';

Спустя 32 секунды (25.01.2012 - 17:40) UnWind написал(а):
$userLogin = !empty( $_POST['username'] ) ? $_POST['username'] : NULL;
if( $userLogin == 'admin' ) {
echo 'Вы вошли как:' . $userLogin;
} else {
echo 'Вы ввели неправильный логин!';
}

Спустя 1 минута, 24 секунды (25.01.2012 - 17:41) UnWind написал(а):
bigforest
Пример - Winston безусловно хороший, лучше конечно использовать его, я просто написал в таком виде, что бы не сильно структуру менять структуру Вашего кода.

Спустя 2 минуты, 32 секунды (25.01.2012 - 17:44) bigforest написал(а):
Пароль получился, вот только теперь надо подумать как сделать отказ во входе, если пароль неверный

Спустя 1 минута, 31 секунда (25.01.2012 - 17:45) bigforest написал(а):
Цитата (UnWind @ 25.01.2012 - 14:40)
$userLogin = !empty( $_POST['username'] ) ? $_POST['username'] : NULL;
if( $userLogin == 'admin' ) {
echo 'Вы вошли как:' . $userLogin;
} else {
echo 'Вы ввели неправильный логин!';
}

ОМГ, что-то мне подсказывает, что не одну ночь мне придется просидеть в инете, читая учебники php, чтобы понять этот код

Спустя 2 минуты (25.01.2012 - 17:47) UnWind написал(а):
bigforest
<?php
$userPassword = !empty( $_POST['password'] ) ? $_POST['password'] : NULL;
$userLogin = !empty( $_POST['login'] ) ? $_POST['login'] : NULL;
echo ( $userPassword == 'password' && $userLogin == 'login' ) ? 'Вы вошли как ' . $userLogin : 'Логин или пароль введены неверно!';


Другой вариант:
<?php
$userPassword = !empty( $_POST['password'] ) ? $_POST['password'] : NULL;
$userLogin = !empty( $_POST['login'] ) ? $_POST['login'] : NULL;
if( $userPassword == 'password' && $userLogin == 'login' ) {
echo 'Вы вошли как ' . $userLogin;
}
else {
echo 'Логин или пароль введены неверно!';
}

Спустя 1 минута, 12 секунд (25.01.2012 - 17:48) bigforest написал(а):
Что означает NULL?

Спустя 1 минута, 11 секунд (25.01.2012 - 17:50) UnWind написал(а):
bigforest
NULL - значение отсутствует. Возвращает пустую строку.

Спустя 53 секунды (25.01.2012 - 17:50) Alehandr написал(а):
Winston
$b = !empty($_POST["username"]) ? $_POST["username"] : '';
echo $b == 'admin' ? 'Вы успешно зашли как администратор' : 'Вы успешно зашли';

Само то! =)

Тока вот чет я задумался, вместо empty isset не лучше будет?

Спустя 2 минуты, 36 секунд (25.01.2012 - 17:53) bigforest написал(а):
Работать-то она работает, а вот как сделать несколько аккаунтов?

Спустя 1 минута, 47 секунд (25.01.2012 - 17:55) Winston написал(а):
Цитата (Alehandr @ 25.01.2012 - 16:50)
Тока вот чет я задумался, вместо empty isset не лучше будет?

Я не думаю, что имя юзера будет состоять из одной цифры 0. Потому empty достаточно

Спустя 1 минута, 19 секунд (25.01.2012 - 17:56) Alehandr написал(а):
bigforest
Ну тут уже надо систему по сложнее писать.
С начала ответь:
1. Тебе пользователей много надо или будет узкий круг?
2. База данных на хосте есть?

Спустя 5 минут, 1 секунда (25.01.2012 - 18:01) UnWind написал(а):
bigforest
Через базу или массив:
CREATE TABLE users (
id INT AUTO_INCREMENT,
login VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
password VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY(id)
)
ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_general_ci COMMENT='Учи SQL!';

В общем учи SQL ;)
$connect = mysql_connect('localhost', 'user', 'password') or die('Я не знаю как подключится к серверу MySQL! Пошел читать манну...');
mysql_select_db('database') or die('Что такое база ? Опять иду читать манну');
$user = mysql_fetch_row( mysql_query( "SELECT login,password FROM users WHERE login=" . mysql_escape_string( $userLogin ) . ";", $connect) );

И пошел дальше писать пользуясь первым и этим примером. ;)
Только учти - что само собой оно не заработает, тут лишь вывод масива пользователя, создание базы и не более того.
Просто если я напишу все сразу, ты ничего не поймешь и разбираться думаю не будешь, а так лучше запомнится ;)
Надеюсь плюсик заслужил :)

Хотя ладно, вот полноценный скрипт php, но потом распишешь все в комментариях - если реально хочешь что то да выучить:
mysql.connect.php
<?php
$mysqlConnect = mysql_connect('localhost', 'user', 'password') or die('Я не знаю как подключится к серверу MySQL! Пошел читать манну...');
mysql_select_db('database') or die('Что такое база ? Опять иду читать манну');


variables.php
<?php
$userLogin = !empty( $_POST['formLogin'] ) ? $_POST['formLogin'] : NULL;
$userPassword = !empty( $_POST['userPassword'] ) ? $_POST['userPassword'] : NULL;
$user = !empty( $user ) ? $user : NULL;


log.php
include 'mysql.connect.php';
include 'variables.php';

$user = mysql_fetch_row( mysql_query("SELECT login,password FROM users WHERE login=" . mysql_escape_string( $userLogin ) . ";", $mysqlConnect) );
if(mysql_num_rows( mysql_query("SELECT * FROM users WHERE login=" . mysql_escape_string( $userLogin ) . ";", $mysqlConnect) ) != 0) {
if($user[1] == $userPassword) {
echo 'Вы успешно авторизировались как: ' . $user['0'];
mysql_close( $mysqlConnect );
}
else {
echo 'Пароль введен неверно';
mysql_close( $mysqlConnect );
}
}

else {
echo 'Такого пользователя не существует!';
mysql_close( $mysqlConnect );
}

Спустя 12 часов, 28 минут, 17 секунд (26.01.2012 - 06:29) bigforest написал(а):
Цитата (Alehandr @ 25.01.2012 - 14:56)
bigforest
Ну тут уже надо систему по сложнее писать.
С начала ответь:
1. Тебе пользователей много надо или будет узкий круг?
2. База данных на хосте есть?

1.Пять-семь
2.Есть вроде

Спустя 1 час, 46 минут, 43 секунды (26.01.2012 - 08:16) Alehandr написал(а):
bigforest
Ну если пять-семь, то можно и простым массивом обойтись.

<?php
$users = array(
'user1' => 'pass1',
'user2' => 'pass2',
//...
);

$usersname = isset($_POST['username']) ? $_POST['username'] : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';

if (isset($users[$username]) && $users[$username] == $password) {
echo 'Вы вошли как ' . $username . '!';
} else {
echo 'Не верные данные!';
}

//...

Спустя 4 часа, 54 минуты, 55 секунд (26.01.2012 - 13:11) UnWind написал(а):
Мой вариант актуален, если пользователи будут добавляться в процессе регистрации или через какую либо панель и т.д.
В случае с массивом, Вам постоянно прийдется лезть в код, чтобы добавить нового пользователя.
Что несколько неудобно конечно.
Здесь выбор индивидуально Ваш.

Спустя 1 час, 43 минуты, 26 секунд (26.01.2012 - 14:54) bigforest написал(а):
Цитата (Alehandr @ 26.01.2012 - 05:16)
bigforest
Ну если пять-семь, то можно и простым массивом обойтись.

<?php
$users = array(
'user1' => 'pass1',
'user2' => 'pass2',
//...
);

$usersname = isset($_POST['username']) ? $_POST['username'] : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';

if (isset($users[$username]) && $users[$username] == $password) {
echo 'Вы вошли как ' . $username . '!';
} else {
echo 'Не верные данные!';
}

//...

Т.е. вместо 'user1' и 'pass1' подставлять имя и пароль?

Спустя 1 минута, 37 секунд (26.01.2012 - 14:56) UnWind написал(а):
bigforest
Все верно.

Спустя 4 часа, 4 минуты, 3 секунды (26.01.2012 - 19:00) человекЕ написал(а):
попробуй создать массив данными пользователями, по другому пока не умею
$_SESSION['users'] = array(
array('login'=>'vasya','password'=>'123123'),
array('login'=>'qwerty','password'=>'asd'),
array('login'=>'admin','password'=>'admin')
);

Спустя 1 час, 53 минуты, 50 секунд (26.01.2012 - 20:54) UnWind написал(а):
человекЕ
Вы сами понимаете, что делает Ваш скрипт ?

Спустя 17 часов, 53 минуты, 37 секунд (27.01.2012 - 14:48) bigforest написал(а):
Код Александра не работает. В любом случае пишет "Не верные данные!"
Плюс мне нужно, чтобы при вводе неправильных данных не пускало.
Вот у меня два файла: name.php и menu.php
Массив я поместил в menu.php
<?php
$users = array(
'admin' => 'test',
'user2' => 'pass',
//...
);

$usersname = isset($_POST['username']) ? $_POST['username'] : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';

if (isset($users[$username]) && $users[$username] == $password) {
echo 'Вы вошли как ' . $username . '!';
} else {
echo 'Не верные данные!';
}
?>

name.php
	<html>
<head>
<title>
Ввод имени</title>
</head>
<body>
<form
method="post" action="menu.php">
<p>
Имя:</p>
<input
type="text" name="username">
<input
type="text" name="password">
<input
type="submit" value="Submit"/>
</form><br />
</body>
</html>

М.б. я что-то неправильно делаю?

Спустя 5 минут, 14 секунд (27.01.2012 - 14:53) GET написал(а):
Что за ошибку пишет?

Спустя 1 минута, 8 секунд (27.01.2012 - 14:54) GET написал(а):
У тебя $userSname стоит - убери s

Спустя 5 минут, 8 секунд (27.01.2012 - 14:59) Alehandr написал(а):
bigforest
Очепятка была... =)

<?php
$users = array(
'admin' => 'test',
'user2' => 'pass',
//...
);

$username = isset($_POST['username']) ? $_POST['username'] : ''; //Тут была очепятка
$password = isset($_POST['password']) ? $_POST['password'] : '';

if (isset($users[$username]) && $users[$username] == $password) {
echo 'Вы вошли как ' . $username . '!';
} else {
//echo 'Не верные данные!';
die('Неверные данные!'); //Теперь дальше код умрет так сказать
}
?>

Спустя 3 минуты, 45 секунд (27.01.2012 - 15:03) bigforest написал(а):
A.B.С, нет никакой S
Александр, у меня вместо комментариев квадратики отображаются

Спустя 2 минуты, 38 секунд (27.01.2012 - 15:05) Alehandr написал(а):
bigforest
Там есть S, где присвоение значения идет.
На счет die - код умрет, т.е. не будет дальше исполнятся, соответственно дальше не пустит.

Спустя 3 минуты, 42 секунды (27.01.2012 - 15:09) GET написал(а):
Цитата
A.B.С, нет никакой S


Внимательно посмотри на эту строчку и скажи спасибо.

Цитата
$usersname = isset($_POST['username']) ? $_POST['username'] : '';

Спустя 2 минуты, 56 секунд (27.01.2012 - 15:12) bigforest написал(а):
Работает! Всем спасибо!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.