Перейти к содержанию

PHP-не могу исправить ошибку


Рекомендуемые сообщения

image.png

image.png

 

Вот этим кодом на делфи я подключаюсь

<?phpinclude('bd.php'); // Подключение к бд$link = mysqli_connect( '127.0.0.1', 'root', '', '123123');        if (!empty($_GET['key]))        {                $klop = mysqli_real_escape_string($link, $_GET['key'] );                $result = mysqli_query( $link, "SELECT * FROM `Ropbazi` WHERE key='$key'ORDER BY id DESC LIMIT 1");                $row = mysqli_fetch_assoc($result);                if ( empty($row['id'] ) )                {                        echo 'YES';                        //echo '<br />'.$add.'<br />';                        if ( $klop == $key ){                                //echo '<br />Add';                                mysqli_query( $link, "INSERT INTO `scaner` ( `key`) VALUES ( '".$key."')");                                //mysqli_close( $link );                        }                }else                        echo 'NO';}//mysqli_close( $link );?>
varhttp : TidHTTP;str : string;begintry        str := http.Get('http://site.ru/key.php?klop='+edit1.text);        if str = 'NO' then        begin        button1.visible:=true;          //нет логина        end else if str = 'YES' then        begin        button1.visible:=false;          //есть логин        end;      except        //Ошибка      end;    end;end.
Изменено пользователем NullAlex
Ссылка на комментарий
Поделиться на другие сайты

