forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   PHP / MySQL (http://forum.boolean.name/forumdisplay.php?f=135)
-   -   Вопрос-Ответ (http://forum.boolean.name/showthread.php?t=16035)

pie 18.01.2013 23:37

Ответ: Вопрос-Ответ
 
Да. Заходить могу, могу изменять, могу добавлять.

dsd 18.01.2013 23:44

Ответ: Вопрос-Ответ
 
ну так заполни свои переменные с хостом, юзером, паролем и именембазы на нормальные и попробуй считать чтонить из базы. В том же phpMyAdmin составь корректный запрос и вставь его в свой пхп скрипт. И все должно заработать. По идее.

pie 19.01.2013 00:02

Ответ: Вопрос-Ответ
 
К сведению:
- конфиг файл у меня заполнен правильно, звездочки я поставил чтобы скрыть информацию от Вас (может мне дать номера и пароли от электронных кошельков?);
- скрипт написан правильно ибо ошибок не выдает.

В ответ от скрипта приходит "false". Значит все проверки выполняются правильно. Не происходит только одного - запись в базу данных. Может проблема в структуре базы данных?

Переписал код:
PHP код:

<?php
Include "Config.php";

if ((!empty(
$_POST['id'])) && (!empty($_POST['key']))) {
    
$id $_POST['id'];
    
$key $_POST['key'];
    
    
$auth_key md5($api_id."_".$id."_".$api_secret);
    
    if (
$key == $auth_key) {
        
$link mysql_connect($mysql_host$mysql_user$mysql_password)
        or die(
"Could not connect : " mysql_error());
        
mysql_query('SET NAMES utf8');
        
mysql_select_db($mysql_database) or die("Could not select database");
        
        
$query "SELECT * FROM `players` WHERE `id` = `".$id."`";
        
        if (
mysql_query($query)) {
            
mysql_query("INSERT INTO `players`(`id`, `key`) VALUES (`".$id."`,`".$key."`)");
            echo 
json_encode(mysql_fetch_array(mysql_query($query)));
        }else{
            echo 
json_encode(mysql_fetch_array(mysql_query($query)));
        }
    }else{
        echo 
"Error key!";
    }
}else{
    echo 
"Error post data!";
}
?>


dsd 19.01.2013 00:17

Ответ: Вопрос-Ответ
 
Блин, сорвалась афера века...

PHP код:

<?php

    mysql_connect
("***""***""***") or die (mysql_error());
    
mysql_select_db("***") or die (mysql_error());

    
mysql_query("set character_set_client    ='utf8'");
    
mysql_query("set character_set_results    ='utf8'");
    
mysql_query("set collation_connection    ='utf8_bin'");
    
    
session_start();
    
    
$query ="SELECT * FROM  `players`";
    
$sql mysql_query($query) or die(mysql_error());
    
    if(
mysql_num_rows($sql)>0){
            for (
$i mysql_num_rows($sql)-1$i >= 0$i--) {
                echo 
'<p>';
                for (
$j mysql_num_fields($sql)-1$j >= 0$j--) {
                    echo 
mysql_result($sql$i$j).'  ';
            
                }
                echo 
'</p>';
            }
    }
    
?>

Вот таким скриптом поидее распечатается твоя таблица.
А может и нет и это супер вирус который уничтожит твой компьютер.

moka 19.01.2013 02:19

Ответ: Вопрос-Ответ
 
На ошибки проверяй сами запросы: mysql_error()
Также ты используешь старые функции, они уже deprecated, и нужно юзать OOP подход используя mysqli.
http://php.net/manual/en/function.mysql-query.php

Trazzy 05.02.2013 16:53

Ответ: Вопрос-Ответ
 
Привет всем бульйонцам!

Есть у меня, к примеру, такой вот код:
PHP код:

<?php
echo '<form method="GET">
<input type="text" name="t1" value="'
.@$_GET['t1'].'">
<input type="text" name="t2" value="'
.@$_GET['t2'].'">
<input type="submit" value="OK">
</form>'
;
?>

... так вот, если в первой строке вписать что-то вроде Вася&t2=Пупкин и нажать ОК - в первой строке будет Вася, а во второй Пупкин.
Т.е. &t2= передастся как есть и воспримется как get..
Вопрос: как бороться с таким поведением?
(надо что-то вроде urlencode, но как?)

SBJoker 05.02.2013 16:57

Ответ: Вопрос-Ответ
 
encodeURIComponent()
или
&аmp; вместо &

Trazzy 05.02.2013 17:13

Ответ: Вопрос-Ответ
 
А без JavaScript никак?

moka 05.02.2013 19:00

Ответ: Вопрос-Ответ
 
При чём тут js? (UPD - твоя проблема заключается в том что со стороны клиента данные не escape'лись, и ты получаешь другие GET переменные)

GET - это то что после ? в ссылке.
Всё что до - другое.

GET - это массив key <> value значений. До = идёт key, а после = value.

Если ты напишешь:
example.com/foo?bar=poo
То у тебя будет только один GET - bar, со значением poo.

Если ты напишешь так:
example.com?foo&bar=poo
То у тебя будет две переменные foo, значение которой будет null и bar со значением poo.
& - это разделитель переменных в GET запросах.

UPD:
Следственно проблема на стороне клиента, при этом и js.

Trazzy 05.02.2013 19:31

Ответ: Вопрос-Ответ
 
МоКа, я так написал потому что (предложеная джокером) функция encodeURIComponent() используется в JS.
З.Ы. Спасибо тебе, конечно.. но я не просил рассказывать про GET и POST запросы, т.к. прекрасно знаю что это такое и как оно работает.
Я задал вопрос и хотел бы получить ответ (желательно с примером кода). Спасибо.

moka 05.02.2013 20:02

Ответ: Вопрос-Ответ
 
Цитата:

Сообщение от 2Fake (Сообщение 251803)
МоКа, я так написал потому что (предложеная джокером) функция encodeURIComponent() используется в JS.
З.Ы. Спасибо тебе, конечно.. но я не просил рассказывать про GET и POST запросы, т.к. прекрасно знаю что это такое и как оно работает.
Я задал вопрос и хотел бы получить ответ (желательно с примером кода). Спасибо.

Тебе уже ответили что за проблема.
Я лишь дал больше инфы.

Проблема в том что браузер будет слать данные как есть, и не будет производить никакого форматирования данных перед отсылкой.
Ты можешь перехватить событие нажатия submit и сделать форматирование данных там - заменить все & на &amp; таким образом у тебя не будет поломана структура GET.
SBJoker тебе дал для этого функцию - используй её.

На стороне сервера, всегда делай нужную валидацию данных, даже если твой front-end код предотвращает не валидные данные, я могу через командную строку всё равно послать не валидный запрос.

Trazzy 05.02.2013 20:26

Ответ: Вопрос-Ответ
 
Цитата:

Сообщение от MoKa
SBJoker тебе дал для этого
функцию - используй её.

Согласен, но не исключено, что может использоваться арбузер без поддержки JS (например: моб.браузер) или яваскрипт будет просто напросто отключен. И вот только поэтому я и спрашивал как обойтись без него..
В таком случае остается только парсить и обрабатывать строку со стороны сервера.

moka 05.02.2013 21:41

Ответ: Вопрос-Ответ
 
Цитата:

Сообщение от 2Fake (Сообщение 251811)
Согласен, но не исключено, что может использоваться арбузер без поддержки JS (например: моб.браузер) или яваскрипт будет просто напросто отключен. И вот только поэтому я и спрашивал как обойтись без него..
В таком случае остается только парсить и обрабатывать строку со стороны сервера.

Не парси и не обрабатывай строку на стороне сервера.
Если клиент использует не позволенные данные - дай ему по голове. Очевидно же.
% не использования JS я себе в современные дни просто не представляю, он для потенциальных клиентов ниже 0.01% - это точно. Следственно такая аудитория тебя не интересует. Если ты конечно не некромант.
Ты не должен париться если клиент делает то что не нужно делать. Твоя задача лишь "вежливо" ему сказать - что так не нужно (сообщение или т.п.).
Тратишь много времени на не нужное.

Также твой сервер должен корректно себя везти при получении валидных данных и любых других, разного типа, разных длин и наличия.

Trazzy 05.02.2013 23:07

Ответ: Вопрос-Ответ
 
Ок, я все осознал и полностью с тобой согласен. Теперь мне нужна помощь в составлении JS.
Тема переехала СЮДА

St_AnGer 10.03.2013 12:13

Ответ: Вопрос-Ответ
 
как лучше составить файл php? Имею ввиду тело сайта писать внутри <?php ?> или данные теги вставлять только в нужных местах?

Т.е. так:
PHP код:

<html>
  <head>
    ...
  </head>
  <body class="body_c">
     ...
     <?php
       
if (траляля)
       {
         ...
       }
     
?>
  </body>
</html>

или так:
PHP код:

<?php
  
echo "
  <html>
    <head>
      ...
    </head>
    <body class=\"body_c\">
       "
;

       if (
траляля)
       {
          ...
       }

    echo 
"
    </body>
  </html>
  "
;
?>

??? Как будет быстрее и оптимизированнее?

Мне кажется что первый вариант более удобоваримый, но на всякий случай решил спросить, т.к. изначально сайт написал по второму варианту и начал реально сомневаться:)


Часовой пояс GMT +4, время: 11:57.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot