Перейти к содержимому

Фото
* * * * - 1 голосов

Вопросы и Ответы

PHP Javascript HTML/CSS SQL Ruby Java C/C++ Visual Basic C#

  • Вы не можете создать новую тему
  • Please log in to reply
416 ответов в этой теме

#91 Cepera

Cepera
  • Пользователь
  • 277 сообщений
  • Откуда:Таллинн, ТТУ

Отправлено 11 декабря 2010 - 12:05

$languages = array('Russian', 'Eesti', 'English');
$_SESSION['language'] = ($_GET['lang'] && $_GET['lang']<count($languages))? check_variable($_GET['lang']): $default_lang;

так работает
  • 0

#92 MrHappy

MrHappy
  • Пользователь
  • 16 сообщений

Отправлено 26 декабря 2010 - 16:12

Довольно простой вопрос,но я ,так как новичек, не особо вьезжаю.
итак есть в примеру код
<?php
echo "Hello World!";
?>
как сделать чтобы высветилось не "Hello World!" а "Hello (куча пробелов) World!" ?
каким образом можно в echo и print вставлять символы аски таблицы?

Сообщение изменено: MrHappy (26 декабря 2010 - 16:13 )

  • 0

#93 Cepera

Cepera
  • Пользователь
  • 277 сообщений
  • Откуда:Таллинн, ТТУ

Отправлено 26 декабря 2010 - 16:26

MrHappy,
&nbsp; - пробел
или обернуть в <pre></pre>
"(куча пробелов)" - плохая идея
  • 0

#94 phpmyadmin

phpmyadmin
  • Новобранец
  • 11 сообщений

Отправлено 26 декабря 2010 - 21:37

Здарова народ! Кто может сказать в чём проблема?
Суть в том, что надо сделать проверку на логин и пасс, если есть такие в базе, то перекидывает на другую страницу, если нет, то пишет Wrong Username or Password
Код:
<?php
//nastroiki
$username = "root";
$password = "";
$hostname = "localhost";
$db_name = "social";

//soedinenie s BD
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

//vibiraem/sozdaem BD
mysql_select_db("social", $con);

//vstavka zna4enij v BD
$sql="INSERT INTO users (name, surname, sex, date, country, city, login, email, pass)
VALUES
('$_POST[name]','$_POST[surname]','$_POST[sex]', '$_POST[date]', '$_POST[country]', '$_POST[city]', '$_POST[login]', '$_POST[email]', '$_POST[pass]')";

// esli ne vstavilis zna4enija, to pe4ataet ERROR
/* if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added"; */

//compare login & password
$login = $_POST['login'];
$pass = $_POST['pass'];
$sql_2 = mysql_query("select * from users where login ='$login' AND pass='$pass'");
$result = mysql_query($sql_2);

$count=mysql_num_rows($result);


if($count==1){
session_register("login");
session_register("pass");
header("location:reg.php");
}
else {
echo "Wrong Username or Password";
}


//zakrivaem soedinenie s BD
mysql_close($con);
?>

Ошибки:
Warning: mysql_query() expects parameter 1 to be string, resource given in Z:\home\social\www\connect.php on line 35

Warning: mysql_num_rows() expects parameter 1 to be resource, null given in Z:\home\social\www\connect.php on line 37

Сообщение изменено: phpmyadmin (26 декабря 2010 - 21:41 )

  • 0

#95 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 27 декабря 2010 - 13:03

phpmyadmin,

$sql_2 = mysql_query("select * from users where login ='$login' AND pass='$pass'");
$result = mysql_query($sql_2);

Быть может тут должна была быть mysql_fetch_array(assoc)
  • 0

Вначале делаю, потом думаю :)


#96 Ferzin

Ferzin
  • Постоялец
  • 1 967 сообщений

Отправлено 27 декабря 2010 - 13:39

оххх сколько говнокода.

Для вставки переменных используй соединение строки.
Используй mysql_free_result (на переменную mysql_query) - в конце скрипта. Не будешь использовать будут траблы с памятью.
Забей на session_register. Делай просто $_SESSION["blabla"] = "blabla"; Когда нужно убрать сессию используй unset

Смысл этой конструкции, проверки пароля и.т.д??

так нормально должно быть
$sql_2 = mysql_query("select * from users where login = '".$_POST['login']."' AND pass = '".$_POST['pass']."'");
if(mysql_num_rows($sql_2) == 1)
{
	session_register("login");
	session_register("pass");
	header("location:reg.php");
} else {
	echo "Wrong Username or Password";
}
mysql_free_result($sql_2);

и не знаю как другие - никогда не делаю больше одной проверки на соединение с базой.
  • 0

#97 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 27 декабря 2010 - 14:07

Используй mysql_free_result (на переменную mysql_query) - в конце скрипта. Не будешь использовать будут траблы с памятью.

Ничего не будет.

так нормально должно быть

У вас тоже самое - нет фетча результата.
  • 0

Вначале делаю, потом думаю :)


#98 Ferzin

Ferzin
  • Постоялец
  • 1 967 сообщений

Отправлено 27 декабря 2010 - 17:18

Ну там только проверка поэтому фетч не нужен.

Как правило бандерлоги которые не используют эту функцию, потом долго гадают почему сервак так лагает.
  • 0

#99 phpmyadmin

phpmyadmin
  • Новобранец
  • 11 сообщений

Отправлено 27 декабря 2010 - 19:37

To KUKUX:

Не срабатывает, так и оставляет же на этой странице....И всегда пищет WRONG username or password...(((
  • 0

#100 Ferzin

Ferzin
  • Постоялец
  • 1 967 сообщений

Отправлено 27 декабря 2010 - 19:44

поставь echo в том участке кода вместо mysql_query и запусти вручную. Быть может через POST ничего не передается.
  • 0

#101 Isamashii Tora

Isamashii Tora

    Странствующий

  • Постоялец
  • 1 840 сообщений
  • Откуда:Asylum

Отправлено 27 декабря 2010 - 20:44

CodeMonkey нашёл примитивное решение, не изменяя код новичка -

$count=mysql_num_rows($result);

Меняем на

$count=mysql_num_rows($sql_2);


Обезьянка считает, что в этом случае будет выдано ПРАВИЛЬНО число строк.
Она также предупреждает, что это вполне себе "быдлокод", но работает.
Если у тебя всё-равно не работает(а Я лично на локалхосте проверил работоспособность), то ставь ручные значения "юзера" и "пароля". Должно правильно выдавать количество рядов.

Warning: mysql_query() expects parameter 1 to be string, resource given in Z:\home\social\www\connect.php on line 35

Тут нам ЧЁТКО сказали, что твой запрос ищет СТРИНГ, а выдаёт ему ресурс (Resource#4)

Warning: mysql_num_rows() expects parameter 1 to be resource, null given in Z:\home\social\www\connect.php on line 37

Тут нам наоборот сказали, что он ищет ресурс, а ему дали НУЛЛ.
В общем - ошибки помогают решить 70% проблем с кодом.
Плюс лично от меня, бред делать запрос на запрос О_о

Сообщение изменено: Isamashii Tora (27 декабря 2010 - 20:46 )

  • 0
"Миры рождаются и умирают, память о людях с которыми их прошел - остается" © Тристар

#102 phpmyadmin

phpmyadmin
  • Новобранец
  • 11 сообщений

Отправлено 27 декабря 2010 - 21:43

Спасибо за help народ, буду пробовать, пожже отпишусь.
to Ishamashii Tora: я в этом деле не так давно, поэтому для меня в первую очередь главное, чтобы код работал, а потом уже думать что запрос на запросе это бред. Всёравно пасибо за help, буду пробовать )))
  • 0

#103 Isamashii Tora

Isamashii Tora

    Странствующий

  • Постоялец
  • 1 840 сообщений
  • Откуда:Asylum

Отправлено 27 декабря 2010 - 21:52

Isamashii Tora, дерзай, не забудь потом отписаться о результатах.
  • 0
"Миры рождаются и умирают, память о людях с которыми их прошел - остается" © Тристар

#104 motorov

motorov
  • Пользователь
  • 109 сообщений
  • Откуда:с Луны

Отправлено 01 января 2011 - 22:58

Ну там только проверка поэтому фетч не нужен.

Как правило бандерлоги которые не используют эту функцию, потом долго гадают почему сервак так лагает.

иногда просто забывают про
mysql_close ();
^_^

Сообщение изменено: motorov (01 января 2011 - 22:58 )

  • 0
hérisson dans le brouillard

#105 Isamashii Tora

Isamashii Tora

    Странствующий

  • Постоялец
  • 1 840 сообщений
  • Откуда:Asylum

Отправлено 02 января 2011 - 15:43

motorov, не, ну это совсем уж низкий уровень. Вот "очистить результат", было интересным, а закрывать коннект к базе вроде всех сразу "учат" :)
К сожалению, многие кто задают один вопрос, получают на него ответ и исчезают. Как-то даже скучно.
  • 0
"Миры рождаются и умирают, память о людях с которыми их прошел - остается" © Тристар

#106 phpmyadmin

phpmyadmin
  • Новобранец
  • 11 сообщений

Отправлено 22 января 2011 - 01:17

Да не народ, сорри что сразу не отписался....Вот ща такой код....Опять не пашет...буду исправлять )
<?php
include("db.php");
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST")
{
//username and password sent from form
$login = mysql_escape_string($_POST['login']);
$pass = mysql_escape_string($_POST['pass']);

$pass = md5($pass); //Encrypted password
$sql = "SELECT id FROM users WHERE login = '$login' AND pass = '$pass'";
$result = mysql_query($sql);
$count = mysql_num_rows($result);

//if result matched $login and $pass, table row must be 1 row
if($count == 1)
{
header("Location: http://www.google.com");
}
else
{
$error = "Your Login and Password is invalid";
}
}
?>

<form action = "login.php" method = "post">
<label>Username: </label>
<input type = "text" name = "login" /><br />
<label>Password: </label>
<input type = "password" name = "pass" /><br />
<input type = "submit" name = "login">
</form>
  • 0

#107 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 22 января 2011 - 01:26

phpmyadmin, Указал бы, что выводит, что происходит.
  • 0

Вначале делаю, потом думаю :)


#108 phpmyadmin

phpmyadmin
  • Новобранец
  • 11 сообщений

Отправлено 23 января 2011 - 17:20

Да ничего не выдаёт...регистрация пашет, а логин не хочет.....
  • 0

#109 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 23 января 2011 - 17:56

а логин не хочет.....

Вводишь существующие логин-пароль, а он тебе Your Login and Password is invalid или что ?
  • 0

Вначале делаю, потом думаю :)


#110 phpmyadmin

phpmyadmin
  • Новобранец
  • 11 сообщений

Отправлено 23 января 2011 - 19:42

