[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Переменная с точкой в конце
ZooLL
Здравствуйте! Начал разбирать скрипт онлайн игры и столкнулся во всех файлах со множеством переменных типа: ($page.), расскажите всё про такой тип переменных(плюсы, минусы, использовать или нет и т.д) Вот пример одного файла:
 
<?php

$page="";
$title="Эпоха Рассвета";
//ini_set('display_errors', 0);
include "lib.php";
if ($_GET["do"]=="online" and !isset($_COOKIE[$gamename]))
{
$tmp=time()-5*60;
$sql=mysql_query("SELECT count(id) FROM users WHERE onlinetime>'$tmp'");
$count= mysql_result($sql,0,0);
$page.="<p class='d'><b>Список онлайн [$count]</b></p>";
if (!isset($_GET[str])) {$str=1;}
else
{
$str=intval(htmlspecialchars(stripslashes(trim(mysql_real_escape_string($_GET[str])))));
}
$begin=($str-1)*15;
$sql=mysql_query("SELECT id,char_name,level FROM users WHERE onlinetime>'$tmp' ORDER BY char_name LIMIT $begin,15");
while($user=mysql_fetch_array($sql))
{
$page.="<br/>$user[char_name][$user[level]]";
}
$page.=nav_page(ceil($count/15),$str,"./?do=online&str=");
$tmp=time()-86400;
$sql=mysql_query("SELECT count(id) FROM users WHERE onlinetime>'$tmp'");
$count= mysql_result($sql,0,0);
if ($count>0)
{
$page.="<br/>За сутки: $count";
}
$tmp=time()-7*86400;
$sql=mysql_query("SELECT count(id) FROM users WHERE onlinetime>'$tmp'");
$count= mysql_result($sql,0,0);
if ($count>0)
{
$page.="<br/>За неделю: $count";
}
$page.="<p class='d'><b><a href='./'>На главную</a></b></p>";
display($page,$title,$style);
}
else
{
include "$filesfolder/index.php";
}

?>




Спустя 18 минут, 57 секунд (21.09.2010 - 02:19) waldicom написал(а):
Это не переменная такая, а символ конкатенации.
$page = 'Init';
echo $page . '<br />';
$page .= 'second row';
echo $page . '<br />';

Спустя 44 минуты, 44 секунды (21.09.2010 - 03:04) inpost написал(а):
waldicom
Или как сказал бы школьник: к переменной дописывается другая строчка.
$a = "aaa";
$a .= "bbb";
echo $a; // результат: "aaabbb"

Спустя 13 минут, 15 секунд (21.09.2010 - 03:17) ZooLL написал(а):
Цитата (inpost @ 21.09.2010 - 00:04)
waldicom

Или как сказал бы школьник: к переменной дописывается другая строчка.
$a = "aaa";
$a .= "bbb";
echo $a; // результат: "aaabbb"


Это понял! Но вот в данном скрипте не пойму зачем оно нужно! Ведь оно то не дописывается к друг другу! Или я чего-то не понимаю?

Спустя 13 минут, 14 секунд (21.09.2010 - 03:30) inpost написал(а):
Вообще-то пишется длинная переменная, в ней формируется огромная часть сайта, потом просто выводится как: echo $page; и хопа, почти весь сайт пишется.

А вообще, немного не могу понять, что это за строчка:
$str=intval(htmlspecialchars(stripslashes(trim(mysql_real_escape_string($_GET[str])))));

То есть на выходе мы получим число, ладно, ещё trim - да, можно немножко понять, но вот зачем фиксить слеши, потом спецсимволы, и в итоге достать только int? При этом (int) в 2.2-2.3 раза быстрее. К тому же надо кавычки ставить... В итоге эта строчка могла бы выглядеть:
$str = (int)$_GET['str'];

Спустя 9 минут, 14 секунд (21.09.2010 - 03:39) ZooLL написал(а):
Ничего не понял!(( Видимо нужно идти спать...
А насчёт строки так я без понятия, только учусь и скрипт не мой...
Но за совет спасибо!)
ещё хотел спросить что делает это:

if ($_GET["do"]=="online" and !isset($_COOKIE[$gamename]))
{
$tmp=time()-5*60;
$sql=mysql_query("SELECT count(id) FROM users WHERE onlinetime>'$tmp'");
$count= mysql_result($sql,0,0);

Спустя 23 минуты, 6 секунд (21.09.2010 - 04:02) inpost написал(а):
ZooLL
Чистый пример объединения:
$table = "<table>";
$table .= "<tr>";
$table .= "<td>lala</td>";
$table .= "<td>lala</td>";
$table .= "</tr>";
$table .="</table>";
после этого идёт много всяких глупостей,и там, где надо там вставить эту таблицу мы пишем:
echo $table;

В итоге выведется так:"<table><tr><td>lala</td><td>lala</td></tr></table>".

В начале идёт проверка, если $_GET приравнивается online (то есть адресная строка выглядет как-то так: "thispage.php?do=online" И (AND) не существуют кукисы со значением $gamename, то выполняется условие цикла и далее следует код:
в переменную $tmp заносится время, которое сейчас, с вычитанием 5*60, скорее всего это будет 5 минут.
Далее count(id) имеется ввиду, что будет подсчитано количество строк, где пользователи имеют время больше, чем 5 минут назад. Если сейчас 22:20, то выведутся все пользователи, которые были активны начиная с 22:15 и далее.
Я могу немного в минутах ошибиться, так как ещё не гуру =)

Спустя 7 минут (21.09.2010 - 04:09) ZooLL написал(а):
Очень доходчиво объяснил! Спасибо большое!) Лови +
З.Ы. Не хватает постов( Через 5-ть поставлю! wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.