1. Соблюдайте Правила форума и проявляйте уважение к другим участникам беседы.

User ID

Тема в разделе 'Запуск и Поддержка', создана пользователем Ev1lArthaS, 26 ноя 2012.

  1. Ev1lArthaS Парнишка с небывалым умом

    Сообщения:
    36
    Спасибы:
    3
    Доброго времени суток, возникла такая проблема. Дело в том, что в DOS'е личная страница игрока выглядит примерно так (site.com/?u=ID) где ID - идентификационный номер каждого игрока, и эта страница прекрасно работает если заходить на нее через вкладку TOP, а вот если я попробую зайти в "Историю Игр", затем в игру а затем хочу заглянуть на страницу игрока то получу пустую белую страницу. Пошарился в .php файлах - проблему нашел. Она заключается в том, что если заходить через топ то ссылка правильная и заходит через ID, а если через историю то получается следующее (site.com/?u=fullname). Вот сама строка single.game.php, которая расположена в директории темы, стоящей по умолчанию. Строка 109
    Код:
    <a href="<?=$website?>?u=<?=$Game["name"]?>"><?=$Game["full_name"]?></a>
    
    Как видно тут указано что ?u=name, то есть все ссылки в истории игр будут такими, следовательно не будут работать. P.S. ><?=$Game["full_name"]?> трогать не надо, он вообще тут не при чем)
    Попробовал стянуть тот же код, но с правильным ID с файла top.php, там есть такая строка
    Код:
    <a href="<?=$website?>?u=<?=$Data["id"]?>"><?=$Data["player"]?></a>
    
    Попробовал как угодно стянуть, и вместо name вставить id, но как ни старался не смог поулчить нормальной рабочей ссылки. В чем трабла? Заранее спс
    P.S. Ghostone 1.7.266, DOS 3.8.6.
  2. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    На анализ весь массив поставь, ищи где "нормальное" отображение ника.
    Ev1lArthaS нравится это.
  3. Ev1lArthaS Парнишка с небывалым умом

    Сообщения:
    36
    Спасибы:
    3
    ну собственно строка в top.php
    Код:
    <a href="<?=$website?>?u=<?=$Data["id"]?>"><?=$Data["player"]?></a>
    
    как грамотно ее стянуть, чтобы работало и в истории?
  4. ViperNight ▒▒▒▒▒▒▒▒▒

    Сообщения:
    311
    Спасибы:
    154
    Сборка бота GHost:
    GHost++ r597M
    Дата начала использования бота:
    20.01.2007
    Skype:
    Мой статус
    Нужно делать выборку id игрока по его нику в случае, если бот хостит на одном сервере или по ник + сервер с использованием комбинированного индекса (имя игрока, сервер), если на нескольких.
    Ev1lArthaS нравится это.
  5. Ev1lArthaS Парнишка с небывалым умом

    Сообщения:
    36
    Спасибы:
    3
    Один сервер. Не понимаю почему при вводе вместо 'name' 'id' у меня ID всех игроков в "истории игр" = 0, а в топе все ок. Видимо я чайник, что-то не правильно сделал, не поможешь?
    single_game.php (строка ~109)

    <?php
    if (!isset($website) ) { header('HTTP/1.1 404 Not Found'); die; }
    ?>

    <div align="center">

    <table class="tableBig">
    <tr>
    <th width="320" class="padLeft"><h1><?=$GameData[0]["gamename"]?></h1></th>
    <th width="200"><i><?=$lang["duration"]?>:</i> <?=$GameData[0]["duration"]?></th>
    <th class="padRight"><i><?=$lang["date"]?>:</i> <?=$GameData[0]["datetime"]?></th>
    <?php if (is_logged() AND isset($_SESSION["level"] ) AND $_SESSION["level"]>=9 ) { ?>
    <th width="32"><a href="<?=$website?>/adm/?games&amp;game_id=<?=(int) $_GET["game"]?>"><img src="<?=$website?>/adm/edit.png" alt="*" width="16" height="16" /></a></th>
    <?php } ?>
    <?php if (isset($GameData[0]["replay"]) AND !empty($GameData[0]["replay"]) ) { ?>
    <th class="padRight"><a href="<?=$GameData[0]["replay"]?>"><?=$lang["download_replay"]?></a></th>
    <?php } ?>
    </tr>
    </table>

    <div class="padTop"></div>

    <div style="margin-top: 16px; margin-bottom: 10px; display: none;">
    <h2>
    <?=$GameData[0]["gamename"]?>,
    <b><?=$lang["duration"]?>:</b> <?=$GameData[0]["duration"]?>,
    <b><?=$lang["date"]?>:</b> <?=$GameData[0]["datetime"]?>
    </h2>
    </div>
    <?php
    $ScourgeRow = 0;
    $SentinelRow = 0;
    $counter = 0;
    foreach ($GameData as $Game) {
    $counter++;
    if ( $Game["newcolour"] >5 AND $ScourgeRow == 0 ) {
    $ScourgeRow = 1;
    ?>


    <table>
    <tr class="scourgeRow">
    <td width="850" class="aligncenter" align="center">
    <?php
    if ($GameData[0]["winner"] == 1) { ?><?=$lang["scou_loser"]?><?php } else
    if ($GameData[0]["winner"] == 2) { ?><?=$lang["scou_winner"]?><?php } else
    if ($GameData[0]["winner"] == 0) { ?><?=$lang["draw_game"]?><?php }
    ?>
    </td>
    </tr>
    </table>

    <table>
    <tr>
    <th width="75" class="padLeft"><?=$lang["hero"]?></th>
    <th width="220"><?=$lang["player"]?></th>
    <th width="90" ><?=$lang["kda"]?></th>
    <th width="90" ><?=$lang["cdn"]?></th>
    <th width="90" ><?=$lang["trc"]?></th>
    <th width="90" ><?=$lang["gold"]?></th>
    <th width="180"><?=$lang["left"]?></th>
    </tr>
    </table>
    <?php
    }


    if ( $Game["newcolour"] <=5 AND $SentinelRow == 0 ) {
    $SentinelRow = 1;
    ?>


    <table>
    <tr class="sentinelRow">
    <td width="850" class="aligncenter" align="center">
    <?php
    if ($GameData[0]["winner"] == 1) { ?><?=$lang["sent_winner"]?><?php } else
    if ($GameData[0]["winner"] == 2) { ?><?=$lang["sent_loser"]?><?php } else
    if ($GameData[0]["winner"] == 0) { ?><?=$lang["draw_game"]?><?php }
    ?>
    </td>
    </tr>
    </table>

    <table>
    <tr>
    <th width="75" class="padLeft"><?=$lang["hero"]?></th>
    <th width="220"><?=$lang["player"]?></th>
    <th width="90" ><?=$lang["kda"]?></th>
    <th width="90" ><?=$lang["cdn"]?></th>
    <th width="90" ><?=$lang["trc"]?></th>
    <th width="90" ><?=$lang["gold"]?></th>
    <th width="180"><?=$lang["left"]?></th>
    </tr>
    </table>
    <?php
    }

    ?>
    <table>
    <tr style="height: 70px;" class="row">
    <td width="75" class="padLeft slot<?=$counter?>">
    <a href="<?=$website?>?hero=<?=$Game["heroid"]?>"><img <?=ShowToolTip("<div>".$Game["description"]."</div>", $website.'img/heroes/'.($Game["hero"]), 100, 64, 64)?> src="<?=$website?>img/heroes/<?=$Game["hero"]?>" alt="hero" width="48" height="48" /></a></td>
    <td width="220">
    <h4>
    <?php if (isset($Game["letter"]) AND !empty($Game["letter"]) ) { ?>
    <img <?=ShowToolTip($Game["country"], $website.'img/flags/'.($Game["letter"]).'.gif', 130, 21, 15)?> class="imgvalign" width="21" height="15" src="<?=$website?>img/flags/<?=$Game["letter"]?>.gif" alt="" />
    <?php } ?>
    <a href="<?=$website?>?u=<?=$Game["name"]?>"><?=$Game["full_name"]?></a>
    </h4>
    <div>
    <a href="<?=$website?>?item=<?=$Game["item1"]?>"><img <?=ShowToolTip("<div>".($Game["itemname1"])."</div>", $website.'img/items/'.$Game["itemicon1"], 100, 64, 64)?> src="<?=$website?>img/items/<?=$Game["itemicon1"]?>" alt="item1" width="32" height="32" /></a>
    <a href="<?=$website?>?item=<?=$Game["item2"]?>"><img <?=ShowToolTip("<div>".($Game["itemname2"])."</div>", $website.'img/items/'.$Game["itemicon2"], 100, 64, 64)?>src="<?=$website?>img/items/<?=$Game["itemicon2"]?>" alt="item2" width="32" height="32" /></a>
    <a href="<?=$website?>?item=<?=$Game["item3"]?>"><img <?=ShowToolTip("<div>".($Game["itemname3"])."</div>", $website.'img/items/'.$Game["itemicon3"], 100, 64, 64)?> src="<?=$website?>img/items/<?=$Game["itemicon3"]?>" alt="item3" width="32" height="32" /></a>
    <a href="<?=$website?>?item=<?=$Game["item4"]?>"><img <?=ShowToolTip("<div>".($Game["itemname4"])."</div>", $website.'img/items/'.$Game["itemicon4"], 100, 64, 64)?> src="<?=$website?>img/items/<?=$Game["itemicon4"]?>" alt="item4" width="32" height="32" /></a>
    <a href="<?=$website?>?item=<?=$Game["item5"]?>"><img <?=ShowToolTip("<div>".($Game["itemname5"])."</div>", $website.'img/items/'.$Game["itemicon5"], 100, 64, 64)?> src="<?=$website?>img/items/<?=$Game["itemicon5"]?>" alt="item5" width="32" height="32" /></a>
    <a href="<?=$website?>?item=<?=$Game["item6"]?>"><img <?=ShowToolTip("<div>".($Game["itemname6"])."</div>", $website.'img/items/'.$Game["itemicon6"], 100, 64, 64)?> src="<?=$website?>img/items/<?=$Game["itemicon6"]?>" alt="item6" width="32" height="32" /></a>
    </div>
    </td>
    <td width="90" class="statsscore">
    <span class="won"><?=($Game["kills"])?></span> /
    <span class="lost"><?=$Game["deaths"]?></span> /
    <span class="assists"><?=$Game["assists"]?></span>
    </td>
    <td width="90" class="statsscore">
    <span class="won"><?=($Game["creepkills"])?></span> /
    <span class="lost"><?=$Game["creepdenies"]?></span> /
    <span class="assists"><?=$Game["neutralkills"]?></span>
    </td>
    <td width="90" class="statsscore">
    <span class="won"><?=($Game["towerkills"])?></span> /
    <span class="lost"><?=$Game["raxkills"]?></span> /
    <span class="assists"><?=$Game["courierkills"]?></span>
    </td>
    <td width="90" class="statsscore"><?=$Game["gold"]?></td>
    <td width="180" class="statsscore">
    <?=$Game["left"]?>
    <div class="left_reason overflow_hidden"><?=$Game["leftreason"]?></div>
    </td>
    </tr>
    </table>
    <?php
    }
    ?>
    <div class="padTop"></div>
    <table class="tableBig">
    <?php if ($PlayerKills>0) { ?>
    <tr class="row">
    <th width="180" class="padLeft"><span class="best_player"><?=$lang["best_player"] ?></span></th>
    <th width="180" class="padLeft" style="text-align:left;"><h4><a href="<?=$website?>?u=<?=strtolower($BestPlayer)?>"><?=$BestPlayer?></a></h4></th>
    <th></th>
    </tr>
    <tr class="row">
    <td width="180" class="padLeft"><b><?=$lang["most_kills"]?></b></td>
    <td width="180" class="padLeft"> <h4><a href="<?=$website?>?u=<?=strtolower($MostKills)?>"><?=$MostKills?></a></h4></td>
    <td class="padLeft"><?=$PlayerKills?></td>
    </tr>
    <?php } ?>
    <?php if ($PlayerAssists>0) { ?>
    <tr class="row">
    <td width="180" class="padLeft"><b><?=$lang["most_assists"]?></b></td>
    <td width="180" class="padLeft"> <h4><a href="<?=$website?>?u=<?=strtolower($MostAssists)?>"><?=$MostAssists?></a></h4></td>
    <td class="padLeft"><?=$PlayerAssists?></td>
    <?php } ?>
    </tr>
    <?php if ($PlayerDeaths>0) { ?>
    <tr class="row">
    <td width="180" class="padLeft"><b><?=$lang["most_deaths"] ?></b></td>
    <td width="180" class="padLeft"> <h4><a href="<?=$website?>?u=<?=strtolower($MostDeaths)?>"><?=$MostDeaths?></a></h4></td>
    <td class="padLeft"><?=$PlayerDeaths?></td>
    </tr>
    <?php } ?>
    <?php if ($PlayerCK>0) { ?>
    <tr class="row">
    <td width="180" class="padLeft"><b><?=$lang["top_ck"]?></b></td>
    <td width="180" class="padLeft"> <h4><a href="<?=$website?>?u=<?=strtolower($MostCK)?>"><?=$MostCK?></a></h4></td>
    <td class="padLeft"><?=$PlayerCK?></td>
    </tr>
    <?php } ?>
    <?php if ($PlayerCD>0) { ?>
    <tr class="row">
    <td width="180" class="padLeft"><b><?=$lang["top_cd"]?></b></td>
    <td width="180" class="padLeft"> <h4><a href="<?=$website?>?u=<?=strtolower($MostCD)?>"><?=$MostCD?></a></h4></td>
    <td class="padLeft"><?=$PlayerCD?></td>
    </tr>
    <?php } ?>
    </table>

    <?php
    //REPLAY - GAME LOG
    if (isset($GameData[0]["replay"]) AND !empty($GameData[0]["replay"]) ) {

    if ( file_exists($replayurl.".html") ) include($replayurl.".html");
    else {
    ob_start();
    include('./inc/replay_parser/get_chat.php');
    $pageContents = ob_get_contents();
    file_put_contents($replayurl.".html", $pageContents);
    }
    }
    ?>

    </div>


    TOP.php (тут все работает нормально, определяет по ID, заходит на страницу)

    <?php
    if (!isset($website) ) { header('HTTP/1.1 404 Not Found'); die; }
    ?>

    <div align="center">

    <div class="padTop padBottom">

    <form action="" method="get">
    <?=$lang["sortby"]?> <input type="hidden" name="top" />
    <select name="sort">
    <?php if (isset($_GET["sort"]) AND $_GET["sort"] == "score" ) $sel = 'selected="selected"'; else $sel = ''; ?>
    <option <?=$sel?> value="score"><?=$lang["score"]?></option>
    <?php if (isset($_GET["sort"]) AND $_GET["sort"] == "games" ) $sel = 'selected="selected"'; else $sel = ''; ?>
    <option <?=$sel?> value="games"><?=$lang["games"]?></option>
    <?php if (isset($_GET["sort"]) AND $_GET["sort"] == "wins" ) $sel = 'selected="selected"'; else $sel = ''; ?>
    <option <?=$sel?> value="wins"><?=$lang["wins"]?></option>
    <?php if (isset($_GET["sort"]) AND $_GET["sort"] == "losses" ) $sel = 'selected="selected"'; else $sel = ''; ?>
    <option <?=$sel?> value="losses"><?=$lang["losses"]?></option>
    <?php if (isset($_GET["sort"]) AND $_GET["sort"] == "draw" ) $sel = 'selected="selected"'; else $sel = ''; ?>
    <option <?=$sel?> value="draw"><?=$lang["draw"]?></option>
    <?php if (isset($_GET["sort"]) AND $_GET["sort"] == "kills" ) $sel = 'selected="selected"'; else $sel = ''; ?>
    <option <?=$sel?> value="kills"><?=$lang["kills"]?></option>
    <?php if (isset($_GET["sort"]) AND $_GET["sort"] == "deaths" ) $sel = 'selected="selected"'; else $sel = ''; ?>
    <option <?=$sel?> value="deaths"><?=$lang["deaths"]?></option>
    <?php if (isset($_GET["sort"]) AND $_GET["sort"] == "assists" ) $sel = 'selected="selected"'; else $sel = ''; ?>
    <option <?=$sel?> value="assists"><?=$lang["assists"]?></option>
    <?php if (isset($_GET["sort"]) AND $_GET["sort"] == "ck" ) $sel = 'selected="selected"'; else $sel = ''; ?>
    <option <?=$sel?> value="ck"><?=$lang["ck"]?></option>
    <?php if (isset($_GET["sort"]) AND $_GET["sort"] == "cd" ) $sel = 'selected="selected"'; else $sel = ''; ?>
    <option <?=$sel?> value="cd"><?=$lang["cd"]?></option>
    <?php if (isset($_GET["sort"]) AND $_GET["sort"] == "nk" ) $sel = 'selected="selected"'; else $sel = ''; ?>
    <option <?=$sel?> value="nk"><?=$lang["nk"]?></option>
    <?php if (isset($_GET["sort"]) AND $_GET["sort"] == "player_name" ) $sel = 'selected="selected"'; else $sel = ''; ?>
    <option <?=$sel?> value="player_name"><?=$lang["player_name"]?></option>
    </select>
    <input class="menuButtons" type="submit" value="<?=$lang["submit"]?>" />
    </form>
    </div>

    <table>
    <tr>
    <th width="32" class="alignleft padLeft">&nbsp;</th>
    <th width="160"><?=$lang["player"]?></th>
    <th width="80"><?=$lang["score"]?></th>
    <th width="80"><?=$lang["games"]?></th>
    <th width="90"><?=$lang["wld"]?></th>
    <th width="90"><?=$lang["wl_percent"]?></th>
    <th width="120"><?=$lang["kda"]?></th>
    <th width="120"><?=$lang["cdn"]?></th>
    <th width="120"><?=$lang["tr"]?></th>
    </tr>
    <?php
    foreach ($TopData as $Data) {
    ?>
    <tr class="row">
    <td width="32" class="alignleft padLeft"><?=$Data["counter"]?></td>
    <td width="160" class="font12">
    <?php if (isset($Data["letter"]) AND !empty($Data["letter"]) ) { ?>
    <img <?=ShowToolTip($Data["country"], $website.'img/flags/'.($Data["letter"]).'.gif', 130, 21, 15)?> class="imgvalign" width="21" height="15" src="<?=$website?>img/flags/<?=$Data["letter"]?>.gif" alt="" />
    <?php } ?>
    <a href="<?=$website?>?u=<?=$Data["id"]?>"><?=$Data["player"]?></a>
    </td>
    <td width="80" class="font12"><?=$Data["score"]?></td>
    <td width="80" class="font12"><?=$Data["games"]?></td>
    <td width="90" class="font12">
    <span class="won"><?=$Data["wins"]?></span>/
    <span class="lost"><?=$Data["losses"]?></span>/
    <span class="draw"><?=$Data["draw"]?></span>
    </td>
    <td width="90" class="font12"><?=$Data["winslosses"]?>%</td>
    <td width="120" class="font12">
    <span class="won"><?=($Data["kills"])?></span>/
    <span class="lost"><?=$Data["deaths"]?></span>/
    <span class="assists"><?=$Data["assists"]?></span>
    </td>
    <td width="120" class="font12">
    <span class="won"><?=$Data["creeps"]?></span>/
    <span class="lost"><?=$Data["denies"]?></span>/
    <span class="assists"><?=$Data["neutrals"]?></span>

    </td>
    <td width="120" class="font12">
    <span class="won"><?=$Data["towers"]?></span>/
    <span class="assists"><?=$Data["rax"]?></span>
    </td>
    </tr>

    <?php
    }
    ?>
    </table>
    </div>
    <?php
    include('inc/pagination.php');
    ?>
  6. ViperNight ▒▒▒▒▒▒▒▒▒

    Сообщения:
    311
    Спасибы:
    154
    Сборка бота GHost:
    GHost++ r597M
    Дата начала использования бота:
    20.01.2007
    Skype:
    Мой статус
    Если открывается белая страница, значит где-то ошибка в коде или настройках сервера потому, что, в файле inc/sys.php есть следующий код, который отвечает за перенаправление с имени игрока на его идентификатор:

    Код:
        // USER DATA - STATS
    
        // В случае, если в глобальном массиве GET существует элемент с ключом "u"
        if(isset( $_GET['u']))
        {
    
        /**
         * Предполагается, что входные данные должны иметь вид целого числа, поэтому,
         * приводим к целочисленному типу, очищаем, экранируем... и присваиваем в качестве
         * значения переменной "$uid" (идентификатор пользователя)
         */
        $uid = safeEscape((int)$_GET['u']);
    
        /**
         * Если значение переданное $_GET['u'] имеет не числовой тип данных, в нашем случае
         * это будет строка с именем игрока ...
         */
        if(!is_numeric($_GET['u']))
        {
            // ... то очищаем, экранируем и присваиваем в качестве значения переменной "$u"
            $u = safeEscape($_GET['u']);
    
            /**
             * Составляем и выполняем запрос базу, в котором выбираем все ряды из таблицы `stats`,
             * в которых поле `player` имеет значение аналогичное значению переменной "$u"
             *  существует ли игрок с запрошенным именем в
             */
            $result = $db->query("SELECT * FROM `stats` WHERE LOWER(`player`) = LOWER('" . $u . "')");
    
            // Если в ответ на запрос вернулось одно значение ...
            if($db->num_rows($result) >= 1)
            {
                // ... возвращает ряд результата запроса в качестве ассоциативного массива
                $row = $db->fetch_array($result, 'assoc');
    
                // присваиваем переменной "uid" значение элемента массива с ключом "id"
                $uid = $row['id'];
    
                // Освобождаем память от результата запроса
                $db->free($result);
    
                /**
                 * Перенаправляем пользователя по url'у, где в качестве значения $_GET['u']
                 * выступает идентификатор игрока, взятый из базы
                 */
                header('Location: ' . $website . '?u=' . $uid);
    
                // Прерываем дальнейшее выполнение сценария
                die;
            }
        }
    
    Ev1lArthaS нравится это.