if (!empty($_GET['key]))

У тебя забыт второй апостроф в имени ключа $_GET['key]. Должно быть

if (!empty($_GET['key']))

Надеюсь, понял, где.

 

И да, ключ передавать в GET, где его может увидеть любой - маразм запредельный. Если этот ключ должен иметь хоть каплю секретности, лучше передавать его через сессию.

Ссылка на комментарий
Поделиться на другие сайты

if (!empty($_GET['key]))

У тебя забыт второй апостроф в имени ключа $_GET['key]. Должно быть

if (!empty($_GET['key']))

Надеюсь, понял, где.

 

И да, ключ передавать в GET, где его может увидеть любой - маразм запредельный. Если этот ключ должен иметь хоть каплю секретности, лучше передавать его через сессию.

 

К сожаленю я в php не понимаю, не могли бы подсказать что да как

Ссылка на комментарий
Поделиться на другие сайты

К сожаленю я в php не понимаю, не могли бы подсказать что да как

Смотри по коду в первом сообщении, подсветка даже на сайте говорит о том, что все, что следует после: if (!empty($_GET['key])) - является строкой (зеленый цвет).

Xipho показал, где кроется ошибка, а именно - в одинарной кавычке (точнее - в ее отсутствии).

if (!empty($_GET['key])) // <-- не хватает кавычки
if (!empty($_GET['key'])) // <-- кавычка на месте
Это если я правильно понял твой вопрос. А по поводу GET запроса и сессии, то если ключ представляет из себя что-то, что пользователю знать (и тем-более - изменять) не положено, то смотри в сторону сессий.

P.S.

Закладки зачетные ^_^

Ссылка на комментарий
Поделиться на другие сайты

К сожаленю я в php не понимаю, не могли бы подсказать что да как

 

Если в php не понимаешь - лучше не берись править код, ибо такого можешь напортачить, что мама горевать замучается.

Ссылка на комментарий
Поделиться на другие сайты

Если в php не понимаешь - лучше не берись править код, ибо такого можешь напортачить, что мама горевать замучается.

Да не что такого можно натворить то в этом коде :-D  :-D  :-D

Смотри по коду в первом сообщении, подсветка даже на сайте говорит о том, что все, что следует после: if (!empty($_GET['key])) - является строкой (зеленый цвет).

Вот исправил все по другому, но все же ошибочка

<?php$localhost="localhost";$name_bd="12312431";$base="root";$passw_bd="2134242";$link = mysql_connect($localhost,$name_bd,$passw_bd);mysql_select_db($base, $link);$key = trim($_GET['key']);if (!empty($key))        {    $result = mysql_query("SELECT * FROM `root` WHERE (`key`= '$key') ");             while($row = mysql_fetch_assoc($result)) {            $id=$row['id'];            }                 if(!empty($id)){                echo "Ключ введен вверно";                mysql_query("INSERT INTO `root` ( `key`) VALUES ('".$key."')",$link);                }                 else                {echo 'Ключ не подходит';}         } else {echo 'Не правильно введен ключ';}?>
Изменено пользователем NullAlex
Ссылка на комментарий
Поделиться на другие сайты

<?php$localhost="localhost";$name_bd="12312431";$base="root";$passw_bd="2134242";$link = mysql_connect($localhost,$name_bd,$passw_bd);mysql_select_db($base, $link);$key = trim($_GET['key']);if (!empty($key)) {    $result = mysql_query("SELECT * FROM `root` WHERE (`key`= '$key') ");   while($row = mysql_fetch_assoc($result)) {    $id=$row['id'];         if(!empty($id)) {      echo "Ключ введен верно";      mysql_query("INSERT INTO `root` ( `key`) VALUES ('".$key."')",$link);    }     else    {      echo 'Ключ не подходит';    }   }} else {  echo 'Не правильно введен ключ';}?>
Ссылка на комментарий
Поделиться на другие сайты

Так попробуй

Вот что пишет

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /home/u714706965/public_html/scaner/key.php on line 11

Запрос делаю вот так

http://site.ru/key.php?key= здесь пишу ключ который уже есть в бд

Изменено пользователем NullAlex
Ссылка на комментарий
Поделиться на другие сайты

Ошибок вроде не должно быть. А подключение к серверу и БД - проверено?

Да все отлично

,Ну как тогда можно сделать php скрипт чтоб я мог обращаться 

Запрос делаю вот так

http://site.ru/key.php?key= здесь пишу ключ который уже есть в бд

Если есть ключ то пишет ключ "Ключ введен верно"

а если в бд нет ключа, то 'Ключ не подходит'

Изменено пользователем Denis97832
Ссылка на комментарий
Поделиться на другие сайты

Я вот не поленился, и проверил код из своего поста. Он рабочий.

Запрос из адресной строки:

Ответ:

Ключ введен верно

Проверяй настройки переменных.

<?php$localhost="localhost";$name_bd="12312431"; // пользователь MySQL$base="root"; // имя БД$passw_bd="2134242"; // пароль пользователя MySQL$link = mysql_connect($localhost,$name_bd,$passw_bd);mysql_select_db($base, $link);$key = trim($_GET['key']);if (!empty($key)) {    $result = mysql_query("SELECT * FROM `root` WHERE (`key`= '$key') "); // <-- здесь ты выполняешь запрос к таблице "root", а "root" обычно является пользователем БД, если нет, то проверь колонку "key".  while($row = mysql_fetch_assoc($result)) {    $id=$row['id'];         if(!empty($id)) {      echo "Ключ введен верно";      mysql_query("INSERT INTO `root` ( `key`) VALUES ('".$key."')",$link);    }     else    {      echo 'Ключ не подходит';    }   }} else {  echo 'Не правильно введен ключ';}?>
http://test.com/index.php?key=1
Ссылка на комментарий
Поделиться на другие сайты

var post : TStringList;res: string;beginpost := TStringList.Create;IdHTTP1.HandleRedirects := True;trypost.Add('klop='+Edit1.Text);res := UTF8Decode(IdHTTP1.Post('http://site.ru/key.php', post)); if (res = 'YES') then button1.visible := false else button1.visible := true;exceptpost.Free;end;

IdHTTP Не забудь добавить. И отслеживай, какой ответ от сервера тебе приходит. Потому что может еще html код вернуться и его нужно будет отрезать.

P.S. Если ты делаешь авторизацию, то применяй хотябы 64byte кодинг.

И еще такой метод авторизации легко обойти. Через Denwer сделать эмулятор твоего скрипта, который будет всегда возвращать YES

Нужно реализовать еще 1 идентификатор. 

Например:

Ключ у тебя длиной 16 символов.

Тогда лепим строку key + номер раздела диска С.

Шифруем строку.

Отправляем на сервер.

Сервер отрезает от строки 16 символов и заносит строку в переменную key.

Далее если такой ключ существует, то серв возвращает остаток строки, в зашифрованном виде, с номером раздела.

Прога приняла эти данные и расшифровала.

Далее, если номер раздела совпадает с текущем, то авторизация прошла успешна.

Принимать константы с сервера - это самый бестолковый способ при авторизации.

А так хоть у всех пользователей разные данные будут отправляться, и всякие школьники не додумаются, как из изменить, чтоб авторизация прошла.

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

NullAlex, я все понял) Спасибо

Vlad2, помоги пожалуйста с кодом php

Имею таблицу в ней 1 столбец: Key

Нужно произвести поиск по этому  Key

Если нашёл - вывести из таблицы найденную строку (2 одинаковых фраз не встречается в таблице)

Название таблицы scaner

 

как можно сделать так чтоб если есть ключ в этом Key , то будет YES

NullAlex: не надо цитировать все сообщение, цитировать следует отдельные участки сообщения, или если на то пошло - использовать ник, в качестве обращения. Не нужно создавать страшные длиннопосты
Изменено пользователем NullAlex
Ссылка на комментарий
Поделиться на другие сайты

Я не понимаю, как выглядит твоя таблица и по каким критериям нужно искать.

Как ты объяснил, имеет следующий вид;

|Key|value0value1value2value3

Ищем допустим value1, ну найдется оно и что? Выводить его чтоли нужно?

Или же у тебя таблица имеет такой вид?
 

Table       |  Key  |value0         ABCvalue1         DEFvalue2         GHIvalue3         JKL

И тебе нужно найти GHI и посмотреть чему она принадлежит? В данном случае value2.

Или такая у тебя таблица?

Table       |  Key  |  String  |value0         ABC      Вася       value1         DEF      Коляvalue2         GHI      Петяvalue3         JKL      Дима

И ты хочешь найти ABC, посмотреть чему принадлежит(value0), и из value0 прочесть String и получить "Вася"?

объясни подробней. 

Ссылка на комментарий
Поделиться на другие сайты

В общем вот скриншоты)

image.png

image.png

Ты с Хабаровска?

NullAlex: изменил сообщения в теме. Убрал картинки и объемный код под спойлеры, убрал очевидные и ненужные цитаты, которые создавали уродливые длиннопосты.
Изменено пользователем NullAlex
Ссылка на комментарий
Поделиться на другие сайты

Ну вот смоти, у тебя есть столбец Key, ты внем хочешь найти 123, а что ты хочешь вывести то, если у тебя больше там нет никаких данных?

Ну вот если нашёл это "123", то чтоб мне выводит "YES". Если не нашел , то чтоб выводило "NO"

Ссылка на комментарий
Поделиться на другие сайты

Если тебе нужно найти именно 123, тогда пишешь 

SELECT * FROM `scaner` WHERE `key` = '123';

Если же тебе нужно найти все записи, в которых содержится 123, тогда

SELECT * FROM `scaner` WHERE `key` LIKE '%123%';

Как-то так.

Ссылка на комментарий
Поделиться на другие сайты

Мне надо чтоб при таком запросе

Http://site.RU/key.php?key= здесь ключ

И если такой имеется в базе, то "YES", a ecли нет такого в базе то "NO"

Я бы зделал все сам, но в php вообще не понимаю

Ссылка на комментарий
Поделиться на другие сайты

Так я тебе привел два варианта. Первый - как раз на полное равенство ключу.

Спасибо)))

Можете помочь полность со всем скриптом)?

Ссылка на комментарий
Поделиться на другие сайты

Не понял)

Чего ты не понял? Тебе сказали, что весь скрипт за тебя писать не будут.

Всё что необходимо для написания своего скрипа ты уже получил в этом топике.

Ссылка на комментарий
Поделиться на другие сайты

Чего ты не понял? Тебе сказали, что весь скрипт за тебя писать не будут.

Всё что необходимо для написания своего скрипа ты уже получил в этом топике.

Вот теперь понял) И на это спасибо что помогли

Всем спасибо!!!! Все сделал и все работает)

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.