Denis97832

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

29 сообщений в этой теме

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
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
if (!empty($_GET['key]))

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

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

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

 

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

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
if (!empty($_GET['key]))

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

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

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

 

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

 

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

0

Поделиться сообщением


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

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

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

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

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

P.S.

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

0

Поделиться сообщением


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

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

 

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

0

Поделиться сообщением


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

Если в 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
0

Поделиться сообщением


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

<?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 'Не правильно введен ключ';}?>
0

Поделиться сообщением


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

Так попробуй

Вот что пишет

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
0

Поделиться сообщением


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

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

0

Поделиться сообщением


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

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

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

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

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

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

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

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

Изменено пользователем Denis97832
0

Поделиться сообщением


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

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

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

Ответ:

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

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

<?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
0

Поделиться сообщением


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

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
0

Поделиться сообщением


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

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

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

|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 и получить "Вася"?

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

0

Поделиться сообщением


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

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

image.png

image.png

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

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

Поделиться сообщением


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

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

0

Поделиться сообщением


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

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

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

0

Поделиться сообщением


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

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

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

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

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

Как-то так.

0

Поделиться сообщением


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

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

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

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

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

0

Поделиться сообщением


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

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

0

Поделиться сообщением


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

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

Спасибо)))

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

0

Поделиться сообщением


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

Нет, потому что тогда получится, что я не помог, а написал за тебя.

0

Поделиться сообщением


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

Нет, потому что тогда получится, что я не помог, а написал за тебя.

Не понял)

0

Поделиться сообщением


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

Не понял)

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

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

0

Поделиться сообщением


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

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

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

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

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

0

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас