Пишу реферальную систему для phpbb. Помогите советом

Discussion in 'PHP' started by NApoleonchik, 21 Jun 2008.

  1. NApoleonchik

    NApoleonchik Elder - Старейшина

    Joined:
    4 Jul 2007
    Messages:
    79
    Likes Received:
    39
    Reputations:
    4
    Пишу реферальную систему для ПхпБб.

    Пишу на пхп + мускул

    Принцип заключаеться в чем. Когда зарегеный пользователь приводит по уник ссылке нового пользователя он получает + 1 поинт. ссылка выглядит примерно так

    сайт.ру/индекс.пхп?123

    Создал доп таблицу в мускуле :


    CREATE TABLE `phpbb_points` (
    `user_id` int(11) NOT NULL,
    `username` text NOT NULL,
    `userpoints` int(11) NOT NULL,
    `ip` text NOT NULL,
    `time` time NOT NULL,
    PRIMARY KEY (`user_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;


    PHP:
    <?
    include(
    "config.php");

    $id mysql_escape_string($_SERVER['QUERY_STRING']);

    if (!
    is_numeric($id) || strlen($id) == 0) echo"Error!";
    else {
            
    $login=mysql_fetch_array(mysql_query("SELECT user_id, username FROM phpbb_users WHERE id='".$id."'"));

            if (!empty(
    $login['user'])) {

                    
    $ip=GetEnv("REMOTE_ADDR");
                    
    $now=time();

         
    $res=mysql_fetch_array(mysql_query("SELECT `user_id` FROM php_points where ip='".$ip."' AND time>$now-86400"));
         
    $col=mysql_fetch_array(mysql_query("SELECT count(*) as count FROM php_points where id='".$id."' AND time>$now-86400"));

         if (
    $col['count']<=50) {
                            if (empty(
    $res['user_id'])) {
        
                            
    mysql_query("INSERT INTO php_points values ('".$login['user_id']."','$ip','$now')");
                            
    mysql_query("UPDATE php_points set points=points+1 where id='".$login['user_id']."'");


                
                            }
                    }
            
            }
           
    mysql_close($link);

            
    $host=GetEnv("HTTP_HOST");
            
    Header("Location: http://$host/");

    }
    ?>
    Где-то ошибка. Не заполняеться база. Помогите кто может. Буду ооочень благодарен :confused:
     
    3 people like this.
  2. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    а где у тебя в скрипте mysql_connect/mysql_select_db?
     
  3. NApoleonchik

    NApoleonchik Elder - Старейшина

    Joined:
    4 Jul 2007
    Messages:
    79
    Likes Received:
    39
    Reputations:
    4
    Файл конфиг пхп
    PHP:
    <?php


    // phpBB 2.x auto-generated config file
    // Do not change anything in this file!

    $dbms 'mysql';

    $dbhost 'localhost';
    $dbname 'db';
    $dbuser 'user';
    $dbpasswd 'pass';

    $table_prefix 'phpbb_';

    define('PHPBB_INSTALLED'true);

    ?>
    а насчет селект ДБ, подскажите если не трудно куда прописать и как примерно должен выглядеть скрипт
     
  4. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    PHP:
    mysql_connect($dbhost,$dbuser,$dbpasswd);
    mysql_select_db($dbname);
    и во всех операциях с таблицей перед именем таблицы ставь $table_prefix
     
    1 person likes this.
  5. NApoleonchik

    NApoleonchik Elder - Старейшина

    Joined:
    4 Jul 2007
    Messages:
    79
    Likes Received:
    39
    Reputations:
    4
    спасибо =) +1
     
  6. NApoleonchik

    NApoleonchik Elder - Старейшина

    Joined:
    4 Jul 2007
    Messages:
    79
    Likes Received:
    39
    Reputations:
    4
    всеравно что-то нетак, попробуйте ктонить у кого есть пхпББ пожалуйста. Сделал так

    PHP:
    <?
    include(
    "config.php");


    mysql_connect($dbhost,$dbuser,$dbpasswd
    mysql_select_db($dbname);  


    $id mysql_escape_string($_SERVER['QUERY_STRING']);

    if (!
    is_numeric($id) || strlen($id) == 0) echo"Error!";
    else {
            
    $login=mysql_fetch_array(mysql_query("SELECT user_id, username FROM phpbb_users WHERE id='".$id."'"));

            if (!empty(
    $login['user'])) {

                    
    $ip=GetEnv("REMOTE_ADDR");
                    
    $now=time();

         
    $res=mysql_fetch_array(mysql_query("SELECT `user_id` FROM phpbb_points where ip='".$ip."' AND time>$now-86400"));
         
    $col=mysql_fetch_array(mysql_query("SELECT count(*) as count FROM php_points where id='".$id."' AND time>$now-86400"));

         if (
    $col['count']<=50) {
                            if (empty(
    $res['user_id'])) {
        
                            
    mysql_query("INSERT INTO php_points values ('".$login['user_id']."','$ip','$now')");
                            
    mysql_query("UPDATE php_points set points=points+1 where id='".$login['user_id']."'");


                
                            }
                    }
            
            }
           
    mysql_close($link);

            
    $host=GetEnv("HTTP_HOST");
            
    Header("Location: http://$host/");

    }
    ?>
    Помогите сделать пожалуйста :( :confused:
     
    #6 NApoleonchik, 21 Jun 2008
    Last edited: 21 Jun 2008
  7. NApoleonchik

    NApoleonchik Elder - Старейшина

    Joined:
    4 Jul 2007
    Messages:
    79
    Likes Received:
    39
    Reputations:
    4
    up! Может кто знает есть ли где готовый скрипт или получиться дописать этот - буду очень благодарен
     
  8. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    PHP:
    mysql_connect($dbhost,$dbuser,$dbpasswd;
    - скобку забыл
     
    2 people like this.
  9. Solker

    Solker Elder - Старейшина

    Joined:
    4 May 2006
    Messages:
    175
    Likes Received:
    53
    Reputations:
    18
    В первом сообщении ты сказал что создал таблицу под именем "phpbb_points".
    Но в самом скрипте при выборке или вставке в таблицу используешь альтернативное название "php_points".

    Вероятно тебе надо определится с названием и закрыть скобку в 4-ой строчке.

    mysql_close($link); Я полагаю, это не просто так в конце стоит.
    Замени 4 и 5 строчку, на
    PHP:
    $link mysql_connect($dbhost,$dbuser,$dbpasswd); 
    $link mysql_select_db($dbname);
    и для красоты:
    PHP:
    == 0) echo"Error!";
    Поставь пробел после echo.
     
  10. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,548
    Likes Received:
    1,397
    Reputations:
    612
    ставь хотя бы or print mysql_error() после mysql_query(), раз пхпббешный класс для работы с бд не юзаешь. может там где ошибка - смотри.
     
    1 person likes this.
  11. NApoleonchik

    NApoleonchik Elder - Старейшина

    Joined:
    4 Jul 2007
    Messages:
    79
    Likes Received:
    39
    Reputations:
    4
    :mad:
     
    #11 NApoleonchik, 22 Jun 2008
    Last edited: 22 Jun 2008
    1 person likes this.
  12. NApoleonchik

    NApoleonchik Elder - Старейшина

    Joined:
    4 Jul 2007
    Messages:
    79
    Likes Received:
    39
    Reputations:
    4
    Всем спасибо но еще не все, следовал вашим советом, ставил пхп-редактор в нем пробовал - не то. Все равно база не заполняется.

    Структура таблиці `phpbb_points`
    --

    вот проапгрейдженый код:

    PHP:
    <html>

    <head>
      <title></title>
    </head>

    <body>

    <?
    include("config.php");

    $link mysql_connect($dbhost,$dbuser,$dbpasswd);
    $link mysql_select_db($dbname);

    $id mysql_escape_string($_SERVER['QUERY_STRING']);

    if (!
    is_numeric($id) || strlen($id) == 0)  echo "Error!";
    else {
            
    $login=mysql_fetch_array(mysql_query("SELECT user_id, username FROM phpbb_users WHERE user_id='".$id."'"));

            if (!empty(
    $login['username'])) {

                    
    $ip=GetEnv("REMOTE_ADDR");
                    
    $now=time();

         
    $res=mysql_fetch_array(mysql_query("SELECT `user_id` FROM phpbb_points where ip='".$ip."' AND time>$now-86400"));
         
    $col=mysql_fetch_array(mysql_query("SELECT count(*) as count FROM phpbb_points where user_id='".$id."' AND time>$now-86400"));

         if (
    $col['count']<=50) {
                            if (empty(
    $res['user_id'])) {

                            
    mysql_query("INSERT INTO phpbb_points values ('".$login['user_id']."','$ip','$now')");
                            
    mysql_query("UPDATE phpbb_points set userpoints=userpoints+1 where user_id='".$login['user_id']."'");



                            }
         }

            }

    mysql_close($link);

            
    $host=GetEnv("HTTP_HOST");
            
    Header("Location: http://$host/");

    }
    ?>

    </body>

    </html>

    попробуйте пожалуйста ктонить у себя поставить - может разберетесь, я уже 3-тий день с ним имею половую жизнь :confused: :rolleyes:
     
  13. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    попробуй все свои mysql_query заменить на следующее:
    PHP:
    if(!mysql_query( ... )) echo mysql_error();
     
  14. Solker

    Solker Elder - Старейшина

    Joined:
    4 May 2006
    Messages:
    175
    Likes Received:
    53
    Reputations:
    18
    И за компанию
    PHP:
    error_reporting(E_ALL);
    в начало.

    И собственно ошибки в студию.
     
  15. NApoleonchik

    NApoleonchik Elder - Старейшина

    Joined:
    4 Jul 2007
    Messages:
    79
    Likes Received:
    39
    Reputations:
    4
    народ извините сейчас времени нету. Практика все-таки.... Если кто может пожалуйста потестируйте скрипт как подсказали господа solker и scrat
     
  16. NApoleonchik

    NApoleonchik Elder - Старейшина

    Joined:
    4 Jul 2007
    Messages:
    79
    Likes Received:
    39
    Reputations:
    4
    АП! кто может еще подсказать?