2013-03-21 3 views
-1

Прежде всего спасибо за ответы на все вопросы. Они все оценены! Хорошо, я программирую метод генерации токенов разрешений TeamSpeak для пользователей сайта. Они нажимают кнопку, и для них генерируются 2 токена. Все работает отлично. Другая часть системы получает имя пользователя веб-сайта членов и IP-адрес, а затем выполняет поиск в базе данных MySQL сервера TeamSpeak3 для поиска членов serverID (первичный ключ автоматического увеличения). При простой загрузке страницы, которую использует элемент для этого, дается ошибка: «Ошибка синтаксиса: ошибка синтаксиса, неожиданный конец файла в« FILEPATH-REPLACED »в строке 92» Вот код этого файла:PHP Неожиданный конец ошибки синтаксиса файла

<?php 
    if(!isset($member) || substr($_SERVER['PHP_SELF'], -11) != "console.php") { 
    exit(); 
    } 
    else { 
    $memberInfo = $member->get_info(); 
    $consoleObj->select($_GET['cID']); 
    if(!$member->hasAccess($consoleObj)) { 
    exit(); 
    } 
    } 

    $rankObj = new Rank($mysqli); 
    $rankObj->select($memberInfo['rank_id']); 
    $RankInfo = $rankObj->get_info_filtered(); 
    $rankname = $RankInfo['name']; 
    $cID = $_GET['cID']; 
    $tsuid = ""; 

    $dispError = ""; 
    $countErrors = 0; 
    if($_POST['submit']) { 
     if($memberInfo['tsuid'] != "") { 
     $tsuid = $memberInfo['tsuid']; 
     $arrColumns = array("tsuid"); 
     $arrValues = array(""); 
     $member->update($arrColumns, $arrValues); 
     } 
     $ts3 = new IVTS3($tshost, $tsuser, $tspass, $tsdb); 
     if($tsuid == "") { 
     $tsuid = $ts3->getuid($memberInfo['username'], $memberInfo['ipaddress'], 0); 
     if($tsuid == false) { 
     die("Unable to retrieve TS UIDs. Please ensure you have been on our TeamSpeak Server using the same name as your website nickname. If you haven't been on our server, do so now, then regenerate tokens. Otherwise, contact Operations Support."); 
     } 
     $lastmembertoken = $memberInfo['tslasttokenmem']; 
     $lastranktoken = $memberInfo['tslasttokenrank']; 
     $lasttokens = ['rank' => $lastranktoken, 'mem' => $lastmembertoken]; 
     $newtoken = $ts3->createtoken($memberInfo['username'], $rankname, $lasttokens, $tsuid); 
     $arrColumns = array("tslasttokenrank", "tslasttokenmem"); 
     $arrValues = array($newtoken['rank'], $newtoken['mem']); 
     $member->update($arrColumns, $arrValues); 
     echo " 
        <div style='display: none' id='successBox'> 
         <p align='center'> 
          Successfully generated new tokens! 
         </p> 
        </div> 

        <script type='text/javascript'> 
         popupDialog('New Tokens Created', '".$MAIN_ROOT."members/console.php?cID=$cID', 'successBox'); 
        </script> 

       "; 
    } 
    if(!$_POST['submit']) { 
    $currentTokenRank = $memberInfo['tslasttokenrank']; 
    $currentTokenMem = $memberInfo['tslasttokenmem']; 
    if($currentTokenRank == "") { 
    $currentTokenRank = "No Previously Generated Rank Token Exists (Click Generate Tokens Below)"; 
    } 
    if($currentTokenMem == "") { 
    $currentTokenMem = "No Previously Generated Membership Token Exists (Click Generate Tokens Below)"; 
    } 
    echo " 
    <form action='".$MAIN_ROOT."members/console.php?cID=".$cID."' method='post'> 
    <div class='formDiv'> 
    "; 
    echo " 
        <div align='center'><h2>======IMPORTANT TEAMSPEAK DATA======</h2></div> 
        You need to use the following keys in TeamSpeak, they will give you your rank and membership group in TeamSpeak:<br> 
        <h2>Use the Membership Token First! Use it before using the Rank Token! If you fail to do this right then generate new tokens. If one or both of the tokens below have already been used, then you will need to generate new tokens.</h2> 
        Your Membership Token (Copy It): <b><u>$currentTokenMem</u></b><br> 
        Your Rank Token (Copy It): <b><u>$currentTokenRank</u></b> 
        <br> 
        HOW TO USE:<br> 
        1.) Open Teamspeak and connect to our server.<br> 
        2.) In the top menu bar click PERMISSIONS then USE PRIVILEGE KEY.<br> 
        3.) Paste the privilege token in and click OK. Ensure you do the Member Token First!<br> 
        4.) Do the same with the other key.<br> 
        <table class='formTable'> 
         <tr> 
          <td class='main' align='center' colspan='2'><br> 
           <input type='submit' name='submit' value='Generate Tokens' class='submitButton' style='width: 125px'> 
          </td> 
         </tr> 
        </table> 
       </div> 
      </form> 

     "; 
    } 
?> 

Система ссылается на 2 функции (getuid и createtoken) в классе IVTS3. Код createtoken прочный. В нем нет ошибок. Getuid код был изменен вместе с основным файлом так вот getuid код:

public function getuid($membername, $memberip, $method=0) { 
    $tsuid = array(); 
    $membername = strtolower($membername); 
    $clientid = $this->MySQL->query("SELECT client_id FROM clients WHERE client_lastip LIKE '%$memberip%' AND LOWER(client_nickname) LIKE '%$membername%'"); 
    while ($row = $clientid->fetch_assoc()) { 
     $tsuid[] = $row['client_id']; 
    } 
    if ($tsuid == "") { 
    $clientid = $this->MySQL->query("SELECT client_id FROM clients WHERE client_lastip LIKE '%$memberip%'"); 
    while ($row = $clientid->fetch_assoc()) { 
     $tsuid[] = $row['client_id']; 
    } 
    } 
    if ($tsuid == "") { 
    $clientid = $this->MySQL->query("SELECT client_id FROM clients WHERE LOWER(client_nickname) LIKE '%$membername%'"); 
    while ($row = $clientid->fetch_assoc()) { 
     $tsuid[] = $row['client_id']; 
    } 
    } 
    if ($tsuid == "") { 
    return false; 
    } 
    else { 
    return $tsuid; 
    } 
} 

Как сказано, я получаю Конец ошибки файла на первом блоке кода. Возможно, я что-то пропустил, но я проверял его снова и снова и до сих пор ничего не могу найти. Еще раз спасибо ребятам. На любые вопросы будет дан ответ как можно быстрее.

+0

Что это такое? '$ lasttokens = ['rank' => $ lastranktoken, 'mem' => $ lastmembertoken];' –

+2

@RomanNewaza Это массив – Tchoupi

+0

Возможно, вы можете новый новый файл и скопировать туда содержимое – zoujyjs

ответ

1

У вас отсутствует фигурная скобка в конце сценария. Вот фиксированный код:

if (!isset($member) || substr($_SERVER['PHP_SELF'], -11) != "console.php") { 
    exit(); 
} else { 
    $memberInfo = $member->get_info(); 
    $consoleObj->select($_GET['cID']); 
    if (!$member->hasAccess($consoleObj)) { 
     exit(); 
    } 
} 

$rankObj = new Rank($mysqli); 
$rankObj->select($memberInfo['rank_id']); 
$RankInfo = $rankObj->get_info_filtered(); 
$rankname = $RankInfo['name']; 
$cID  = $_GET['cID']; 
$tsuid = ""; 

$dispError = ""; 
$countErrors = 0; 
if ($_POST['submit']) { 
    if ($memberInfo['tsuid'] != "") { 
     $tsuid  = $memberInfo['tsuid']; 
     $arrColumns = array(
      "tsuid" 
     ); 
     $arrValues = array(
      "" 
     ); 
     $member->update($arrColumns, $arrValues); 
    } 
    $ts3 = new IVTS3($tshost, $tsuser, $tspass, $tsdb); 
    if ($tsuid == "") { 
     $tsuid = $ts3->getuid($memberInfo['username'], $memberInfo['ipaddress'], 0); 
     if ($tsuid == false) { 
      die("Unable to retrieve TS UIDs. Please ensure you have been on our TeamSpeak Server using the same name as your website nickname. If you haven't been on our server, do so now, then regenerate tokens. Otherwise, contact Operations Support."); 
     } 
     $lastmembertoken = $memberInfo['tslasttokenmem']; 
     $lastranktoken = $memberInfo['tslasttokenrank']; 
     $lasttokens  = array(
      'rank' => $lastranktoken, 
      'mem' => $lastmembertoken 
     ); 
     $newtoken  = $ts3->createtoken($memberInfo['username'], $rankname, $lasttokens, $tsuid); 
     $arrColumns  = array(
      "tslasttokenrank", 
      "tslasttokenmem" 
     ); 
     $arrValues  = array(
      $newtoken['rank'], 
      $newtoken['mem'] 
     ); 
     $member->update($arrColumns, $arrValues); 
     echo " 
        <div style='display: none' id='successBox'> 
         <p align='center'> 
          Successfully generated new tokens! 
         </p> 
        </div> 

        <script type='text/javascript'> 
         popupDialog('New Tokens Created', '" . $MAIN_ROOT . "members/console.php?cID=$cID', 'successBox'); 
        </script> 

       "; 
    } 
    if (!$_POST['submit']) { 
     $currentTokenRank = $memberInfo['tslasttokenrank']; 
     $currentTokenMem = $memberInfo['tslasttokenmem']; 
     if ($currentTokenRank == "") { 
      $currentTokenRank = "No Previously Generated Rank Token Exists (Click Generate Tokens Below)"; 
     } 
     if ($currentTokenMem == "") { 
      $currentTokenMem = "No Previously Generated Membership Token Exists (Click Generate Tokens Below)"; 
     } 
     echo " 
    <form action='" . $MAIN_ROOT . "members/console.php?cID=" . $cID . "' method='post'> 
    <div class='formDiv'> 
    "; 
     echo " 
       <div align='center'><h2>======IMPORTANT TEAMSPEAK DATA======</h2></div> 
       You need to use the following keys in TeamSpeak, they will give you your rank and membership group in TeamSpeak:<br> 
       <h2>Use the Membership Token First! Use it before using the Rank Token! If you fail to do this right then generate new tokens. If one or both of the tokens below have already been used, then you will need to generate new tokens.</h2> 
       Your Membership Token (Copy It): <b><u>$currentTokenMem</u></b><br> 
       Your Rank Token (Copy It): <b><u>$currentTokenRank</u></b> 
       <br> 
       HOW TO USE:<br> 
       1.) Open Teamspeak and connect to our server.<br> 
       2.) In the top menu bar click PERMISSIONS then USE PRIVILEGE KEY.<br> 
       3.) Paste the privilege token in and click OK. Ensure you do the Member Token First!<br> 
       4.) Do the same with the other key.<br> 
       <table class='formTable'> 
        <tr> 
         <td class='main' align='center' colspan='2'><br> 
          <input type='submit' name='submit' value='Generate Tokens' class='submitButton' style='width: 125px'> 
         </td> 
        </tr> 
       </table> 
      </div> 
     </form> 

    "; 
    } 

} 
+0

На самом деле, да, мне не хватало фигурных фигур, но не там: } } if (! $ _ POST ['submit']) { –

+0

Нет, я добавил его точно в конце, когда форматировал его, но это может выглядеть так, как вы говорите, поскольку оно сдвинуто. –

+0

В самом конце скрипта нужен только один Curly для завершения if (! $ POST ['submit']) {- мне нужно было добавить еще кудрявое право до этого, если закончить if ($ _ POST ['submit']) ; –