Ввожу нужный логин и пасс...он просто оставляет пустые поля. Никуда не перекидывает...ничё не пишет(((

Поидее должен на google перекидывать...так как ввожу верно всё...проверял с базой(всё гууд)
  • 0

#111 Isamashii Tora

Isamashii Tora

    Странствующий

  • Постоялец
  • 1 840 сообщений
  • Откуда:Asylum

Отправлено 23 января 2011 - 20:58

phpmyadmin, с каких пор переменные и запросы к базе выполняются автоматически, без команды? ;)
Поставь в скрипте принт основных переменных и сравни мд5 пароля в базе и выдаваемый скриптом.

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

if (mysql_query($sql,$con))
{
echo 'Success';
}
else
{
echo 'Error: ' . mysql_error();
}

Сообщение изменено: Isamashii Tora (23 января 2011 - 21:04 )

  • 0
"Миры рождаются и умирают, память о людях с которыми их прошел - остается" © Тристар

#112 phpmyadmin

phpmyadmin
  • Новобранец
  • 11 сообщений

Отправлено 23 января 2011 - 21:24

Так а причём тут это...с базой коннектится всё норм...Не срабатывает IF при проверке на пользователя...
  • 0

#113 Ferzin

Ferzin
  • Постоялец
  • 1 967 сообщений

Отправлено 23 января 2011 - 21:27

если хочешь чтоб тебе помогали, ставь тег , код нечитаем.

и узнай что такое табуляция :wink:

Сообщение изменено: Ferzin (23 января 2011 - 21:27 )

  • 0

#114 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 23 января 2011 - 23:39

Поменяй,

$error = "Your Login and Password is invalid";

на

print "Your Login and Password is invalid";


А то у тебя дальше нигде нет вывода $error.
  • 0

Вначале делаю, потом думаю :)


#115 phpmyadmin

phpmyadmin
  • Новобранец
  • 11 сообщений

Отправлено 24 января 2011 - 00:05

ок спасибо, попробую обязательно

Сообщение изменено: phpmyadmin (24 января 2011 - 00:09 )

  • 0

#116 Isamashii Tora

Isamashii Tora

    Странствующий

  • Постоялец
  • 1 840 сообщений
  • Откуда:Asylum

Отправлено 24 января 2011 - 22:14

phpmyadmin, db.php тоже код кидай, а то есть подозрения что он оформлен плохо. В твоём скрипте не вижу коннекта к бд.

Не поленился поставить, причина проста: SELECT id FROM users WHERE login = 'Отправить запрос' AND pass = 'dd9279b54eef59ff3fdf4302a628ce7d'
У тебя одинаковое название у кнопки и поля логина. Очевидно, что он не находит результат, а ошибку не выдаёт потому что ты её не "эхо".

Также Я бы упростил до: $pass = md5(mysql_escape_string($_POST['pass']));

Поэтому всегда советую, если вы бьёте себя в грудь кулаком и убеждаете "С БД всё нормально", попробуйте сначала принты сделать всех переменных по-порядку.

Сообщение изменено: Isamashii Tora (24 января 2011 - 22:40 )

  • 0
"Миры рождаются и умирают, память о людях с которыми их прошел - остается" © Тристар

#117 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 24 января 2011 - 22:31

У тебя одинаковое название у кнопки и поля логина

Кстати, да. Смени название на кнопке.
  • 0

Вначале делаю, потом думаю :)


#118 phpmyadmin

phpmyadmin
  • Новобранец
  • 11 сообщений

Отправлено 25 января 2011 - 19:34

db.php

<?php
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "";
$mysql_database = "social";

$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password )
or die ("Could not connect to database");
mysql_select_db($mysql_database, $bd) or die("Opps something went wrong");
?>

Названия одинаковы? Тогда и поля pass совпадают...или ты про что? Вообщем ни в каком случае пока он не пускает меня под правильным логином и пассом
  • 0

#119 Cerfy

Cerfy
  • Пользователь
  • 235 сообщений

Отправлено 25 января 2011 - 19:42

<form action = "login.php" method = "post">
<label>Username: </label>
<input type = "text" name = "login" /><br />
<label>Password: </label>
<input type = "password" name = "pass" /><br />
<input type = "submit" name = "login">
</form>


ничё не настораживает тут?
  • 0
Don't forget, kids...
The more posts you have, the bigger your penis is.

#120 phpmyadmin

phpmyadmin
  • Новобранец
  • 11 сообщений

Отправлено 25 января 2011 - 22:30

точно, не увидел сразу =)...Только это пока не помогло...
  • 0





Читать еще на тему: PHP, Javascript, HTML/CSS, SQL, Ruby, Java, C/C++, Visual Basic, C#