Интернет - справочник для веб-мастеров
    441-847-152
     
 
 
php, javascript,ajax,mysql,TIGER CMS
  Для начинающих
php, javascript,ajax,mysql,TIGER CMS
  Общие
php, javascript,ajax,mysql,TIGER CMS
  Безопасность
php, javascript,ajax,mysql,TIGER CMS
  Интересное
php, javascript,ajax,mysql,TIGER CMS
  Новости PHP
php, javascript,ajax,mysql,TIGER CMS
  PHP + AJAX
php, javascript,ajax,mysql,TIGER CMS
  JavaScript
php, javascript,ajax,mysql,TIGER CMS
  Дизайн
php, javascript,ajax,mysql,TIGER CMS
  Раскрутка
php, javascript,ajax,mysql,TIGER CMS
  Заработок
php, javascript,ajax,mysql,TIGER CMS
  Советы

   
 

   
 
  SEO статьи HTML, как раскрутить сайт
1. Рейтинг сайтов

русские приколы


 
 
  Всего статей: 405
  Опубликовано: 405
  Проверяються: 0
  Добавлено сегодня: 0
-------------------------------------
  Прочитано статей: 405
  Всего прочтений: 189647
-------------------------------------
  Сейчас читают: 7 чел.


 

PHP в вопросах и ответах. Часть I. [Версия для печати]
Разместил: admin . Раздел: Для начинающих. Опубликовано: 07-25-2007 22:31:40

Ниже приведены ответы на наиболее часто задаваемые вопросы в форумах посвященных программированию на PHP.

Вопрос: Как определить версию браузера?

Ответ. Выполните эту программу и Вам все станет ясно:
<body text=white bgcolor=black>

<?php

echo "Ваш адрес (REMOTE_ADDR):
<font color=#ccccff><b><big>
".getenv("REMOTE_ADDR")." </big></b></font><br><br>";
echo "Ваша программа (HTTP_USER_AGENT): <font color=#ccccff><b>
".getenv("HTTP_USER_AGENT")." </b></font><br><br>";
echo "Предыдущая страница (HTTP_REFERER): <font color=#ccccff><b>
".getenv("HTTP_REFERER")." </b></font><br>";

?>

Соответственно делаем if (strstr(getenv("HTTP_USER_AGENT"),"MSIE")) echo "Вы используете Internet Explorer"; и другие проверки (в зависимости от того, с какой целью Вы решили разделять браузеры).

Вопрос: У меня есть веб-форма с кучей данных. Как упростить обработку кучи полей из формы?

Ответ. Используйте массивы!

Важно! Не используйте констукцию if ($название_поля) {действия} для проверки, установлена ли переменная. Следует использовать if (isset($названия_поля)) { ... }

Чтобы работать было удобнее, делайте так:

<?php
<form ... >
   Имя:      <input type=text name=asd[]> <br>
   Фамилия:  <input type=text name=asd[]> <br>
   Отчество: <input type=text name=asd[]> <br>
   <input type=submit>
   </form>
?>

В принимающем файле осталось только пройтись по массиву:

<?php
   for ($i=0; $i<count($asd); $i++) {
      echo "$asd[$i]<br>";
   }
?>

Если Вам важен порядок переменных (вдруг, юзер на странице не все заполнит), то делаем так:

<?php
   Имя:      <input type=text name=asd[name]> <br>
   Фамилия:  <input type=text name=asd[name2]> <br>
?>

Проверяем соответственно:

<?php 
   if ($asd[name]) {     // в PHP пишите так:  $asd['name']
      echo "Ваше имя - $asd[name]";
   }
?>

Если у Вас сложная структура и двухмерный массив ($asd['info']['name']), то делайте (в echo) вот так:

<?php 
 echo "Ваше имя - {".$asd[info][name]."}";
?>

Вопрос:Как преобразовать IP в число integer и обратно?

Ответ.Для чего нужно преобразовывать IP в число int? Чтобы он (IP адрес) занимал меньше места. IP в виде строки: "222.222.222.222" - 15 байт. В виде числа - 4 байта. Это число можно писать в базу данных или переменную в PHP. В PHP 4 есть встроенные функции ip2long (аналог нашей ip2int) и logn2ip). Проверено - все функции работают на ура. Нужно соблюдать тип полей при вставке IP в базу: либo INT (для +/-), либо UNSIGNED INT (только +).

А теперь сами исходники функций:

Функция ip2int преобразует ip-адрес в число (которое можно хранить в PHP, помещать в MySQL...)

Функция int2ip преобразует число в ip-адрес...

<?php
function int2ip($i) {
   $d[0]=(int)($i/256/256/256);
   $d[1]=(int)(($i-$d[0]*256*256*256)/256/256);
   $d[2]=(int)(($i-$d[0]*256*256*256-$d[1]*256*256)/256);
   $d[3]=$i-$d[0]*256*256*256-$d[1]*256*256-$d[2]*256;
   return "$d[0].$d[1].$d[2].$d[3]";
}

function ip2int($ip) {
   $a=explode(".",$ip);
   return $a[0]*256*256*256+$a[1]*256*256+$a[2]*256+$a[3];
}
?>

Существует так же альтернативный вариант:

Можно переложить операции по переводу адресов на сам mySQL. Запрос select INET_ATON("209.207.224.40") вернет соответствующее число (3520061480). И наоборот, запрос select INET_NTOA(3520061480) вернет строку "209.207.224.40". mySQL переведет IP/число намного быстрее, чем функция на PHP или встроенная ip2long. Разумеется, нужно не select'ы делать (отдельным запросом), а использовать приведенные SQL функции прямо во время вставки/выборки.

Источник: http://www.softportal.com/   Прочитана 934 раз.
  Закладки:  
     
     
     
Google
 




     
Copyright 2007 by bvisoft.com