Флаг к выбраной стране
Флаг к выбраной стране
Простое дополнение для всех скриптов. Суть плагина можно понять из скринов, при выборе страны из списка, к названию добавляется картинка этой страны.




И так далее...

Установка:

Открыть profile.php и заменить этот кусок:

  <tr>
    <td width="150" align="left"><p><label>Страна:</label></p></td>
    <td width="250" align="left"><input type="text" size="25" maxlength="15" name="country" autocomplete="off" class="field" value="<? echo $row["country"]; ?>" tabindex="1"></td>
  </tr>

На этот:

<tr>
            <td width="150" align="left">Страна (<? if($row["country"]!=="NULL") include ("cpic.php"); ?>):</td>
            <td>
            <select name="country" autocomplete="off"  tabindex="5">
            <option value="<?=$row["country"]?>"> - - - </option>
            <option value="Россия">Россия (RU)</option>
            <option value="Украина">Украина(UA)</option>
            <option value="Молдова">Молдова (MD)</option>
            <option value="Беларусь">Беларусь(BY)</option>
            <option value="Казахстан">Казахстан (KZ)</option>
            <option value="Другая">Другая</option></select>
            <span class="jQtooltip mini" title="Укажите Вашу страну из списка, если её нет, обратитесь к администрации и укажите её название">!</span></td>
        </tr>

Делал под обычный дизайн суфаста, так что под свой подстраивайте сами. Так же в архив добавил папку с флагами всех стран, если Вы захотите добавить другую страну.





Рубрика: Бесплатное » Дополнения   |   Автор: Fleent   |   Просмотры: 5129
Комментариев: 171
Публикаций: 10
ICQ: 616654741
- 309 +
  Автор: pushok   |   Группа: V.I.P.   |   Дата: 21 июля 2011  
прикольнее было бы еще сделать определение страны по IP
Комментариев: 75
Публикаций: 8
ICQ: 746522
- 61 +
  Автор: jamals   |   Группа: Пользователи   |   Дата: 21 июля 2011  
smile Так это легко же)) Парсером спокойно где то спарсить
Комментариев: 13
Публикаций: 2
ICQ: 521839
- 14 +
  Автор: master   |   Группа: Пользователи   |   Дата: 21 июля 2011  
у меня по ip определяет страну
с выводом флага
Комментариев: 121
Публикаций: 2
ICQ: 819374
- 118 +
  Автор: Rufus   |   Группа: Программисты   |   Дата: 21 июля 2011  
Хм... Очень неразумно записывать страну в виде символов, да еще и русских. А не сделать ли админку со странами, странам дать ID и выводить их в цикле при регистрации, при чем получать от пользователя IТЕGER а не STRING
Комментариев: 738
Публикаций: 50
ICQ: --
- 4 +
  Автор: Green-wm   |   Группа: Пользователи   |   Дата: 21 июля 2011  
Я так понял этот плагин работает по принципу:

<?PHP
if($strana == 'russia') { $flag = 'russia.gif' }
?>

?
Комментариев: 78
Публикаций: 2
ICQ: 438544012
- 123 +
  Автор: finbux.info   |   Группа: Пользователи   |   Дата: 21 июля 2011  
Green-wm,
так точна
Комментариев: 159
Публикаций: 10
ICQ: 407464816
- 174 +
  Автор: bizze   |   Группа: V.I.P.   |   Дата: 22 июля 2011  
Цитата: Rufus
странам дать ID и выводить их в цикле при регистрации

Поддерживаю, на Клац.рф так и сделал. Гораздо удобнее.
Комментариев: 738
Публикаций: 50
ICQ: --
- 4 +
  Автор: Green-wm   |   Группа: Пользователи   |   Дата: 22 июля 2011  
Глянул код щас, он по нубски конешь написан если чесно :) Не в обиду.

1) :

if($row["country"]=="Россия"){
echo "<img src='./images/flags/ru.png'>";
echo $row ['country'];
}

Зачем использовать 2 раза echo ? Неужели нельзя было сделать сделать так:

if($row["country"]=="Россия"){
echo "<img src='./images/flags/ru.png'>".$row ['country'];
}

?

2):

$sql = "SELECT country FROM tb_users WHERE username='$user'";
$result = mysql_query($sql);        
$row = mysql_fetch_array($result);

mysql_fetch_array() лучше заменить на mysql_fetch_assoc().
Зачем использовать суфастовский код ?
И откеуда берется переменная $user ?

Тогда уже надо делать так:

$sql = "SELECT `country` FROM `tb_users` WHERE `username` = ".$_SESSION['username']."";
$result = mysql_query($sql);        
$row = mysql_fetch_assoc($result);


Название ячеек и таблиц нужно зачключать в `` для валидности.
И в SQL запросах не писать в открытую переменных! Так как это дополнительная нагрузка. Так как машина сначала анализирует запросы на наличие вот таких вот переменных. Ух нужно писать через точки '.$user.'.
И кстати, echo лучше писать с одинарными ковычками. Удобнее ведь.
И + в данном коде лучше бы подошла конструкция elseif, а ещё лучше switch-case.

Мде. Ошибки в коде который в статье есть:

<?=$row["country"]?>

А где ; точка с запятой в конце ?

Ещё:

<? if($row["country"]!=="NULL") include ("cpic.php"); ?>

Ты уверин что сравнение !== тут подойдет ? Быть может ты имел ввиду != ?
И нафиг там NULL ? Можно бы было просто '' или "", этож удобнее winked
Комментариев: 64
Публикаций: 8
ICQ: 959098
- 82 +
  Автор: kirill   |   Группа: Программисты   |   Дата: 22 июля 2011  
А проше сделать так!
$ip =  $_SERVER['REMOTE_ADDR'];
function whois($ip) {
  if ($ip!="") {
    $sock = fsockopen ("whois.ripe.net",43,$errno,$errstr);
    if ($sock) {
       fputs ($sock, $ip."\r\n");
      while (!feof($sock)) {
        $str.=trim(fgets ($sock,128)." <br>");
      }
    }
    else {
          $str.="$errno
0;$errstr)";
      return;
    }
    fclose ($sock);
  }
  return $str;
  }
$whois =  whois($_SERVER['REMOTE_ADDR']);
$need = "country:";
$pos = strpos($whois,$need);
$search = substr($whois,$pos,18);
$excount = explode(":", $search);
$countr = trim($excount[1]);


и определение


<? if($countr=='KZ') {echo 'Казахстан';}?>
<? if($countr=='kz') {echo 'Казахстан';}?>
<? if($countr=='AF') {echo 'Афганистан';}?>
<? if($countr=='af') {echo 'Афганистан';}?>
<? if($countr=='RU') {echo 'Россия';}?>
<? if($countr=='ru') {echo 'Россия';}?>
<? if($countr=='UA') {echo 'Украина';}?>
<? if($countr=='ua') {echo 'Украина';}?>
<? if($countr=='CA') {echo 'Канада';}?>
<? if($countr=='ca') {echo 'Канада';}?>


и все )
помог?! Жмак +
Комментариев: 30
Публикаций: 1
ICQ: 9929292
- 93 +
  Автор: gosteff   |   Группа: Пользователи   |   Дата: 22 июля 2011  
Мне вот просто интересно, почему все здесь так любят if - else и никто не использует массивы? В некоторых местах это горахдо удобнее и практичнее
Комментариев: 64
Публикаций: 8
ICQ: 959098
- 82 +
  Автор: kirill   |   Группа: Программисты   |   Дата: 22 июля 2011  
Цитата: gosteff
Мне вот просто интересно, почему все здесь так любят if - else и никто не использует массивы? В некоторых местах это горахдо удобнее и практичнее


проста привычней
Комментариев: 738
Публикаций: 50
ICQ: --
- 4 +
  Автор: Green-wm   |   Группа: Пользователи   |   Дата: 23 июля 2011  
Вот вам примерчик реализации на свич-кейс:

<?php
switch($row['country']) {

case 'Россия':
print'<img src="./images/flags/ru.png"> Россия';
break;

case 'Украина':
print'<img src="./images/flags/ua.png"> Украина';
break;

case 'Молдова':
print'<img src="./images/flags/md.png"> Молдова';
break;

case 'Беларусь':
print'<img src="./images/flags/by.png"> Беларусь';
break;

case 'Казахстан':
print'<img src="./images/flags/kz.png"> Казахстан';
break;

default:
print'Не указана';
break;

}
?>


Делать было нечего) Написал)
Комментариев: 30
Публикаций: 1
ICQ: 9929292
- 93 +
  Автор: gosteff   |   Группа: Пользователи   |   Дата: 23 июля 2011  
Что-то я не пойму, как тут код вставить. Кто подскажет?
Комментариев: 738
Публикаций: 50
ICQ: --
- 4 +
  Автор: Green-wm   |   Группа: Пользователи   |   Дата: 23 июля 2011  
Цитата: gosteff
Что-то я не пойму, как тут код вставить. Кто подскажет?

[code ]

[/code ]

Без пробелов.
Комментариев: 30
Публикаций: 1
ICQ: 9929292
- 93 +
  Автор: gosteff   |   Группа: Пользователи   |   Дата: 23 июля 2011  
Во, понял )
Вот примерчик с использованием массивов. Разве так не проще?
$arr_country = array("RU" => "Россия", "UA" => "Украина", "MD" => "Молдавия", "BY" => "Беларусь");

  $orders=array(RU,UA,MD,BY);
  $key=array_search($row['country'],$orders);
  $flags=$orders[$key];
  
  echo '<img src="./images/flags/'.$flags.'.png" alt="'.$arr_country[$flags].'" />'.$arr_country[$flags].'';
Комментариев: 167
Публикаций: 16
ICQ: 553069709
- 239 +
  Автор: ZKolyaNZ   |   Группа: Пользователи   |   Дата: 24 июля 2011  
gosteff,
Вот сам прыкол максимально наверное хотел ускорить работу скрипта и перед концом сделал конечно)

смысел делать так:

  $flags=$orders[$key];


??????
В общем ты хотел наверное так сделать:


$arr_country = array("RU" => "Россия", "UA" => "Украина", "MD" => "Молдавия", "BY" => "Беларусь");

  $orders=array(RU,UA,MD,BY);
  $key=array_search($row['country'],$orders);

  echo '<img src="./images/flags/'.$orders[$key].'.png" alt="'.$arr_country[$flags].'"
/>'.$arr_country[$flags].'';


и быстрее будет выводиться ,примерно на 0.0001 сек
)
Комментариев: 30
Публикаций: 1
ICQ: 9929292
- 93 +
  Автор: gosteff   |   Группа: Пользователи   |   Дата: 24 июля 2011  
ZKolyaNZ , смысл этой конструкции в том, что кроме указанных в массиве данных не вывется НИЧЕГО. Т.е. если ключа нет в массиве, то выведется первый ключ. Это называется безопасностью в т.ч. )))
Попробуй сделать вывод моей конструкцией и своей присвоив переменной $row['country'] значение TR например... Мы не будем говорить о том, что в эту переменную можно написать какой-то вредоносный код даже... Не всегда то, что быстрее работает является лучшим решением.

Просто я смотрю здешние плагины, которые иногда даже продаются за деньги и вижу в них КУЧУ дыр!!! ОГРОМНУЮ кучу дыр. НЕ говоря о нагрузке на mysql сервер, которую они генерят )
Комментариев: 25
Публикаций: 1
ICQ: 1222192
- 11 +
  Автор: Fleent   |   Группа: V.I.P.   |   Дата: 25 июля 2011  
Простите, я учусь и делаю как знаю)
Комментариев: 107
Публикаций: 2
ICQ: --
- 105 +
  Автор: ZICKFREED   |   Группа: Пользователи   |   Дата: 28 июля 2011  
по айпи можно взять с движка GEN3, GEN4, ZEUS там всё просто как ясный день
Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.