Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2011, 23:50   #1
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
Вопрос найти ошибку

помогите найти ошибку, я делаю чат по инструкциям здесь http://webmastak.com/article.aspx?id=100

вот что выбивает когда я ввожу логин, пароль и нажимаю войти в чат:
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in B:\home\schol-6.org.ua\www\chat\Chat.php on line 32

вот код:
Код:
<?PHP
error_reporting(0);
include("includer.php");
$login=$_POST['login'];
$password=$_POST['password'];
if (($login!='') && ($password!=''))
{
echo "<TITLE>Чат на MICRO.ORG.UA - ".strtoupper($login)."</TITLE>";
$db=mysql_connect($myserver, $mylogin, $mypassword);
mysql_select_db("micro");
# Проверяем, зарегистрирован ли такой ник в чате
$sql="SELECT * FROM `chat_users` WHERE `login`='".$login."'";
$result=mysql_query($sql);
$num_results=mysql_num_rows($result);
# Если человека с таким ником нет в чате, то регистрируем его и делаем активным
if (($num_results=='') || ($num_results==0))
{
$sql="INSERT INTO `chat_users` VALUES ('', '".$login."','".$password."','','1')";
$result=mysql_query($sql);
include("chat.inc.php");
}
# Иначе проверяем: если он ввел верный пароль - он входит в чат, иначе переходит на главную страницу
else 
{
$sql="SELECT * FROM `chat_users` WHERE `login`='".$login."' and `password`='".$password."'";
$result=mysql_query($sql);
$num_results=mysql_num_rows($result);
 if (($num_results=='') || ($num_results==0))
 {
 echo '<SCRIPT LANGUAGE="JavaScript">
 <!--
 alert('Вы ввели неверный пароль. Если Вы - обладатель этого ника, то попробуйте ввести еще раз, а если нет - то зайдите под 

другим ником.nMICRO');
 location.href="index.php";
 //-->
 </SCRIPT>';
 }
 else
 {
 $sql="SELECT * FROM `chat_users` WHERE `login`='".$login."'";
 $result=mysql_query($sql);
 $num_results=mysql_num_rows($result);
 $row=mysql_fetch_array($result);
 $id=$row["id"];
 $sql="DELETE FROM `chat_users` WHERE `id`=".$id;
 $result=mysql_query($sql);
 $sql="INSERT INTO `chat_users` VALUES ('".$id."', '".$login."','".$password."','','1')";
 $result=mysql_query($sql);
 include("chat.inc.php");
 }
}
}
else
{
Header("Location:index.php");
}
?>
Это ещё не конец и даже не начало конца, это возможно только конец начала.
pufystyj вне форума Ответить с цитированием
Старый 14.02.2011, 00:11   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Экранируйте одиночные кавычки в своём alert() вот в этом фрагменте:
Код:
 echo '<SCRIPT LANGUAGE="JavaScript">

 <!--

 alert('Вы ввели неверный пароль. Если Вы - обладатель этого ника, то попробуйте ввести еще раз, а если нет - то зайдите под 



другим ником.nMICRO');

 location.href="index.php";

 //-->

 </SCRIPT>';
Andkorol вне форума Ответить с цитированием
Старый 14.02.2011, 15:57   #3
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Экранируйте одиночные кавычки в своём alert() вот в этом фрагменте:
Код:
 echo '<SCRIPT LANGUAGE="JavaScript">

 <!--

 alert('Вы ввели неверный пароль. Если Вы - обладатель этого ника, то попробуйте ввести еще раз, а если нет - то зайдите под 



другим ником.nMICRO');

 location.href="index.php";

 //-->

 </SCRIPT>';
Зделал вот так:
Код:
 if (($num_results=='') || ($num_results==0))
 {
 'echo <SCRIPT LANGUAGE="JavaScript">
'alert('Вы ввели неверный пароль. Если Вы - обладатель этого ника, то попробуйте ввести еще раз, а если нет - то зайдите под 

другим ником.nMICRO')';
 location.href="index.php";

 </SCRIPT>',
 }
но теперь пишет ошибку:
Цитата:
Parse error: syntax error, unexpected T_STRING in B:\home\schol-6.org.ua\www\chat\Chat.php on line 31

Это ещё не конец и даже не начало конца, это возможно только конец начала.
pufystyj вне форума Ответить с цитированием
Старый 14.02.2011, 16:49   #4
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

А Вы знаете, что такое экранирование?
У вас получается строка внутри строки. Используя одинаковые кавычки возникает ситуация как у Вас: интерпретатор думает, что строка закончилась и видит после нее ерунду, поэтому и ругается.

Код:
 if (($num_results=='') || ($num_results==0))
 {
 echo '<SCRIPT LANGUAGE="JavaScript">
 <!--
 alert(\'Вы ввели неверный пароль. Если Вы - обладатель этого ника, то попробуйте ввести еще раз, а если нет - то зайдите под 

другим ником.nMICRO\');
 location.href="index.php";
 //-->
 </SCRIPT>';
 }
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 14.02.2011, 21:36   #5
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
Вопрос

спс, что откликнулись (обоим)

скорее не знаю, что такое ,,экранирование,, , я только предпологал...
блин там написано или с кучей ошибок, или просто не та версия пхп, у меня 5.3 ... вся проблема, что я не очень знаю пхп, но я знаю C++ )))

у меня теперь ещё ошибка, там же:
Код:
Parse error: syntax error, unexpected T_ELSE in B:\home\schol-6.org.ua\www\chat\Chat.php on line 51
а весь код
Код:
<?PHP
error_reporting(0);
include("includer.php");
$login=$_POST['login'];
$password=$_POST['password'];
if (($login!='') && ($password!=''))
{
echo "<TITLE>Чат нашої школи - ".strtoupper($login)."</TITLE>";
$db=mysql_connect($myserver, $mylogin, $mypassword);
mysql_select_db("micro");

$sql="SELECT * FROM `chat_users` WHERE `login`='".$login."'";
$result=mysql_query($sql);
$num_results=mysql_num_rows($result);

if (($num_results=='') || ($num_results==0))
{
$sql="INSERT INTO `chat_users` VALUES ('', '".$login."','".$password."','','1')";
$result=mysql_query($sql);
include("chat.inc.php");
}

else 
{
$sql="SELECT * FROM `chat_users` WHERE `login`='".$login."' and `password`='".$password."'";
$result=mysql_query($sql);
$num_results=mysql_num_rows($result);
 if (($num_results=='') || ($num_results==0))

 {

 echo '<SCRIPT LANGUAGE="JavaScript">

 <!--

 alert(\'Вы ввели неверный пароль. Если Вы - обладатель этого ника, то попробуйте ввести еще раз, а если нет - то зайдите под 



другим ником.nMICRO\');

 location.href="index.php";

 //-->

 </SCRIPT>';

 }

 }
 else
 {
 $sql="SELECT * FROM `chat_users` WHERE `login`='".$login."'";
 $result=mysql_query($sql);
 $num_results=mysql_num_rows($result);
 $row=mysql_fetch_array($result);
 $id=$row["id"];
 $sql="DELETE FROM `chat_users` WHERE `id`=".$id;
 $result=mysql_query($sql);
 $sql="INSERT INTO `chat_users` VALUES ('".$id."', '".$login."','".$password."','','1')";
 $result=mysql_query($sql);
 include("chat.inc.php");
 }
// помилка
}
else
{
Header("Location:index.php");
}
?>
Это ещё не конец и даже не начало конца, это возможно только конец начала.
pufystyj вне форума Ответить с цитированием
Старый 14.02.2011, 22:08   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от pufystyj Посмотреть сообщение
у меня теперь ещё ошибка, там же:
Код:
Parse error: syntax error, unexpected T_ELSE in B:\home\schol-6.org.ua\www\chat\Chat.php on line 51
Ошибка говорит о неожиданном элементе else в вашем коде.

Отформатируйте ваш код - и вы сами увидите лишний элемент, этот код невозможно читать.

Отформатировать можно тут или тут, а здесь вам даже подсветят ваш лишний элемент
Andkorol вне форума Ответить с цитированием
Старый 15.02.2011, 15:39   #7
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
По умолчанию

спс, я невношко отредактировал несколько файлов и все работает!!! (почти все, кроме chat.php)
теперь любой может зайти в чат и он будет без ника... в файле в котором должен хранится ники и пароли ничего нет и ничего не записуется (ну кроме того что я сам туда написал...)
я думаю вся проблема в коде:
Код:
            $sql = "SELECT * FROM `chat_users` WHERE `login`='".$login."'";
            $result = mysql_query($sql);
            $num_results = mysql_num_rows($result);
            $row = mysql_fetch_array($result);
            $id = $row["id"];
            $sql = "DELETE FROM `chat_users` WHERE `id`=". $id;
            $result = mysql_query($sql);
            $sql = "INSERT INTO `chat_users` VALUES ('".$id."', '".$login."','".$password."','','1')";
            $result = mysql_query($sql);
            include ("chat.inc.php");
Но я не совсем (понимаю что это значит (потому что я чуть-чуть далёк от пхп)
помогите понять (я не прошу об*яснять что все эти строки делают, а только что операторы делают (я же не дал всего кода...)).
Это ещё не конец и даже не начало конца, это возможно только конец начала.
pufystyj вне форума Ответить с цитированием
Старый 16.02.2011, 08:57   #8
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

Цитата:
Сообщение от pufystyj Посмотреть сообщение
спс, я невношко отредактировал несколько файлов и все работает!!! (почти все, кроме chat.php)
теперь любой может зайти в чат и он будет без ника... в файле в котором должен хранится ники и пароли ничего нет и ничего не записуется (ну кроме того что я сам туда написал...)
я думаю вся проблема в коде:
Код:
            $sql = "SELECT * FROM `chat_users` WHERE `login`='".$login."'";
            $result = mysql_query($sql);
            $num_results = mysql_num_rows($result);
            $row = mysql_fetch_array($result);
            $id = $row["id"];
            $sql = "DELETE FROM `chat_users` WHERE `id`=". $id;
            $result = mysql_query($sql);
            $sql = "INSERT INTO `chat_users` VALUES ('".$id."', '".$login."','".$password."','','1')";
            $result = mysql_query($sql);
            include ("chat.inc.php");
Но я не совсем (понимаю что это значит (потому что я чуть-чуть далёк от пхп)
помогите понять (я не прошу об*яснять что все эти строки делают, а только что операторы делают (я же не дал всего кода...)).
На мой взгляд тут ерунда какая-то творится.

Код:
            $sql = "SELECT * FROM `chat_users` WHERE `login`='".$login."'";
            $result = mysql_query($sql);
            $num_results = mysql_num_rows($result);
            $row = mysql_fetch_array($result);
Ищем в таблице chat_users пользователя с логином $login
Код:
            $id = $row["id"];
            $sql = "DELETE FROM `chat_users` WHERE `id`=". $id;
            $result = mysql_query($sql);
Удаляем этого пользователя.
Код:
            $sql = "INSERT INTO `chat_users` VALUES ('".$id."', '".$login."','".$password."','','1')";
            $result = mysql_query($sql);
И тут же добавляем обратно.
Какой в этом смысл?
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 16.02.2011, 12:32   #9
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
По умолчанию

Цитата:
Сообщение от Wicort Посмотреть сообщение
На мой взгляд тут ерунда какая-то творится.

Код:
            $sql = "SELECT * FROM `chat_users` WHERE `login`='".$login."'";
            $result = mysql_query($sql);
            $num_results = mysql_num_rows($result);
            $row = mysql_fetch_array($result);
Ищем в таблице chat_users пользователя с логином $login
Код:
            $id = $row["id"];
            $sql = "DELETE FROM `chat_users` WHERE `id`=". $id;
            $result = mysql_query($sql);
Удаляем этого пользователя.
Код:
            $sql = "INSERT INTO `chat_users` VALUES ('".$id."', '".$login."','".$password."','','1')";
            $result = mysql_query($sql);
И тут же добавляем обратно.
Какой в этом смысл?
вот, вот, а я думал что я плохо понял . видимо автор этой статьи кода не читал или писал его 1-ну страницу в месяц и запутался...
Это ещё не конец и даже не начало конца, это возможно только конец начала.
pufystyj вне форума Ответить с цитированием
Старый 16.02.2011, 12:32   #10
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
По умолчанию

Цитата:
Сообщение от Wicort Посмотреть сообщение
На мой взгляд тут ерунда какая-то творится.

Код:
            $sql = "SELECT * FROM `chat_users` WHERE `login`='".$login."'";
            $result = mysql_query($sql);
            $num_results = mysql_num_rows($result);
            $row = mysql_fetch_array($result);
Ищем в таблице chat_users пользователя с логином $login
Код:
            $id = $row["id"];
            $sql = "DELETE FROM `chat_users` WHERE `id`=". $id;
            $result = mysql_query($sql);
Удаляем этого пользователя.
Код:
            $sql = "INSERT INTO `chat_users` VALUES ('".$id."', '".$login."','".$password."','','1')";
            $result = mysql_query($sql);
И тут же добавляем обратно.
Какой в этом смысл?
вот, вот, а я думал что я плохо понял . видимо автор этой статьи кода не читал или писал его 1-ну страницу в месяц и запутался...
Это ещё не конец и даже не начало конца, это возможно только конец начала.
pufystyj вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Найти ошибку! sir.andrey Помощь студентам 5 20.10.2010 13:06
найти ошибку Яська Помощь студентам 1 04.04.2010 17:23
найти ошибку rUs_LAN Общие вопросы C/C++ 8 14.05.2009 12:02