0

Alright so I've got a config file that looks like this:

<?php
# EPICMC CMS CONFIG FILE 

return array(
    'sitename' => 'EPICMC',
    'color' => '00aa00',
    'url' => 'stats.epicmc.us',
    'protocol' => 'https://',
);

And here's my webpage.

<head>
       <link rel="icon" 
          type="image/png" 
          href="avatar/<?php                     
             $statsJSON = file_get_contents($configs['url']/api.php?task=stats&player='.$_GET['player'].'');
              $stats = json_decode($statsJSON);
              if(empty($stats)){
              echo $_GET['player'];
              echo '/16';
              } else {
                           echo strtoupper($stats->skin); 
                           echo '/16';
             }
             ?>">
       <link rel="apple-touch-icon" 
          type="image/png" 
          href="avatar/<?php                     
             if(empty($stats)){
             echo $_GET['player'];
             echo '/250';
             } else {
                          echo strtoupper($stats->skin); 
                          echo '/250';
             }
             ?>">
       <title><?php echo "$configs['sitename']' - "; if(empty($_GET['player'])){ echo "STATS";} else { echo strtoupper($_GET['player']); }?></title>
       <meta name="apple-mobile-web-app-title" content="<?php echo ""; if(empty($_GET['player'])){ echo "STATS";} else { echo strtoupper($_GET['player']); }?>">
       <meta name=viewport content="width=device-width, user-scalable=no">
       <meta name="description" content="View <?php echo $_GET['player'];?>'s <?php echo $configs['sitename']?> stats!">
       <style>#profile::before{display:block;height:144px;border-radius:0;background:#0a0;-webkit-box-shadow:0 4px 0 rgba(0,0,0,.02);box-shadow:0 4px 0 rgba(0,0,0,.02);content:''}#profile{background:#fafafa;box-shadow:rgba(0,0,0,.14902) 0 1px 1px 0,rgba(0,0,0,.09804) 0 1px 2px 0;padding-bottom:38px;text-align:center;max-width:80%}#profile>img{position:relative;top:-52px;display:block;margin:auto;width:96px;height:96px;border:4px solid #fff;border-radius:0;-webkit-box-shadow:0 4px 0 rgba(0,0,0,.02);box-shadow:0 4px 0 rgba(0,0,0,.02)}#profile h2,#profile h3{font-weight:400;color:#77767e;margin-bottom:30px}#profile h2{margin-top:-30px;padding:0 16px 38px;font-size:21px}#profile h3{margin-top:-60px;padding:0 38px 16px;font-size:11px}#profile h4{font-weight:400}#locked{margin-bottom:-80px}table,td,th{border:1px solid #000;border-collapse:collapse;width:80%}td,th{padding:5px;text-align:left}</style>
    </head>
    <body>
       <?php include("layout/header.php"); ?>
       <BR>
       <BR>
       <center>
          <aside id="profile">
             <?php
                function mcus_timeAgoString($dateInterval) {
                $daysAgo = $dateInterval->days;
                //echo $difference;
                if ($daysAgo == 0){
                if ($dateInterval->h == 0){
                  $diffStr = $dateInterval->i . " Minutes Ago";
                } else {
                   $diffStr = $dateInterval->h . " Hours Ago";
                }
                } else {
                if($daysAgo === 1) {
                  $diffStr = "1 Day Ago";
                } else if($daysAgo === 7) {
                  $diffStr = "1 Week Ago";
                } else if($daysAgo === 14) {
                  $diffStr = "2 Weeks Ago";
                } else {
                  $diffStr = "$daysAgo Days Ago";
                }
                }
                return $diffStr;
                }

                      $get_player = $_GET['player'];

                      $infoJSON = file_get_contents('$url/api.php?task=info&player='.$_GET['player'].'');
                      $info = json_decode($infoJSON);
                      $statsJSON = file_get_contents('$url/api.php?task=stats&player='.$_GET['player'].'');
                     $stats = json_decode($statsJSON);
                      // $now = time(); // or your date as well`enter code here`
                ?>
             <img src="avatar/<?php                     
                if(empty($stats)){
                echo $_GET['player'];
                echo '/96';
                } else {
                             echo strtoupper($stats->skin); 
                             echo '/96';
                }
                ?>">
             <?php 
                echo '<style>';
                echo '#verified {';
                echo 'fill:';
                echo '#';
                    if(empty($info->theme)){
                echo "$color"; 
                } else {
                echo substr($info->theme, 0, 50); 
                }
                echo '}';
                echo '</style>';
                ?>
             <?php 
                echo '<style>';
                echo '.toggle {';
                echo 'background-color:';
                echo '#';
                    if(empty($info->theme)){
                echo "$color"; 
                } else {
                echo substr($info->theme, 0, 50); 
                }
                echo '}';
                echo '</style>';
                ?>
             <?php 
                echo '<style>';
                echo '#profile::before {';
                echo 'background:';
                echo '#';
                    if(empty($info->theme)){
                echo "$color"; 
                } else {
                echo substr($info->theme, 0, 50); 
                }
                echo ' !important }';
                echo '</style>';
                ?>
             <?php 
                echo '<style>';
                echo '#profile::before {';
                echo 'background-image:';
                echo 'url(';
                echo substr($info->cover, 0, 50); 
                echo ' ) !important;';
                echo '</style>';
                ?>
             <h2>
                <?php
                   if($info->locked == 1){
                             echo '<div id="locked"><h5>This username is locked.</h5></div>';
                       }else {
                       echo strip_tags($_GET['player']);
                       }
                       ?>
                <?php
                   if(substr($info->verified,0,2) == 1) {
                         echo '<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
                <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="verified" width="24" height="24" viewBox="0 0 24 24">
                   <path d="M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" />
                </svg>
                '
                ;
                }
                //print_r ($stats);
                if(substr($info->locked,0,2) == 0) {
                echo '
                <h3>
                ';
                echo 'Logged In ';
                if(empty($info)){
                echo "Not Registered";
                } else { 
                //echo substr($playerAccountInfo->lastlogin,0,50); 
                $dtNow = new DateTime('Now');       
                $dtLastLogin = new DateTime($info->lastlogin);
                $diLastLoginToNow = $dtNow->diff($dtLastLogin);
                echo mcus_timeAgoString($diLastLoginToNow);
                }
                echo '';
                ;
                }
                ?>
             </h2>
             <center>
                <table>
                   <tr>
                      <th>Kills</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->kills, 0, 50); ?></td>
                   </tr>
                   <tr>
                      <th>Deaths</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->deaths, 0, 50); ?></td>
                   </tr>
                   <tr>
                      <th>Ratio</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->ratio, 0, 50); ?></td>
                   </tr>
                </table>
                <BR>
                <table>
                   <tr>
                      <th>Joins</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->joins, 0, 50); ?></td>
                   </tr>
                   <tr>
                      <th>Quits</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->quits, 0, 50); ?></td>
                   </tr>
                   <tr>
                      <th>Kicked</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->kicked, 0, 50); ?></td>
                   </tr>
                </table>
                <BR>    
                <table>
                   <tr>
                      <th>Places</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->places, 0, 50); ?></td>
                   </tr>
                   <tr>
                      <th>Breaks</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->breaks, 0, 50); ?></td>
                   </tr>
                   <tr>
                      <th>Chats</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->chats, 0, 50); ?></td>
                   </tr>
                </table>
                </div>
             </center>
             <BR>
       </center>
       </aside>
       </center>
       <center>
          <form class="search" action ="stats.php" method="GET"><input type="text" name="player" autocomplete="off" placeholder="Player Name"><BR><input type="submit" value="Search Stats"></form>
       </center>
       <BR>
       <BR>
       <?php include("layout/footer.php"); ?>
    </body>
    </html>

It let's me echo them in my header.php which is where I included the config by using

 <?php $configs = include('config.php'); ?>

And in my header.php it let me echo things like sitename using:

 <?php echo $configs['sitename']?>

, but my webpage isn't working. Keep in mind the header.php is included (which has the config.php included in it). I'm a PHP newbie, and I'm pretty sure I just echoed them wrong or something. I'm trying to get $sitename, $url, and $color to be dynamic.

A working version:

<?php $configs = include('config.php');
if($_GET['player'] === 0) header("Location: http://" + $configs['url']);
 ?>
<head>
       <link rel="icon" 
          type="image/png" 
          href="face.php?u=<?php                     
             $statsJSON = file_get_contents('http://'.$configs['url'].'/api.php?task=stats&player='.$_GET['player']);
              $stats = json_decode($statsJSON);
              if(empty($stats)){
              echo $_GET['player'];
              echo '&s=16';
              } else {
                           echo strtoupper($stats->skin); 
                           echo '&s=16';
             }
             ?>">
       <link rel="apple-touch-icon" 
          type="image/png" 
          href="face.php?u=<?php                     
             if(empty($stats)){
             echo $_GET['player'];
             echo '&s=250';
             } else {
                          echo strtoupper($stats->skin); 
                          echo '&s=250';
             }
             ?>">
       <title><?php echo $configs['sitename'] . " - "; if(empty($_GET['player'])){ echo "STATS";} else { echo strtoupper($_GET['player']); }?></title>
       <meta name="apple-mobile-web-app-title" content="<?php echo ""; if(empty($_GET['player'])){ echo "STATS";} else { echo strtoupper($_GET['player']); }?>">
       <meta name=viewport content="width=device-width, user-scalable=no">
       <meta name="description" content="View <?php echo $_GET['player'];?>'s <?php echo $configs['sitename']?> stats!">
       <style>#profile::before{display:block;height:144px;border-radius:0;background:#0a0;-webkit-box-shadow:0 4px 0 rgba(0,0,0,.02);box-shadow:0 4px 0 rgba(0,0,0,.02);content:''}#profile{background:#fafafa;box-shadow:rgba(0,0,0,.14902) 0 1px 1px 0,rgba(0,0,0,.09804) 0 1px 2px 0;padding-bottom:38px;text-align:center;max-width:80%}#profile>img{position:relative;top:-52px;display:block;margin:auto;width:96px;height:96px;border:4px solid #fff;border-radius:0;-webkit-box-shadow:0 4px 0 rgba(0,0,0,.02);box-shadow:0 4px 0 rgba(0,0,0,.02)}#profile h2,#profile h3{font-weight:400;color:#77767e;margin-bottom:30px}#profile h2{margin-top:-30px;padding:0 16px 38px;font-size:21px}#profile h3{margin-top:-60px;padding:0 38px 16px;font-size:11px}#profile h4{font-weight:400}#locked{margin-bottom:-80px}table,td,th{border:1px solid #000;border-collapse:collapse;width:80%}td,th{padding:5px;text-align:left}</style>
    </head>
    <body>
       <?php include("layout/header.php"); ?>
       <BR>
       <BR>
       <center>
          <aside id="profile">
             <?php
                function mcus_timeAgoString($dateInterval) {
                $daysAgo = $dateInterval->days;
                //echo $difference;
                if ($daysAgo == 0){
                if ($dateInterval->h == 0){
                  $diffStr = $dateInterval->i . " Minutes Ago";
                } else {
                   $diffStr = $dateInterval->h . " Hours Ago";
                }
                } else {
                if($daysAgo === 1) {
                  $diffStr = "1 Day Ago";
                } else if($daysAgo === 7) {
                  $diffStr = "1 Week Ago";
                } else if($daysAgo === 14) {
                  $diffStr = "2 Weeks Ago";
                } else {
                  $diffStr = "$daysAgo Days Ago";
                }
                }
                return $diffStr;
                }

                      $get_player = $_GET['player'];

                     $infoJSON = file_get_contents('http://'.$configs['url'].'/api.php?task=info&player='.$_GET['player']);
                      $info = json_decode($infoJSON);
                      $statsJSON = file_get_contents('http://'.$configs['url'].'/api.php?task=stats&player='.$_GET['player']);
                     $stats = json_decode($statsJSON);
                      // $now = time(); // or your date as well`enter code here`
                ?>
             <img src="face.php?u=<?php                     
                if(empty($stats)){
                echo $_GET['player'];
                echo '&s=96';
                } else {
                             echo strtoupper($stats->skin); 
                             echo '&s=96';
                }
                ?>">
             <?php 
                echo '<style>';
                echo '#verified {';
                echo 'fill:';
                echo '#';
                    if(empty($info->theme)){
                echo $configs['color'] . ";";
                } else {
                echo substr($info->theme, 0, 50); 
                }
                echo '}';
                echo '</style>';
                ?>
             <?php 
                echo '<style>';
                echo '.toggle {';
                echo 'background-color:';
                echo '#';
                    if(empty($info->theme)){
                echo $configs['color'] . ";"; 
                } else {
                echo substr($info->theme, 0, 50); 
                }
                echo '}';
                echo '</style>';
                ?>
             <?php 
                echo '<style>';
                echo '#profile::before {';
                echo 'background:';
                echo '#';
                    if(empty($info->theme)){
                echo $configs['color'] . ";"; 
                } else {
                echo substr($info->theme, 0, 50); 
                }
                echo ' !important }';
                echo '</style>';
                ?>
             <?php 
                echo '<style>';
                echo '#profile::before {';
                echo 'background-image:';
                echo 'url(';
                echo substr($info->cover, 0, 50); 
                echo ' ) !important;';
                echo '</style>';
                ?>
             <h2>
                <?php
                   if($info->locked == 1){
                             echo '<div id="locked"><h5>This username is locked.</h5></div>';
                       }else {
                       echo strip_tags($_GET['player']);
                       }
                       ?>
                <?php
                   if(substr($info->verified,0,2) == 1) {
                         echo '<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
                <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="verified" width="24" height="24" viewBox="0 0 24 24">
                   <path d="M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" />
                </svg>
                '
                ;
                }
                //print_r ($stats);
                if(substr($info->locked,0,2) == 0) {
                echo '
                <h3>
                ';
                echo 'Logged In ';
                if(empty($info)){
                echo "Not Registered";
                } else { 
                //echo substr($playerAccountInfo->lastlogin,0,50); 
                $dtNow = new DateTime('Now');       
                $dtLastLogin = new DateTime($info->lastlogin);
                $diLastLoginToNow = $dtNow->diff($dtLastLogin);
                echo mcus_timeAgoString($diLastLoginToNow);
                }
                echo '';
                ;
                }
                ?>
             </h2>
             <center>
                <table>
                   <tr>
                      <th>Kills</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->kills, 0, 50); ?></td>
                   </tr>
                   <tr>
                      <th>Deaths</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->deaths, 0, 50); ?></td>
                   </tr>
                   <tr>
                      <th>Ratio</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->ratio, 0, 50); ?></td>
                   </tr>
                </table>
                <BR>
                <table>
                   <tr>
                      <th>Joins</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->joins, 0, 50); ?></td>
                   </tr>
                   <tr>
                      <th>Quits</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->quits, 0, 50); ?></td>
                   </tr>
                   <tr>
                      <th>Kicked</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->kicked, 0, 50); ?></td>
                   </tr>
                </table>
                <BR>    
                <table>
                   <tr>
                      <th>Places</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->places, 0, 50); ?></td>
                   </tr>
                   <tr>
                      <th>Breaks</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->breaks, 0, 50); ?></td>
                   </tr>
                   <tr>
                      <th>Chats</th>
                      <td><?php echo empty($stats) ? "--" : substr($stats->chats, 0, 50); ?></td>
                   </tr>
                </table>
                </div>
             </center>
             <BR>
       </center>
       </aside>
       </center>
       <center>
          <form class="search" action ="stats.php" method="GET"><input type="text" name="player" autocomplete="off" placeholder="Player Name"><BR><input type="submit" value="Search Stats"></form>
       </center>
       <BR>
       <BR>
       <?php include("layout/footer.php"); ?>
    </body>
    </html>

1 Answers1

0

You need to use curly braces around the array when using it quoted (or concatenate it).

http://sandbox.onlinephpfunctions.com/code/28fb84721d5c91b0c48279163c967489923f150b

So

echo "$configs['sitename']' - ";

Should be

echo "{$configs['sitename']}' - ";

or could be

echo $configs['sitename'] . "' - ";

Documentation (for the curly (complex) usage): http://php.net/manual/en/language.types.string.php#language.types.string.parsing.complex

A separate issue earlier in your code is

$statsJSON = file_get_contents($configs['url']/api.php?task=stats&player='.$_GET['player'].'');

you need to concatenate the arrays value with the query string

$statsJSON = file_get_contents($configs['url'] . '/api.php?task=stats&player='.$_GET['player']);

You should turn on error reporting to get all errors that your script is running into.

How to get useful error messages in PHP?

To enable and display errors add

error_reporting(-1); // to enable all errors
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

don't do this on a production machine though, you don't want users encountering errors.

Community
  • 1
  • 1
chris85
  • 23,846
  • 7
  • 34
  • 51
  • But works in my header.php. It's in the webpage that they are giving me errors. – Dalton Edwards Jul 21 '15 at 19:16
  • `echo $configs['sitename']` is different than `echo "$configs['sitename']' - ";`. Demo: http://sandbox.onlinephpfunctions.com/code/039da51f5985dd08aada8d119c5535bfa59c23f8 – chris85 Jul 21 '15 at 19:17
  • So..? $statsJSON = file_get_contents(echo "$configs['url']' - ";/api.php?task=stats&player='.$_GET['player'].''); – Dalton Edwards Jul 21 '15 at 19:19
  • That is a different error I missed, looks like there are syntax errors here as well. You should turn on error reporting. – chris85 Jul 21 '15 at 19:20
  • How would I put a http:// in front of this? $statsJSON = file_get_contents($configs['url'].'/api.php?task=stats&player='.$_GET['player']); – Dalton Edwards Jul 21 '15 at 19:50
  • This is pretty basic PHP stuff, have you looked at a tutorial? `$statsJSON = file_get_contents('http://' . $configs['url'].'/api.php?task=stats&player='.$_GET['player'])‌​;` It is called string concatenation, http://www.phptherightway.com/pages/The-Basics.html#concatenation – chris85 Jul 21 '15 at 19:58
  • @DaltonEdwards Questions, issues? – chris85 Jul 21 '15 at 20:42