Справочники, инструменты, документация

PHP: Формы (cниппеты)

Коллекция готовых полезных функций и коротких сниппетов для работы с формами.

Атрибуты

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">

<form action="" method="post" enctype="multipart/form-data">

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

<form action="" method="post">

Поля

<input id="inp" type="text" name="user" value="<?php echo $_POST['user'];?>" />

<input id="inp" type="password" name="pass" value="<?php echo $_POST['pass'];?>" />

<input name="submit" type="submit" value="Войти"/>

<input type="hidden" name="user" value="5" />

<input name="userfile" type="file" size="70"></p>

Обработка

empty() - пустой
isset() - установлено

$user = $_POST['user'];
$user = $_GET['user'];

if(isset($user))
{ 
 $user = addslashes($user);
 $user = htmlspecialchars($user); // заменяем спецсимволы на их HTML-мнемоники
 $user = stripslashes($user); // вырезаем знак обратного слеша
 $user = str_replace("/","",$user); // вырезаем слеш
 $user = str_replace(".","",$user);  // вырезаем точки
 $user = str_replace("`","",$user); // вырезаем обратную кавычку
}

// или

if(isset($user))
{ 
 if (preg_match("/[0-9a-z_]/i", $user)) 
 {
 // действия над именем
 } 
 else { echo "Вы не ввели имя!"; } 
}

Проверка

if(isset($_POST['submit']))
{
 echo "<p><b id=1>Вопрос добавлен в базу</b></p>";
}

Ошибки

if(!empty($ups))
{
 $ups = '<b id="0">'.$ups.'</b>';
 echo $ups;
}

Не ошибки

if(!empty($oke))
{
 $oke = '<b id="1">'.$oke.'</b>';
 echo $oke;
}

Отправка на e-mail

mail("mail@mail.com", "тема письма", $message,
 "From: webmaster@$SERVER_NAME\r\n"
."Reply-To: webmaster@$SERVER_NAME\r\n"
."X-Mailer: PHP/" . phpversion());

$ip = $_SERVER['SERVER_ADDR'];

$text = 'текст письма';
$sub = 'тема письма';
$name = 'имя отправителя';
$email = 'емаил отправителя';
$cms_email = 'емаил админа сайта';

if(empty($ups))
{
 $text = str_replace("\n",'<br>',$text);//замена

 $mes = "<a href=http://".$_SERVER['HTTP_HOST'].">".$_SERVER['HTTP_HOST']."</a>
 Пишет: $name<br><br>
 $text<br><br>";

 $sub = '=?utf-8?B?'.base64_encode($sub).'?=';

 $un = strtoupper(uniqid(time()));

 $headers = "From:$email<$email>\n";
 $headers .= "Subject:$sub\n";
 $headers .= "X-Mailer:PHPMail Tool\n";
 $headers .= "Reply-To:$email\n";
 $headers .= "Mime-Version:1.0\n";
 $headers .= "Content-Type:multipart/mixed;";
 $headers .= "boundary=\"----------".$un."\"\n\n";
 $headers .= "------------".$un."\nContent-Type:text/html; charset=\"utf-8\"\n";
 $headers .= "Content-Transfer-Encoding:quoted-printable\n\n$mes\n\n";

 //$verify = mail($cms_email, $sub, '', $headers); 

 if($verify == true)
 {
  $oke .= 'Письмо отправлено<br>';
 }
 else{
  $ups .= 'Глобальная ошибка! Письмо не отправлено, напишите на '.$cms_email.'<br>';
 }
}

Получите значение из параметров URL

// index.php?name=david
echo $_GET['name'];

Проверьте, существует ли переменная запроса

if (isset($_GET['name'])) {
    // exists
}

Отправить данные формы в PHP-скрипт, HTML-файл

<form action="login.php" method="post">
    Username: <input type="text" name="username"><br>
    Password: <input type="password" name="password"><br>
    <input type="submit">
</form>

login.php:

$user = $_POST['username'];
$pass = $_POST['password'];
echo 'Your username is ' . $user . ' and your password is ' . $pass . '.';

Отправить простое письмо

mail("exaple@domain.ru", "Subject", "Message");

Отправить письмо c заголовком

mail("exaple@domain.ru", "Subjectt", "Message",
  "From: exaple@yandex.ru\r\n"
  ."Reply-To: exaple@yandex.ru\r\n"
  ."X-Mailer: PHP/" . phpversion());
$to = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);

Отправить HTML письмо

$to= "Konstantin <exaple@domain.ru>" . ", " ; // обратите внимание на запятую
$to .= "exaple <exaple@yandex.ru>";
$subject = "Subject";
$message = '<html><head><title>Test</title></head><body><p>Test</p></body></html>';
$headers= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$headers .= "From: Myself <exaple@gmail.com>\r\n";
$headers .= "Cc: birthdayarchive@example.com\r\n";
$headers .= "Bcc: birthdaycheck@example.com\r\n";
mail($to, $subject, $message, $headers);

Несколько значений в форме в виде массива

<form method="POST" action="eat.php">
    <select name="lunch[]" multiple>
        <option value="pork">BBQ Pork Bun</option>
        <option value="chicken">Chicken Bun</option>
        <option value="lotus">Lotus Seed Bun</option>
        <option value="bean">Bean Paste Bun</option>
        <option value="nest">Bird-Nest Bun</option>
    </select>
    <input type="submit" name="submit">
</form>
<?php
if (isset($_POST['lunch'])) {
    foreach ($_POST['lunch'] as $choice) {
        print "You want a $choice bun. <br/>";
    }
}
?>

Обработка форм функциями

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    process_form();
} else {
    show_form();
}
function process_form() {
    print "Hello, ". $_POST['my_name'];
}
function show_form() {
    print
<<<_HTML_
<form method="POST" action="$_SERVER[PHP_SELF]">
Your name: <input type="text" name="my_name">
<br/>
<input type="submit" value="Say Hello">
</form>
_HTML_;
}
?>