Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

FAQ по PHP для чайников

256
30 ноября 2006 года
foxweb
1.0K / / 27.07.2005
Общие вопросы по PHP
Работа со строками

Работа с сетью

PHP & JavaScript + HTML
[INDENT]JavaScript[/INDENT][INDENT]
HTML-формы и передача данных серверу
[/INDENT]PHP & MySQL
PHP разное
Страницы:
92
18 января 2007 года
Тень Пса
2.2K / / 19.10.2006
Поддерживаю!

1. как сделать UPLOAD файла с помощью PHP?

Страничка HTML с которой посылается запрос:
 
Код:
<form enctype="multipart/form-data" action="/upload.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form>


а вот скрипт, который уже собссна обработает валидность файла, и закачает при удовлетворении условий:
 
Код:
<?php
$uploaddir = '/var/www/uploads/';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir .
    $_FILES['userfile']['name'])) {
    print "File is valid, and was successfully uploaded.";
} else {
    print "There some errors!";
}
?>


Описание:
Цитата:
  • $_FILES['userfile']['name'] - оригинальное имя файла, такое, каким его видел пользователь, выбирая файл;
  • $_FILES['userfile']['type'] - mime/type файла, к примеру, может быть image/gif; это поле полезно сохранить, если Вы хотите предоставлять интерфейс для скачивания загруженных файлов;
  • $_FILES['userfile']['size'] - размер загруженного файла;
  • $_FILES['userfile']['tmp_name'] - полный путь к временному файлу на диске;
  • $_FILES['userfile']['error'] - Начиная с версии 4.2.0, содержит код ошибки, который равен 0, если операция прошла успешно.
Для PHP версии ниже 4.1.0 (Рекомендуется немедленно обновить http://www.php.net/downloads.php) этот массив называется $HTTP_POST_FILES. Не стоит забывать, что в отличие от $_FILES этот массив не является суперглобальным и при обращении к нему, к примеру, из функции, необходимо явно указывать global $HTTP_POST_FILES;


Если в настройках Вашего сервера register_globals=on, будут созданы дополнительные переменные вида $userfile_name, $userfile_type, $userfile_size… Учитывая, что, начиная с версии 4.2.0, в настройках по умолчанию register_globals=off использования этих переменных не рекомендовано, даже если они определены. Лучший способ получения информации о загружаемых файлах - использовать массив $_FILES.



[COLOR=Gray]ЗЫ: может кому-то покажется это совсем ненужным, но когда я начинал изучать и пользовать PHP вставал этот вопрос, поэтому я посчитал, что новичкам это может быть полезно
[/COLOR]

92
25 января 2007 года
Тень Пса
2.2K / / 19.10.2006
http://ru.php.net/manual/ru/ - даже на русском. всё чётко и подробно. по-моему даже выдержки из "факов" на php.net есть
256
01 февраля 2007 года
foxweb
1.0K / / 27.07.2005
Скажем вам надо проверить входит ли одна подстрока в другую, т.е. фактически - найти иголку в стоге сена! Это достаточно простая задача. Давайте используем функцию strpos(), чтобы ее решить:

 
Код:
<?php
if (strpos("abcdefg", "abc"))
{
  echo "found it!";
}
else
{
  echo "didn't find it..";
}
?>


Секундочку! Как мы видим - вхождение подстроки существует. Почему тогда функция strpos() вернула нам false? Посмотрим в руководство: strpos() — Возвращает позицию первого вхождения подстроки

int strpos ( string haystack, mixed needle [, int offset] )

О! strpos() возвращает число, обозначающее позицию (отсюда такое название)! Так как наша подстрока находится в начале строки, в которой проходит поиск, функция вернет 0, который преобразуется в false. Кроме того в руководстве сказано: Если подстрока needle не найдена, strpos () возвращает FALSE. Отлично, исправим наш пример следующим образом:

 
Код:
<?php
if (strpos("abcdefg", "abc") != false)
{
  echo "found it!";
}
else
{
  echo "didn’t find it..";
}
?>


Хм…!? Возвращенное значение 0 не равно false… или равно? Равно, т.к. число 0 приводится к false. Значит мы должны проверять значение еще и по типу:

 
Код:
<?php
if (strpos("abcdefg", "abc") !== false)
{
  echo "found it!";
}
else
{
  echo "didn’t find it..";
}
?>


Наконец, мы получили правильный результат результат. Оператор == сравнивает значения, а оператор === (и обратный от него !==) сравнивает и значение и тип. Если вы смотрели PHP bug tracker, то видели что данный случай упоминается очень много раз, и все время помечается как фиктивный.
355
01 февраля 2007 года
&lt;SCORP&gt;
786 / / 21.10.2006
так может тогда следует подправить пример, если уж тема для новичков?
 
Код:
if (strpos("abcdefg", "abc") === false)
256
02 февраля 2007 года
foxweb
1.0K / / 27.07.2005
Начнем с того, что никакую переменную передать, конечно же, невозможно. Поскольку переменная - это часть программы. И из одной в другую передать её нальзя. То что JavaScript и PHP живут в одном файле, совершенно не означает, что они могут как-то взаимодействовать.

Передать можно только значение переменной. Т.е. текст. То есть, различия между "передачей переменной в яваскрипт" и формированием html таблицы НЕТ НИКАКОГО!
Отсюда вывод - "Передать переменную" в Javascript очень легко. Особенно, повторюсь, если учесть, что никакой "передачи" не происходит. PHP просто напросто генерирует яваскрипт точно так же, как и всю остальную страницу, вместе со всеми переменными.
Точно так же, как вы выводите в браузер строку "Hello World, это Вася Пупкин!", выводится и любой яваскрипт, со всеми своими переменными.
Единственное условие - вы должны представлять себе тот яваскрипт, который хотите получить.
К примеру в PHP есть переменная $name="Вася", значение которой надо передать в яваскрипт, чтобы получить

[html]
<script>name="Вася";</script>
[/html]

Мы просто пишем

 
Код:
<?
$name="Вася";
?>
<script>name="<? echo $name; ?>"</script>


То есть, фактически, мы просто сформировали нашим PHP скриптом некий текст, который выглядит, как нужный нам код на яваскрипте. Или, с другой стороны, мы писали свой яваскрипт, в нужных местах вставляя вывод переменных из PHP.

Чтобы не сойти с ума от разнообразных кавычек, настоятельно рекомендуется яваскрипт выводить не весь с помощью echo, а именно так, как написано здесь - закрыв тег PHP и открывая их только там, где нужно вывести переменную.

Как передать переменную из яваскрипта в PHP?

Точно так же, как и любые другие данные - послав запрос на сервер.
Но надо четко понимать, что смысла в использовании яваскрипт переменных в PHP очень немного. Потому, что в том же самом php скрипте получить значение из яваскрипта НЕЛЬЗЯ! Только при следующем запросе! Потому, что РНР на сервере, а яваскрипт - в браузере у клиента. И пхп остался на сервере.
Поэтому единственное осмылсенное действие, которое можно сделать на пхп с переменными яваскрипта - это передать их запросом картинки для статистики, как это делает, например, счетчик спайлог.
И база данных тоже осталась на сервере. Поэтому, если надо к ней обратиться по событию onClick, то по этому событию надо запрашивать сервер, который запустит PHP скрипт, который обратится к базе, сформирует новую HTML страницу и отдаст ее браузеру.
Или заранее загружать в массив яваскрипта все данные, которые могут понадобиться.
256
02 февраля 2007 года
foxweb
1.0K / / 27.07.2005
Смешной вопрос :) Многие сразу же пытаются запустить php.exe в надежде, что вот они прям щас наберут прогу и запустят её, но почему-то выскакивает какое-то чёрное окно и на этом знакомство с PHP, как ни печально, заканчивается. Как все привыкли к Windows-окнам! PHP - это вам не Блокнот или Turbo Pascal, а интерпретатор с интерфейсом командной строки. Научитесь наконец различать две простые вещи - интегрированная среда разработки и компилятор (интерпретатор). Напишите простую программу <? echo "Hello, World!"; ?>, сохраните её в файл test.php. Теперь откройте командную строку (cmd) и введите "c:\php\php.exe test.php" (не забыв указать нужные пути). На экране будет выведено заветное "Hello, World!". Посмотрите документацию. Усложните программу так, чтобы она вместо надписи выводила полноценную HTML-страницу. И помните, таким способом писались самые лучшие программы 30 лет назад.

Естественно, существуют различные интегрированные сред разработки для PHP. Чаще всего это простой текстовый редактор с отладчиком, подсветкой, анализатором кода (FTP-клиентом, справкой...).
Вот некоторые из них: DzSoft PHP Editor, PHP Expert Editor, PSPad, Notepad++.
256
02 февраля 2007 года
foxweb
1.0K / / 27.07.2005
Совершенно глупый вопрос. Это принципиально разные технологии. Тем, кто так спрашивает кажется что JavaScript и PHP выполняют сходные функции, но это не совсем так.

Дело в том, что JavaScript - событийный язык, его код интерпретируется непосредственно после загрузки в браузере пользователя. Этот язык ориентирован на управление поведением браузера и элементами веб-страницы в реальном времени. Кроме того, JavaScript может взаимедействовать с пользователем через браузер и другие элементы интерфейса.

PHP является серверным скриптовым языком и выполняется на сервере целиком и только один раз до того, как результат будет отправлен пользователю. Вы должны понять, что скрипт, отработав на сервере один раз от начала до конца, сразу же отправляет данные и немедленно закрывается. JavaScript чаще всего работает в интерактивном режиме, мы можем сколько угодно кликать на кнопки (вызывать событие) и скрипт каждый раз будет выполнять задуманное действие (функцию), чего не делает PHP. Однако совместить JavaScript и PHP всё же можно, генерируя JavaScript код с помощью операторв PHP также, как вы генерируете HTML... Выбросьте этот дурацкий вопрос из головы!!!
256
02 февраля 2007 года
foxweb
1.0K / / 27.07.2005
Браузер показывает только то, что он сам получает. Если он получает текстовый файл, он и показывает текстовый файл. Если он получает HTML-файл, он показывает веб-страницу. Cfv браузер кроме HTML ничего не понимает и не выполняет серверные скрипты. Скрипт на PHP должен выводить данные в виде HTML-страницы. Однако, этот скрипт должен быть ещё и выполнен интерпретатором PHP, чтобы эти данные могли быть сгенерированы и выведены. Для того чтобы запускать PHP-скрипты в браузере, нужно будет установить на ваш компьютер программу-сервер (Apache или Small Server - c поддержкой PHP). Тогда, запросив в браузере http://localhost/test.php мы сможем увидеть результаты работы нашего скрипта, которые сгенерированы PHP-интерпретатором и доставлены в браузер HTTP-сервером.
256
02 февраля 2007 года
foxweb
1.0K / / 27.07.2005
К примеру, вот простой скрипт сложения двух чисел. Состоит из двух частей: HTML-форма и код вывода суммы. Числа из полей ввода A и B передаются в этот же скрипт методом POST в виде переменных $_POST[a] и $_POST, и если они были переданы, то есть не пустые, то под формой выводится результат.

 
Код:
<form name="sum" action="" method="post">
Введите A <input name="a" type="text" value="">
Введите B <input name="b" type="text" value="">
<input type="submit" value="Сложить">
</form>

<?php
if ( $_POST[a] && $_POST ) echo "Результат " . ($_POST[a] + $_POST);
?>


Работать с меню, кнопками, флажками и файловыми полями можно аналогично, главное чтобы у элемента ввода было имя, которое будет передано в скрипт в виде соответствующей переменной. Смотрите в дополнительной литературе. Добавьте процедуру записи введённых строк в файл, вывода содержимого этого файла, и получите простую гостевую книгу!
256
02 февраля 2007 года
foxweb
1.0K / / 27.07.2005
Это два разных способа предачи данных HTTP-серверу, точнее PHP- или другому CGI-скрипту.

Сначала поговорим о методе GET. В этом случае данные передаются через URL, то есть адресную строку.

Пример: http://someserver/script.php?a=5&b=10

Что это означает? На сервере someserver находится скрипт script.php. Запросив этот URL, скрипту будут переданы две переменные - a равная 5 и b равная 10. Всё, что идёт справа от знака вопроса - параметры. Их может быть сколько угодно и разделяются они знаком амперсенда & (по секрету говоря, это может быть любой другой знак и вообще параметры могут передаваться в любом формате). Пара "имя-значения" разделяется знаком равенства = . В общем случае в PHP-скрипте эти переменные можно получить через ассоциативный массив $_GET[]. Например echo $_GET[a] выведет на экран 5. Массив значений $_GET[] доступен из любого места программы. Чтобы передать данные GET, нужно всего лишь запросить соответствующий URL, содержащий GET-переменные.
Основное применение - гиперссылки между страницами, содержимое которых меняется в зависимости от значения GET-переменных.

Теперь рассмотрим метод POST. В этом случае данные передаются не в URL, а в теле HTTP-запроса, но формат представления очень похож на GET и в скрипте они обрабатываются посредством глобального массива $_POST[имя-переменной]. Обычно POST используется при работе с формами, когда данные отправляются на сервер, а не просто запрашивается URL. В этом принципиальное отличие GET от POST. См. предыдущий пример про формы.

Подведём итоги

GET ("получить") используется для запроса ресурса (скрипта, страницы) с определёнными параметрами. POST ("отправить") используется для отправки данных на сервер для последующей обработки скриптами. GET и POST переменные доступны в PHP-скрипте через массивы $_GET[] и $_POST[] из любого места программы (так как являются глобальными). GET используется в ссылках (но может применяться и в формах). POST - только в формах. Методом GET не стоит отправлять конфиденциальные данные вроде паролей, серийных номеров и т. д., так как передаются открыто и могут быть переданы просто в виде ссылки. Не стоит также с помощью GET выполнять операции удаления вроде script?delete=all, так как поисковики и другие программы могу перейти по этой ссылке. Ну и конечно же самый распространённый способ взлома скриптов - через GET переменные, поэтому фильтруйте все входящие данные!

===========================================

[COLOR=DarkRed]Nixus дополняет:[/COLOR] О GET и POST более подробно

===========================================
20K
14 апреля 2007 года
alisher1
21 / / 17.03.2007
[COLOR=darkred]alisher1[/COLOR][COLOR=darkred] спрашивает:[/COLOR]
У меня что-то не получается, что не так:
[html]
<form action="out_text.php" method="POST">
<p>Название: <input type="text" name="text_name" size="20"><br>
текст:<br>
<textarea rows="12" name="text" cols="53"></textarea><br>
<input type="submit" value="Submit" name="Submit"></p>
</form>
[/html]

out_text.php:
 
Код:
<?php
    echo "$text_name";
?>


[COLOR=darkred]...и сразу находит ответ на свой вопрос:[/COLOR]
Спасибо уже нашел это в register_globals.

[COLOR=darkred]...всвязи с чем [/COLOR][COLOR=darkred]nilbog[/COLOR][COLOR=darkred] рекомендует:[/COLOR]
настоятельно советую не использовать register_globals
используйте массив $_REQUEST

[COLOR=darkred]...mfender добавляет к этому:[/COLOR]
Неизвестно кем, когда и зачем был придуман register_globals, но факт остаётся фактом: возникает вот такое непонимание работы с глобальными переменными.

Вопрос этот давно тревожит умы всех начинающих работать с PHP и широко описан во всех FAQ. Например ТУТ...

Массив $_REQUEST объединяет в себе массивы $_GET, $_POST и $_COOKIES. Чтобы не вышло накладки с одноимёнными полями этих массивов, для уточнения следует пользоваться именно ими, а $_REQUEST использовать только когда есть уверенность, что имена не повторяются.
15
15 апреля 2007 года
shaelf
2.7K / / 04.05.2005
Конкретно лучше юзать $_GET, $_POST, $_COOKIE, т.к. в этом случае ты уверен и знаешь, откуда приходят данные, если ты этого не знаешь, то совет заняться дизайном приложения.
28K
30 апреля 2007 года
levis
4 / / 30.04.2007
Вы описали о том как получить и отфильтровать пришедшие данные из глобального массива но не слова о главном различии между $_GET и $_POST,то что в первом макс.размер = 255 символов,а вот втором 8кб.
256
11 мая 2007 года
foxweb
1.0K / / 27.07.2005
Цитата: levis
Вы описали о том как получить и отфильтровать пришедшие данные из глобального массива но не слова о главном различии между $_GET и $_POST,то что в первом макс.размер = 255 символов,а вот втором 8кб.


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

13
11 мая 2007 года
RussianSpy
3.0K / / 04.07.2006
Максимальная длина GET запроса определяется настройками сервера. Часто она находится в интервале от 1024 до 4096 байт.
Длина POST запроса в общем-то не ограничена. Разве что сервер по таймауту может отвалится.
256
11 мая 2007 года
foxweb
1.0K / / 27.07.2005
Как определить IP-адрес пользователя учитывая прокси-сервер?


Код:
function getip()
{
  if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown"))
    $ip = getenv("HTTP_CLIENT_IP");

  elseif (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
    $ip = getenv("HTTP_X_FORWARDED_FOR");

  elseif (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
    $ip = getenv("REMOTE_ADDR");

  elseif (!empty($_SERVER['REMOTE_ADDR']) && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
    $ip = $_SERVER['REMOTE_ADDR'];
 
  else
    $ip = "unknown";
 
  return($ip);
}
251
25 ноября 2007 года
SkyMаn
1.7K / / 31.07.2007
Ответ:
Лучше всего хранить в отдельном файле, который будет лежать вне корневого каталога сайта. Например, если все скрипты сайта лежат в папке /hosting/public_html/, то этот файл с паролями нужно положить в папку /hosting/ или /hosting/cfg (папку cfg - создать). Если же нет возможности сохранять файлы вне корневого каталога, то сохраняйте в другую папку, созданную в корневике, предварительно ограничив доступ к ней: поместить в эту папку файл .htaccess и записать строку следующего вида:
Цитата:
deny from all


Так же совет придумывать нестандартные имена файлов и переменных (например post_count или contacts_value вместо my_secret_password).
Еще, если пароли будут вводиться юзером (юзерами), то хранить их нужно зашированными (используйте crypt), и главное - и ни в коем случае пароли не должны передаваться GET-методом, так как они могут остаться в логах сервака, прова, прокси, кеш броузера, кеш прокси, хистори, строку referer).

353
25 ноября 2007 года
Nixus
840 / / 04.01.2007
foxweb писал выше про методы GET и POST. Небольшое дополнение про метод POST.
Методы GET и POST для сервера отличаются только наличием в методе POST тела запроса (request body), в котором браузер может передавать любые данные серверной CGI-программе. Это тело запроса никак не отражается в URL запроса.
Что касается метода GET, то единственное место где могут быть переданы данные CGI-программе, это т.н. Query String. Query String есть нечто иное как текст, встречающийся в запросе после первого символа '?' и длящийся до первого '#' или до конца строки. Т.к. Query String является частью URL, то он может использоватся и в POST запросах. (Да, нас никто в этом не ограничивает).
Это иногда очень удобно т.к. избавляет от создания лишних скрытых input'ов в форме. Например:

[HTML]<form action="script?op=login" method="POST">
<input type="text" name="username" value="" />
<input type="password" name="password" value="" />
<input type="submit" value="Отправить данные" />
</form>[/HTML]

В скрипте мы получим как username и password, так и op.
251
09 декабря 2007 года
SkyMаn
1.7K / / 31.07.2007
Простой скрипт для залогинивания на страничку, защищенную HTTP BASIC - аутентификацией.
Код:
/* Конфигурация доступа */
define ('x401_host', 'www.example.com');
define ('x401_port', 80);
define ('x401_user', 'your_username');
define ('x401_pass', 'your_password');

/* Функция */
function get401Page($file) {
   $out  = "GET $file HTTP/1.1\r\n";
   $out .= "Host: ".x401_host."t\r\n";
   $out .= "Connection: Close\r\n";
   $out .= "Authorization: Basic ".base64_encode(x401_user.":".x401_pass)."\r\n";
   $out .= "\r\n";

   if (!$conex = @fsockopen(x401_host, x401_port, $errno, $errstr, 10))
       return 0;
   fwrite($conex, $out);
   $data = '';
   while (!feof($conex)) {
       $data .= fgets($conex, 512);
   }
   fclose($conex);
   return $data;
}

/* Код */
if ($source = get401Page('/absolute/path/file.php?get=value')) {
  echo $source;
} else {
  echo "Не могу соединиться!";
}
?>
256
09 декабря 2007 года
foxweb
1.0K / / 27.07.2005
Многие обладатели домашних страничек рано или поздно начинают интересоваться устройством крупных новостных порталов и контент-проектов - не вручную же они все эти страницы делают! А как тогда? Данная статья поможет начинающему веб-мастеру начать создание проектов с применением PHP-MySQL.

Один из самых часто задаваемых вопросов начинающих веб-мастеров: как начать работать с базами данных MySQL, используюя скрипты на PHP? Это неудивительно, потому что эра статических HTML-сайтов давно прошла (на "Народе" это любимое народом дело процветает :) и теперь более-менее грамотные начинающие веб-мастера осознали удобство и комфорт создания и поддержания контент проектов на основе PHP-MySQL. Скептики и консерваторы будут утверждать, что работать с файлами проще, что легче наверстать страничку вручную, чем тратить время на отладку и написание скриптов. Не слушайте их - это абсурд! Как говорится "Лучше день потерять потом за 5 минут долететь!". Ну допустим, на подготовку и создание динамической версии сайта на основе PHP-MySQL уходит раза в два-три больше времени, а то и больше, но зато поддержка проекта в будущем покажется вам приятным и простым занятием (конечно, настолько, насколько серьёзно вы к этому подойдёте). А почему загибаются казалось бы хорошие статические сайты? Причина всему - рутинные операци по обновлению сайта. Если на PHP-MySQL сайте есть возможность добавлять статьи через форму (копировать, вставить, отправить), то для добавления статьи на статический сайт нужно намного больше более сложных операций:
  • Сверстать новую страничку на основе существующего шаблона.
  • Проверить форматирование, ссылки, картинки, всё ли на месте.
  • Добавить ссылку на новую страницу где-то ещё (а то и на несколько!), например в раздел "Статьи".
  • Проверить, как всё это работает целиком.
  • Соединиться с сервером FTP.
  • Закачать все обновлённые страницы на сервер.
  • Проверить, всё ли работает в онлайне.

Вот почему многие бросают любимое занятие. Ну есть конечно некоторые усердные личности, которые годами поддерживают такие сайты. А есть и умельцы, которые за пару месяцев разработают БД и PHP-движок и будут жить методом "копировать, вставить, отправить"!

Надеюсь, я привёл достаточные аргументы в пользу динамического сайта. И вот Вася Пупкин решил опробовать себя в этом нелёгком деле, но тут возникает несколько резонных вопросов:
  1. Есть ли у меня PHP?
  2. Есть ли у меня MySQL?
  3. Есть ли у меня вообще сайт? (шутка :)

Итак, для создания динамического сайта нам понадобится хостинг с поддержкой PHP и MySQL. Ну здесь я вам не советчик - если вы создаёте серьёзный проект, то лучше немного заплатить, но получить всё и сразу - тогда вам сюда http://hcenter.info. Из бесплатных хостингов PHP и MySQL доступны кажется на Агаве, но я могу ошибаться - тогда поищите в Яндексе "бесплатный хостинг с поддержкой PHP MySQL" или что-то в этом роде.

Пропускаем момент регистрации на хостинге. Теперь вам должны выслать по email письмо с логинами и паролями. Внимательно прочитайте инструкции, посмотрите FAQ на сайте хостинга, если что-то непонятно. Теперь приступим непосредственно к разработке базы данных и PHP-скрипта, который будет выводить данные из таблицы.

Во-первых, вам необходимо создать новую базу данных на MySQL-сервере. Это очень легко делается при помощи инструментов типа phpMyAdmin или любого графического клиента MySQL - SQLyog, MySQL-Front. На большинстве хостингов это делается при помощи панели управления хостингом - тут я вам не помощник, смотрите сами. Выполните функцию создания новой базы, назвав её например "test".

При помощи одной из программ выполните SQL-дамп:

Код:
#
# Table structure for table `links`
#
# Creation: Aug 12, 2003 at 05:11 PM
# Last update: Aug 12, 2003 at 05:28 PM
#

CREATE TABLE `links` (
`id` int(10) unsigned NOT NULL auto_increment,
`url` varchar(100) NOT NULL default '',
`description` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;
CREATE TABLE `links` (
`id` int(10) unsigned NOT NULL auto_increment,
`url` varchar(100) NOT NULL default '',
`description` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;

#
# Dumping data for table `links`
#
#
# Dumping data for table `links`
#

INSERT INTO `links` VALUES (1, 'http://www.programmingsite.co.uk', 'programming directory');
INSERT INTO `links` VALUES (2, 'http://www.beginnersphp.co.uk', 'PHP tutorials and code');
INSERT INTO `links` VALUES (3, 'http://asp.programmershelp.co.uk', 'ASP site with code and tutorials');
INSERT INTO `links` VALUES (4, 'http://javascript.programmershelp.co.uk', ' javascript site');
INSERT INTO `links` VALUES (5, 'http://software.programmingsite.co.uk', ' software directory');
INSERT INTO `links` VALUES (1, 'http://www.programmingsite.co.uk', 'programming directory');
INSERT INTO `links` VALUES (2, 'http://www.beginnersphp.co.uk', 'PHP tutorials and code');
INSERT INTO `links` VALUES (3, 'http://asp.programmershelp.co.uk', 'ASP site with code and tutorials');
INSERT INTO `links` VALUES (4, 'http://javascript.programmershelp.co.uk', ' javascript site');
INSERT INTO `links` VALUES (5, 'http://software.programmingsite.co.uk', ' software directory');


Теперь вы можете писать и выполнять свои PHP-скрипты для операций с только что созданной базой данных. Следующий PHP-скрипт подключается с серверу MySQL, производит выборку данных и выводит содержимое таблицы "links" в виде обычной HTML-таблицы.

Код:
<?php

//соединение с базой данных при помощи функции mysql_connect()
//в аргументах функции укажите имя сервера, логин и пароль.
$db = mysql_connect("сервер","логин","пароль");

//функция mysql_select_db() выбирает текущую
//базу данных с именем "test"
mysql_select_db("test" ,$db);

//функция mysql_query() выполняет запрос на выборку данных
//результирующий набор данных хранится в переменной $sql
$sql = mysql_query("SELECT * FROM links" ,$db);

//после получения данных начнём формирование HTML-таблицы
echo ("<table border ='1'>");

//выводим строку заголовков
echo ("<tr><td>Адрес</td><td>Описание</td></tr>");

//функция mysql_fetch_row() извлекает одну строку из результата
//и сохраняет её в массиве $tablerows
while ($tablerows = mysql_fetch_row($sql))
{
//теперь в цикле для каждой полученной строки сделаем вывод
//$tablerows[1] соответствует полю "url"
//$tablerows[2] соответствует полю "description"
echo("<tr><td><a href='$tablerows[1]'>$tablerows[1]</a></td><td>$tablerows[2]</td></tr> ");
}
echo "</table>";

//закрытие соединение (рекомендуется)
mysql_close($db);

?>


Сохраните скрипт в файл под именем, например test.php и закачайте на FTP-сервер вашего сайта. Скрипт будет доступен например так: http://vasya.server.ru/test.php (ну или смотря куда вы его закачали). Если всё сделано правильно, скрипт отработает и выведет на экран содержимое БД в виде обычной таблицы. Таким же образом можно выводить любые таблицы, всё зависит от SQL-запроса в операторе mysql_query().

Буду искренне рад, если эта статья стала для вас отправной точкой для создания динамического сайта!

Перевод: foxweb на основе статьи и скриптов: http://tutorials.programmingsite.co.uk/phpmysql1.php.
256
09 декабря 2007 года
foxweb
1.0K / / 27.07.2005
Это руководство является логическим продолжением статьи "Работа с MySQL в PHP: с чего начать?". Здесь более подробно описано применение функций PHP для работы с MySQL.

(Будем считать, что вы уже прочитали статью "Работа с MySQL в PHP: с чего начать?" и готовы к решению более сложных задач.)

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

Текстовые файлы применяются для хранения информации всё реже и реже, и на это есть три главных недостатка:
  1. Невозможность индексировать данные. Чтобы это стало возможным, теоретически необходимо последовательно считать ВСЕ записи из файла. Это главная проблема. Она заключается в том, что время поиска (индексирования) прямопропорционально объёму хранящихся в текстовом файле данных.
  2. Невозможность эффективного метода разделения доступа различных пользователей к данным.
  3. В большистве случаев это неэффективное использование носителя. Обычно текстовые файлы не могут быть зашифрованы и сжаты, см.
Альтернатива, которая по моему мнению, является единственным применимым методом - это базы данных. Одна из наиболее популярных СУБД, используемых в интернете - это MySQL. Данные, сохранённые в БД легко индексируются, и управляются и хранятся очень эффективно. Кроме того, большинство СУБД предоставляют администратору расширенные средства управления базами данных, например такие как утилиты архивирования, восстановления, контроля и обслуживания.

Веб-сайты, написанные с использованием PHP довольно легко объединяются с MySQL. Это возможно благодаря тому, что PHP содержит стандартную библиотеку функций для работы с MySQL. PHP также может работать с MySQL посредство стандартного интерфейса ODBC для MySQL (существует драйвер MySQL ODBC), но гораздо эффективнее работа без лишних "прослоек" через стандартный модуль.

Остальная часть этой статьи является руководством о том, как:
  • Соединиться с сервером MySQL.
  • Выполнить SQL-запросы к БД.
  • Соединение с MySQL
Прежде, чем написанный вами скрипт, будет запрашивать, добавлять или обновлять информацию в БД, он должен выполнить соединение с сервером БД, чтобы все эти действия стали доступными.

Функции mysql_connect() и mysql_select_db() как раз предназначены для этой цели. В аргументах первой функции укажите по порядку: имя сервера MySQL, логин БД и пароль БД. После выполнения соединения необходимо выбрать базу данных, с которой мы будем работать.

Следующие две строки кода демонстрируют соединение с сервером и выбор БД:
 
Код:
@mysql_connect("[servername]", "[username]", "[password]") or die("Cannot connect to DB!");
@mysql_select_db("[databasename]") or die("Cannot select DB!");
Оператор @ был использован для того, чтобы подавить стандартные сообщения о возможных ошибках функций mysql_connect() и mysql_select_db(). Вместо них в случае ошибки функция die() остановит выполнение скрипта и выведет произвольное сообщение. Применение операторв @ и функции die() необязательно, но считается хорошим тоном, а остановка работы скрипта не позволит злоумышенникам подсмотреть служебную информацию в сообщения об ошибках.
Выполнение запросов к БД MySQL

Как только соединение и выбор БД будут выполнены, PHP-скрипт может выполнять операции над данными из БД посредством стандартных SQL-запросов. Функция mysql_query() используется для выполнения запросов к БД. В следующем примере PHP-скрипт выполняет запрос к таблице "tbl_login" для того, чтобы определить, если в этой таблице запись "пользователь/пароль" (для проверки подлинности пользователя).

Примечание:
Предполагается, что таблица "tbl_login" содержит три поля - login (тип VARCHAR - имя пользователя), password (тип VARCHAR - пароль), last_logged_in (тип DATETIME - дата последнего входа).

Код:
<?php

// переменные $username и $passwd должны быть переданы из формы  
// методом POST. для примера запишем их прямо здесь.
$username = "john";
$passwd = "mypassword";

// генерируем SQL-запрос, который выберет записи с заданными значениями $username и $passwd.
$sql = "SELECT * FROM tbl_login WHERE login = '".$username."' AND password = '".$passwd."'"; // SQL-запрос выполняется для текущей БД.
// результат выполнения записывается в переменную $r.
$r = mysql_query($sql);

// после выполнения mysql_query() перменная $r будет содержать полученные данные  
if (!$r) {
$err = mysql_error();
print $err;
exit();
}

// эта часть скрипта проверяет наличие в таблице записи с заданными
// значениями $username и $passwd, функция mysql_affected_rows()
// mysql_affected_rows() возвращает количество записей, возвращённых последним запросом  
// соответственно, если mysql_affected_rows()==0, то такой записи нет.  
if (mysql_affected_rows() == 0) {
print "Логин/пароль не верны. Попробуйте ещё раз.";
}
else {
// если запись найдена, то покажем пользователю время последнего входа $last
$row = mysql_fetch_array($r);
$last = $row["last_logged_in"];
print "Вы успешно авторизовались. Ваш послений вход был ".$last.".";
}

?>
Этот пример демонстрирует работу запроса SELECT языка SQL. Точно таким же способом выполняются другие виды запросов, например UPDATE, INSERT, DELETE и другие, используя функции mysql_query() and mysql_affected_rows().

This PHP scripting article is written by John L. John L is the Webmaster of The Ultimate BMW Blog! (http://www.bimmercenter.com).
The Ultimate BMW Blog!
Written by: John L

Оригинал руководства: http://www.beginnersphp.co.uk/MySQL-Database-Handling-in-PHP.php. Перевод: foxweb.
251
16 декабря 2007 года
SkyMаn
1.7K / / 31.07.2007
Естественно, тот, с которым вам будет легче работать Другой вопрос, насколько функционален будет тот или иной. Так если Вы все-таки выбрали несколько, но не можете определиться, рекомендую Вам взгялнуть на их возможности. А сделать это поможет так называемая матрица сравнения движков. В представленной таблице отобрано большинство существуемых CMS-ок, Вам остается только лишь отметитсь те, которые более всего Вас интересуют и нажать на кнопку, в результате чего - увидите таблицу с возможностями, с плюсами и минусами CMS.
256
17 декабря 2007 года
foxweb
1.0K / / 27.07.2005
Одна из лучших программ на мой взгляд PHP Expert Editor. Она позволяет редактировать несколько файлов одновременно, работает напрямую с FTP-серверами, имеет библиотеки ключевых слов и функции для HTML, CSS, JavaScript, PHP (практически отпадает необходимость пользования дополнительной литературой и программами), интегрируется с CHM-справкой по PHP (наводим текстовый курсор на функцию и по Ctrl+F1 получаем справку по этой функции), имеет панель инструментов для быстрой вставки тэгов HTML (как в "Ворде", отпадает необходимость редактировать файл в HTML-редакторе). Одно из важнейших достоинств этой программы - он имеет в своём составе мини-HTTP-сервер. Он запускается автоматически при нажатии F9, выполняет ваш скрипт и показывает сгенерированную страницу во встроенном браузере. Так что на первых порах можно обойтись вовсе без HTTP-сервера. Да что говорить, удобная программа и всё тут! А главное - бесплатная для пользователей из России. Есть поддержка русского языка, для этого скачайте файл русификации. Регистрация бесплатна. Подробно - здесь http://www.phpexperteditor.com.

Схожими возможностями обладает программа PSPad.
23K
01 февраля 2008 года
PHPGuru
2 / / 29.11.2006
Цитата: foxweb
Как определить IP-адрес пользователя учитывая прокси-сервер?
 
Код:
function getip()
{
  if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown"))
...



PHP FAQ: Определение IP адреса ;-)

244
23 апреля 2008 года
UAS
2.0K / / 19.07.2006
Расшифровка кодов состояния HTTP-запроса, отдаваемые сервером
Цитата:
100 Continue (продолжить)
101 Switching Protocols (переключение протоколов)
200 OK
201 Created (объект создан)
202 Accepted (информация принята)
203 Non-Authoritative Information (не заслуживающая доверия информация)
204 No Content (нет содержания)
205 Reset Content (восстановить исходное содержание)
206 Partial Content (частичное содержание)
300 Multiple Choices (несколько вариантов на выбор)
301 Moved Permanently (ресурс перемещен на постоянной основе)
302 Moved Temporarily (ресурс временно перемещен)
303 See Other (смотрите другой ресурс)
304 Not Modified (не изменился)
305 Use Proxy (используйте прокси-сервер)
400 Bad Request (некорректный запрос)
401 Unauthorized (нет разрешения)
402 Payment Required (требуется оплата)
403 Forbidden (доступ запрещен)
404 Not Found (ресурс не найден)
405 Method Not Allowed (недопустимый метод)
406 Not Acceptable (неприемлемый запрос)
407 Proxy Authentication Required (необходима регистрация на сервере-представителе)
408 Request Timeout (время обработки запроса истекло)
409 Conflict (конфликт)
410 Gone (ресурса больше нет)
411 Length Required (необходимо указать длину)
412 Precondition Failed (не выполнено предварительное условие)
413 Request Entity Too Large (запрашиваемый элемент слишком велик)
414 Request-URI Too Long (идентификатор ресурса в запросе слишком длинный)
415 Unsupported Media Type (неподдерживаемый тип устройства)
500 Internal Server Error (внутренняя ошибка сервера)
501 Not Implemented (функция не реализована)
502 Bad Gateway (дефект шлюза)
503 Service Unavailable (служба недоступна)
504 Gateway Timeout (время прохождения через шлюз истекло)



P.S.: не забываем так же смотреть спецификацию

7.4K
22 апреля 2009 года
T...H
159 / / 28.12.2008
Здарова программисты!!
Вопрос: что нужно для изучения PHP кроме текстового редактора, браузера и учебника по php??? :confused:
22K
22 апреля 2009 года
kotelius
75 / / 08.08.2008
Цитата: T...H
что нужно для изучения PHP кроме текстового редактора, браузера и учебника по php??? :confused:



В общем-то, если у вас есть учебник, то в первых главах обычно пишут, что необходимо :D.
Ну а если, еще не читали учебник, то необходим препроцессор PHP и веб-сервер. Можно конечно же обойтись и без веб-сервера, все зависит от того, где будет использоваться PHP.

Ну и конечно же, не забываем про желание его изучать :)

43K
07 мая 2009 года
metrA
15 / / 03.03.2009
Всем привет, если не сложно, те кто знает можете ответить на один вопрос...
Проблема состоит в том, что я, хоть убей, никак не пойму сути использования MySQL. Другими словами, как можно создать ту базу, к которой я потом буду обращаться из PHP-скриптов. В и-нете нарыл только то, что, мол, базу создает либо админ, либо из стороннней софтины, а так, чтоб создать ее скажем из скрипта - замалчивают...
Значит вопрос: можно ли из PHP скрипта создать базу, потом в той базе сделать таблицу и дальше с ней работать? Если нет прямого ответа, отошлите, как минимум, к ресурсу в сети.
ЗЫ. Заранее всем спасибо!
12
07 мая 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: metrA

Значит вопрос: можно ли из PHP скрипта создать базу, потом в той базе сделать таблицу и дальше с ней работать?


Можно. Не поленись изучить SQL язык.
http://www.mysql.ru/docs/man/
http://www.mysql.ru/docs/gruber/
http://www.mysql.ru/docs/tkachenko/

43K
07 мая 2009 года
metrA
15 / / 03.03.2009
Цитата: alekciy



Конечно спасибо за ссылки на ресурс mysql.ru, но вопрос в другом, я, для того чтоб начать изучение SQL, хотел бы иметь уже тестовую платформу, на которой проводить эксперимент буду...
На данный момент у меня на буке стоит Apache+MySQL+PHP(модуль Apache), но я не могу понять одного, если скажем, я буду писать реальный сайт, то каким образом я буду работать с базами на удаленном хостинге, т.е., каким образом/образами, я смогу получить доступ к базам.
Эти базы мне создаст админ хостинга, я - получив права доступа, или иначе.:confused:

12
07 мая 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: metrA

Эти базы мне создаст админ хостинга, я - получив права доступа


Да.
_

43K
07 мая 2009 года
metrA
15 / / 03.03.2009
Цитата: alekciy
Да.
_



Спасибо, т.е. если я ща под консолью создам базу, скажем test (хотя она там уже в SQL есть), потом, при подключении к ней из РНР я смогу создать таблицу, работать с ней... и этот способ потом будет работать на удаленном хостинге где я не являюсь админом?:)

12
07 мая 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: metrA
Спасибо, т.е. если я ща под консолью создам базу, скажем test (хотя она там уже в SQL есть), потом, при подключении к ней из РНР я смогу создать таблицу, работать с ней... и этот способ потом будет работать на удаленном хостинге где я не являюсь админом?:)


Самому попробовать религия не позволяет? См. тему выше, там фоксвеб достаточно нормально изложил, что нужно делать.

Админом ты там не будешь. Тебе дадут базу (может две, три, пять, зависит от хостера) в которой ты и будешь делать что хочешь.

51K
14 июля 2009 года
jolinuer
4 / / 12.07.2009
просьба читать сообщения до степени усвоения смысла. Как можно спутать Java и VM-код для апплетов или сервлетов, если была фраза: «Java тяжело порвать при обращении к уровню компилируемого кода»?
51K
14 июля 2009 года
jolinuer
4 / / 12.07.2009
просьба читать сообщения до степени усвоения смысла. Как можно спутать Java и VM-код для апплетов или сервлетов, если была фраза: «Java тяжело порвать при обращении к уровню компилируемого кода»?
49K
02 декабря 2009 года
NMaks
23 / / 23.11.2009
Что это за знак:
<?=$somevar?>
Sorry:confused:
13
02 декабря 2009 года
RussianSpy
3.0K / / 04.07.2006
Короткая форма вывода переменной в браузер (еще и с ошибкой - нет точки с запятой). Аналог строки
 
Код:
<?php
echo $somevar;
?>
55K
11 декабря 2009 года
pro100gosu1991
3 / / 11.12.2009
Качайте это, тут всё описано...
49K
14 декабря 2009 года
NMaks
23 / / 23.11.2009
Я не знаю как правильно сформулировать вопрос. Но постараюсь.
В моём опроснике есть неприятный момент. Если нажимать кнопки навигации встроенные в браузеры(Назад, Вперёд) ответы фиксируются дважды. как этого избежать?
53K
28 декабря 2009 года
kusanagi
1 / / 11.09.2009
Цитата: pro100gosu1991
Качайте это, тут всё описано...



не скажу что все, примерно половина

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог