Конструкция открывается и закрывается:
<?php Здесь пишется код ?>
Вид переменных:
$a, или $blababla, или $supermegaparamname
Особый гемор:
- всегда ставить точку с запятой «;» в конце строки
- стараться избегать пробелов в конце строк, это ведет к ошибкам
Присвоение значений переменным:
$a = 10;
$a = «Аз есьм значение переменной»;
Операции с переменными самые обычные:
$a = $a+1; увеличивает на 1 значение
$a++; увеличивает на 1 значение
$a—; тут два минуса, уменьшает на 1 значение
$a = $b * $c; перемножение
Вывод значений:
echo «Да будет переменная $a»; для строки единичных значений
print $a; — для массивов чаще
Массив создается повторением переменной с разными значениями:
$param = «Иван»;
$param = «Иванович»;
$param = 21;
$param = «мужчина»;
Встроенные функции:
count($param); — посчитает количество ячеек в массиве
isset($param); — проверит, есть ли такая переменная
empty($param); — проверит, пустая я ли переменная
date(«y-m-d»); — выводит текущую дату. Можно играть кеглем и разделителем
date(«h-i-s»); — выводит текущее время. Можно играть разделителем.
Работа с функциями php
Объявляем функцию с именем hello и переменной $name. Функция введет имя во фразу, а выведется при обращении к имени функции с назначением значения в функцию.
function hello($name){
echo «$name, привет!»
}
hello(«Степан»);
Тоже самое с двумя переменными:
function hello($name, $sur_name){
echo «$name $sur_name, привет!»
}
hello(«Степан», «Чельцов»);
Тоже самое, переменные определяются отдельно от функции:
function hello($name, $sur_name){
echo «$name $sur_name, привет!»
}
$name = «Степан»;
$sur_name = «Чельцов»;
hello($name, $sur_name);
Выдаем результат при вызове через return:
function $matem($b){
$b = $b*2;
return $b;
}
$result = matem(«10»);
Пример с массивом:
$mas10[] = «Иван»;
$mas10[] = «Иванов»;
$mas10[] = 21;
$mas10[] = «муж.»;
$mas11[] = «Иван»;
$mas11[] = «Иванов»;
$mas11[] = 21;
$mas11[] = «муж.»;
$mas12[] = «Иван»;
$mas12[] = «Иванов»;
$mas12[] = 21;
$mas12[] = «муж.»;
function anketa(){
foreach($array as $item){
echo «$item <br>»;
}
}
anketa(mas10);
anketa(mas11);
anketa(mas12);
Вызов значения и функций из других файлов. Вызов через include не останавливает работу страницы в случае ошибки:
include «some_function.php»;
Вызов значения и функций из других файлов. Вызов через require останавливает работу всей страницы в случае ошибки:
require «some_function.php»;
Вызов значения и функций из других файлов только один раз:
include_once «some_function.php»;
Вызов значения и функций из других файлов только один раз:
require_once «some_function.php»;
Глобальные массивы
Массив POST
Массив POST хранит данные из форм сайта в заданные файлы:
form method = «post» action = «tutor-putor.php>
<input type = «text» name = «login» value = «Логин»/><br>
<input type = «email» name = «email» value = «Почта»/><br>
<input type = «submit» name = «save» value = «Сохранить»/><br>
</form>
В файле tutor-putor.php следующее содержимое для приема и вывода данных:
<?php
$_POST[«login»];
$_POST[«email»];
?>
Чтобы защитить сайт от инъекций, начинаем чистить ввод. Сначала от html-текстов через strip_tags:
$login = strip_tags($_POST[‘login’]);
Уберем пробелы из логина через trim:
$login = strip_tags(trim($_POST[‘login’]));
Преобразуем спец.символы в их код через htmlspecialchars:
$login = htmlspecialchars(strip_tags(trim($_POST[‘login’])));
Сделаем очистку через функцию:
function clear_data($same_data){
return htmlspecialchars(strip_tags(trim($same_data)));
}
$login = clear_data($_POST[‘login’]);
$email = clear_data($_POST[’email’]);
Массив GET
Массив нужен для создания динамики на сайте. С одной стороны, можно передать данные на сервер. С другой, определить содержимое сайта в зависимости от параметра.
Чтобы передать данные можно использовать метод GET:
form method = «get» action = «tutor-putor.php>
<input type = «text» name=»login» value = «Логин»/><br>
<input type = «email» name = «email» value = «Почта»/><br>
<input type = «submit» name = «save» value = «Сохранить»/><br>
</form>
<?php
$_GET[«login»];
$_GET[«email»];
?>
Выдача получится через адресную строку:
http://cheltsov.ru/tutor-putor.php?login=vasya&email=vasya@gmail.com&save=Сохранить
Пример работы без предварительной подготовки через GET:
<?php
if($_GET[‘id’]==1)
echo «Пункт номер 1»;
else
echo «Другой пункт»;
?>
Переход по адресу с заданным значением:
http://cheltsov.ru/tutor-putor.php?id=1
Выдаст
Пункт номер 1
Изменим содержимое сайта в зависимости от параметра:
<?php
switch($page){
case = «main»;
$title = «Главная страница»;
$text = «Это главная страница»;
break;
case = «news»;
$title = «Страница новостей;
$text = «Это новостная страница»;
break;
default;
$title = «404 страница;
$text = «Это страница для ошибочных данных»;
break;
}
?>
<h1><?php echo $title ?></h1>
<p><?php echo $text ?></p>
http://cheltsov.ru/tutor-putor.php?page=main
Выдаст
Главная страница
Это главная страница
Массив SERVER
Массив SERVER для получения данных от сервера. Например, получение IP-адреса посетителя:
$_SERVER[‘REMOTE_ADDR’]
Или информация про браузер посетителя:
$_SERVER[‘HTTP_USER_AGENT’]
Вывод содержимого ответа сервера в явном виде:
<html>
<body>
<pre>
<?php
print_r($_SERVER);
?>
</pre>
</body>
</html>
Константы
Определяем константы через define:
<?php
define («MYNAME»,»Stepan»);
echo MYNAME;
?>
Подстановка адреса нашего сайта для указания неполного адреса при программировании:
<?php
define («BASE_URL»,»http://cheltsov.ru/»);
?>
<img src=»<?php BASE_URL;?>images/logo.png»/>
Cookies
Куки нужны для сохранения информации пользователя при работе с сайтом. Например, галочки «Запомнить меня» на разных сайтах сохраняет значение логина и пароля сохраняет файл cookies.
Чтобы создать файл cookies, надо:
<?php
setcookie(«name»,»Stepan», time()+36000);
?>
<DOCTYPE>
<html>
Чтобы вызвать вызвать значение сохраненной куки, пишем $_COOKIE[»]:
<body>
<?php
echo $_COOKIE[‘name’];
?>
</body>
</html>
Получаем:
Stepan
<?php
if (isset($_POST[‘send’])){
$bg = $_POST[‘bg’];
setcookie(«background»,»$bg», time()+3600);
}
?>
<DOCTYPE>
<html>
<head></head>
<body>
<?php if(isset($_COOKIE[‘background’])){?>
<style>
body
{
background:<?php echo $_COOKIE[‘background’];?>;
}
</style>
<?php }?>
<form method=»post» action=»»>
Выберите цвет фона страницы:<br>
<select name=»bg»>
<option value=»red»>Красный</value>
<option value=»black»>Черный</value>
<option value=»yellow»>Желтый</value>
</select>
<input type=»submit» name=»send» value=»Выбрать»/>
</form>
<p>В куки записан цвет <?php echo $_COOKIE[‘background’];?></p>
</body>
</html>
Чтобы удалить куку, есть способы через вывод отрицательного времени жизни куки:
setcookie(«background»,»$bg», time()-3600);
Или через обнуление данных:
setcookie(«background»,»»);
Или проще:
setcookie(«background»);
Сессии
Сессии выполняют примерно те же роли, что и куки. Разница в количестве сохраняемых данных. Куки могут сохранять немного, а сессии много. Куки хранятся долго, независимо от открытости браузера. А сессии обычно заканчиваются при закрытии браузера.
Начинаем объявление сессии:
<?php
session_start();
if (isset($_POST[‘send’])){
$_SESSION[‘name’] = strip_tags(trim($_POST[‘name’]));
}
if(!isset($_SESSION[‘name’])){
?>
<DOCTYPE>
<html>
<head></head>
<body>
<form method=»post» action=»»>
Звать как?<br>
<input type=»text» name=»name» value=»Имя»/>
<input type=»submit» name=»send» value=»Выбрать»/>
</form>
<?php }
else{
echo «Hello, «.$_SESSION[‘name’];
}
?>
</body>
</html>
Уничтожить сессию можно командой session_destroy():
session_destroy();
Частичное уничтожение сессии (отдельные данные) делаем через unset:
unset($_SESSION[‘name’]);
Подключение базы данных
Если база уже создана, с ней надо работать. Подключается база готовой функцией:
mysql_connect(«localhost»,»root»,»12345″);
mysql_select_db(«base_name»);
Красивый подход через переменные:
$connection = mysql_connect(«localhost»,»root»,»12345″);
$data_base = mysql_select_db(«base_name»);
Добавим кодировку:
mysql_set_charset(«utf8»);
Или так:
mysql_query(«SET NAMES ‘UTF8′»);
Проверим соединение:
<?php
if(!$connection || !$data_base){
exit(mysql_error());
}
else{
echo «Соединение успешно прошло»;
}
?>
После окончания работы с базой данных закрываем соединение через:
mysql_close();
Выборка из базы данных. Готовим выборку и передаем все в переменную:
$result = mysql_query(«SELECT * FROM base_name»);
mysql_close();
Создаем массив для всех полученных данных, чтобы работать с ним:
$row = mysql_fetch_array($result);
Выводим какую-нибудь ячейку из полученного массива:
echo $row[‘title’].»<br>»;
echo $row[‘text’];
Чтобы вывести все данные по строчно из базы, введем условие while:
while($row = mysql_fetch_array($result)){
echo $row[‘title’].»<br>»;
echo $row[‘text’];
}
И добавим верстки к нашему выводу данных:
<?php
while($row = mysql_fetch_array($result)){
?>
<div class=»content»>
<h2><?php echo $row[‘title’];?></h2>
<p><?php echo $row[‘text’];?></p>
</div>
<?php
}
?>
Добавим в выборку сортировку по какому-нибудь параметру. Для этого добавляем при формировании массива «ORDER BY«. Значение DESC сортирует в обратном порядке по полю id:
$result = mysql_query(«SELECT * FROM base_name ORDER BY id DESC»);
Ограничим выборку количеством выдачи, скажем только 25 результатов. Используем команду LIMIT:
$result = mysql_query(«SELECT * FROM base_name ORDER BY id DESC LIMIT 25»);
Введем фильтрацию выдачи по заданному слову через команду WHERE:
$result = mysql_query(«SELECT * FROM base_name WHERE text=’новость’ ORDER BY id DESC LIMIT 25»);
Ограничим получение данных из базы перечислением нужных колонок. Убираем * и пишем через запятую имена полей:
$result = mysql_query(«SELECT title,text FROM base_name WHERE text=’новость’ ORDER BY id DESC LIMIT 25»);
В выборку можно подставлять переменные, которые где-то определяются или вычисляются.
Как добавлять записи в бд через формы
Для соединения с базой сделаем отдельный файл подключения с содержимым, назовем его «db.php»:
<?php
$connection = mysql_connect(«localhost»,»root»,»12345″);
$data_base = mysql_select_db(«base_name»);
mysql_set_charset(«utf8»);
if(!$connection || !$data_base){
exit(mysql_error());
}
else{
echo «Соединение успешно прошло»;
}
?>
Создаем форму добавления:
<form method = «post» action = «tutor-putor.php>
<input type = «text» name = «title» value = «Заголовок»/><br>
<textarea cols=»40″ name=»text» rows=»10″ value=»Текст сообщения»><?textarea><br>
<input type = «text» name = «author» value = «Автор»/><br>
<input type = «hidden» name = «date» value = «<?php echo date(‘Y-m-d’)?>»/><br>
<input type = «hidden» name = «time» value = «<?php echo time(‘H:i:s’)?>»/><br>
<input type = «submit» name = «add» value = «Отправить»/><br>
</form>
Подключаем нашу базу через include_once:
include_once(«db.php»);
Принимаем значения из формы в переменные:
if(isset($_POST[‘add’])){
$title = strip_tags(trim($_POST[‘title’]));
$text =strip_tags(trim($_POST[‘text’]));
$author =strip_tags(trim($_POST[‘author’]));
$date =strip_tags(trim($_POST[‘date’]));
$time =strip_tags(trim($_POST[‘time’]));
Делаем запрос к базе:
mysql_query(» INSERT INTO data_base(title, text,author, date, time) VALUES (‘$title’.’$text’.’$author’.’$date’.’$time’)»);
mysql_close();
echo «Данные успешно добавлены.»;
} //закрыли if сверху
Как обновлять данные в базе
Если нам надо что-то поправить в уже введенной информации, надо ее сначала запросить на вывод.
<?php
include_once(«db.php»);
$id = $_GET[‘id’];
$result = mysql_query(«SELECT title,text,author,date,time FROM base_name WHERE id=’$id'»);
?>
Создаем цикл заполнения:
while($row = mysql_fetch_array($result)){
}
Подставляем значения в форму редактирования:
<form method = «post» action = «tutor-putor.php?id=<?php echo $id; ?>»>
<input type = «text» name = «title» value = «<?php echo $row(‘title’);?>»/><br>
<textarea cols=»40″ name=»text» rows=»10″ value=»<?php echo $row(‘text’);?>»><?textarea><br>
<input type = «text» name = «author» value = «<?php echo $row(‘author’);?>»/><br>
<input type = «submit» name = «save» value = «Изменить»/><br>
</form>
Далее в форме мы редактируем данные, если необходимо. Чтобы данные сохранились, надо сделать:
if(isset($_POST[‘save’])){
$title = strip_tags(trim($_POST[‘title’]));
$text =strip_tags(trim($_POST[‘text’]));
$author =strip_tags(trim($_POST[‘author’]));
mysql_query(» UPDATE data_base SET title=», text=»,author=» WHERE id=’$id'»);
mysql_close();
echo «Данные успешно обновлены.»;
}
Удаление записей из базы данных
Повторяем ту же конструкцию, только меняем запрос к базе:
<?php
include_once(«db.php»);
$id = $_GET[‘id’];
mysql_query(«DELETE FROM base_name WHERE id=’$id’ «);
mysql_close();
echo «Данные успешно удалены.»;
?>