Jump to content
  • 0

Вопрос про переменные PHP


slavok47
 Share

Question

Возможно ли как то такое:

if (mysql_num_rows($result) > 0) {
print "есть такой уже";
}else{
print "тебя тут не знают";
}

Занести в одну переменную, чтобы эту переменную вставить в какое то определенное место для отобрежения(например рядом с полем ввода имени для проверки), тоесть переменная одна, но у нее будет 2 значения в зависимости от результата,

чет я помоему глупость спросил...

Edited by slavok47
Link to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0

slavok47, вопрос, действительно, непонятен

тем более, что mysql_num_rows($result) - это подсчет количества строк в запросе к базе данных

почитайте мануалы про типы переменных и область видимости переменных

хотя бы здесь http://www.php.ru/manual/language.types.html

Link to comment
Share on other sites

  • 0

Я сам не особо понял что написал :) ,

Значит так, есть форма и

есть обработчик:

$result = mysql_query("SELECT * FROM user WHERE username = '$nick'");
$trm = if (mysql_num_rows($result) > 0) {
print "есть такой уже";
}else{
print "тебя тут не знают";
}

на форме инпут для ввода логина и соответственно сабмит, задача проверить есть ли такой логин в базе или нет, при таком варианте результат проверки открывается в обработчике, вопрос как результат вывести на форму,

вот теперь вроде нормальный вопрос ...

Link to comment
Share on other sites

  • 0
<?function funct($name)
{
$name=mysql_real_escape_string($name);
//==============Тут код получения $result, типа SELECT COUNT(*) FROM <table> WHERE `name`='$name'
if (mysql_num_rows($result) > 0) $trm = "есть такой уже";
else $trm = "тебя тут не знают";
return $trm;
}?>

<form><?=funct('Вася');?></form>

Edited by Int
Link to comment
Share on other sites

  • 0
Я сам не особо понял что написал :) ,

Значит так, есть форма и

есть обработчик:

$result = mysql_query("SELECT * FROM user WHERE username = '$nick'");
$trm = if (mysql_num_rows($result) > 0) {
print "есть такой уже";
}else{
print "тебя тут не знают";
}

на форме инпут для ввода логина и соответственно сабмит, задача проверить есть ли такой логин в базе или нет, при таком варианте результат проверки открывается в обработчике, вопрос как результат вывести на форму,

вот теперь вроде нормальный вопрос ...

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

if (mysql_num_rows($sql) == 1)
{
$row = mysql_fetch_assoc($sql);

// делаем запрос к БД
// и ищем юзера с таким логином и паролем

$query = "SELECT `id`
FROM `users`
WHERE `login`='{$login}' AND `password`='{$password}'
LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());

// если такой пользователь нашелся
if (mysql_num_rows($sql) == 1)
{
// то мы ставим об этом метку в сессии (допустим мы будем ставить ID пользователя)

$row = mysql_fetch_assoc($sql);
$_SESSION['user_id'] = $row['id'];

// и перекидываем его на закрытую страницу
header('Location: ../index.php');
exit;

// не забываем, что для работы с сессионными данными, у нас в каждом скрипте должно присутствовать session_start();
}
else
{
die('Такой логин с паролем не найдены в базе данных. И даём ссылку на повторную авторизацию. — <a href="login.php">Авторизоваться</a>');
}
}

Что-то вроде этого.

Link to comment
Share on other sites

  • 0
Ты в правильном направлении, но тут все гораздо сложнее...

if (mysql_num_rows($sql) == 1)
{
$row = mysql_fetch_assoc($sql);

// делаем запрос к БД
// и ищем юзера с таким логином и паролем

$query = "SELECT `id`
FROM `users`
WHERE `login`='{$login}' AND `password`='{$password}'
LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());

// если такой пользователь нашелся
if (mysql_num_rows($sql) == 1)
{
// то мы ставим об этом метку в сессии (допустим мы будем ставить ID пользователя)

$row = mysql_fetch_assoc($sql);
$_SESSION['user_id'] = $row['id'];

// и перекидываем его на закрытую страницу
header('Location: ../index.php');
exit;

// не забываем, что для работы с сессионными данными, у нас в каждом скрипте должно присутствовать session_start();
}
else
{
die('Такой логин с паролем не найдены в базе данных. И даём ссылку на повторную авторизацию. — <a href="login.php">Авторизоваться</a>');
}
}

Что-то вроде этого.

Не совсем то, это проверка при авторизации, но меня интересуест просто существования логина, например я хочу добавить пользователю медаль, пишу кому - выбираю медаль - сохраняю, а вот при написании кому может быть очепятка, (конечно можно это через профиль сделать), но меня интересует именно такая структура

Link to comment
Share on other sites

  • 0
Не совсем то, это проверка при авторизации, но меня интересуест просто существования логина, например я хочу добавить пользователю медаль, пишу кому - выбираю медаль - сохраняю, а вот при написании кому может быть очепятка, (конечно можно это через профиль сделать), но меня интересует именно такая структура

Ну и в чем проблема? Опечатался - говорим ему что он опечатался и просим его ввести по новой логин. Я все верно написал.

Link to comment
Share on other sites

  • 0

Я преобразовал твой пример, перенеся его в функцию, и показал как эту функцию использовать для "результат вывести на форму"

Чуть подправил, смотри ещё раз.

Edited by Int
Link to comment
Share on other sites

  • 0

Чет не заработало :)

У меня было:

$result = mysql_query("SELECT * FROM user WHERE username = '$nick'");

if (mysql_num_rows($result) > 0) {
print "есть такой уже";
}else{
print "тебя тут не знают";
}

Передаелал как

<?function funct($nick
{
$nick=mysql_real_escape_string($nick;
$result = mysql_query("SELECT * FROM user WHERE username = '$nick'");
if (mysql_num_rows($result) > 0) $trm = "есть такой уже";
else $trm = "тебя тут не знают";
return $trm;
}?>

а это я так понял в форму, а вместо Вася $trm

<form><?=funct('Вася');?></form>

но что то ни чего даже ошибку не выдает...

Edited by slavok47
Link to comment
Share on other sites

  • 0

Эта запись неправильная:

$nick=mysql_real_escape_string($nick;

Защищать надо входные данные которые идут с пост или гет запроса по переменным:

форма:

<input type="text" name="login">

и ставим защиту:

mysql_real_escape_string($_POST['login'])

Link to comment
Share on other sites

  • 0

Вместо Вася - Имя, которое ищешь, trm - это внутренняя переменная в функции. Ты учебник-то читал вообще?

После $nick скобку не закрыл аж в двух местах.

И вообще, я дал не готовый код, а только пример. Дальше тебе нужно сделать форму и обработчик для неё, который бы принимал от формы данные и затем выводил funct('Имя, принятное из формы')

Защищать надо входные данные которые идут с пост или гет запроса
Вроде того, остальные данные не надо защищать? В чём именно я не прав там? Edited by Int
Link to comment
Share on other sites

  • 0
Которые пришли из сессии, к примеру, там может попасться кавычка.

К чему относилось? Что именно там не так?

Звиняй, это я провафлил... :)

Там все верно, просто скобку не закрыл он.

Имелось ввиду что лучше, так:

$nick=mysql_real_escape_string($nick);

Или так:

mysql_real_escape_string($_GET(или там $_POST)['nick']);

Или так? В чем будет разница?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy