Рубрика: PHP

  • Категории

    <?
    include 'includes/sql.php';
    $a=explode(',',$_POST['cat']);
    print_r($a);
    foreach($a as $k=>$v){
    $d=mysql_query("insert into `cat` (`name`,`parent`) values ('$v','0') ");}
    if ($d==true) echo 'true';
    
    $d=mysql_query("select `id`,`name`,`parent` from `cat` where `parent`='0'");
    var_dump($d);
    while($l=mysql_fetch_assoc($d)){
    
    ?>
    <ul>
    <li><?= $l['name'];?></li>
    <?$d2=mysql_query("select `id`,`name`,`parent` from `cat` where `parent`='{$l['id']}'");
    while($l2=mysql_fetch_assoc($d2)){ ?>
    <ul><li><?= $l2['name'];?>
    <?$d3=mysql_query("select `id`,`name`,`parent` from `cat` where `parent`='{$l2['id']}'");
    while($l3=mysql_fetch_assoc($d3)){ ?>
    <ul><li><?= $l3['name'];?></li></ul>
    <?}?>
    </li></ul>
    <?}?>
    </ul>
    <?}?>
    
    <form method="post">
    <input type='text' name='cat'>
    <input type='submit' name='send'>
    </form>

     

  • Удаление пользователя с БД не подтвердивших email

    $result4 = mysql_query ("SELECT avatar FROM users WHERE activation='0' AND UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 3600");//извлекаем аватарки тех пользователей, которые в течении часа не активировали свой аккаунт. Следовательно их надо удалить из базы, а так же и файлы их аватарок
    
    if (mysql_num_rows($result4) > 0) {
    $myrow4 = mysql_fetch_array($result4);	
    do
    {
    //удаляем аватары в цикле, если они не стандартные
    if ($myrow4['avatar'] == "avatars/net-avatara.jpg") {$a = "Ничего не делать";}
    else {
      unlink ($myrow4['avatar']);//удаляем файл
      }
    }
    while($myrow4 = mysql_fetch_array($result4));
    }
    mysql_query ("DELETE FROM users WHERE activation='0' AND UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 3600");//удаляем пользователей из базы
    

     

  • Загрузка аватарки на страницу

    if (empty($_FILES['fupload']['name']))
    {
    //если переменной не существует (пользователь не отправил изображение),то присваиваем ему заранее приготовленную картинку с надписью "нет аватара"
    $avatar = "avatars/net-avatara.jpg"; //можете нарисовать net-avatara.jpg или взять в исходниках
    }
    
    else 
    {
    //иначе - загружаем изображение пользователя
    $path_to_90_directory = 'avatars/';//папка, куда будет загружаться начальная картинка и ее сжатая копия
    
      
    if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))//проверка формата исходного изображения
       {	
       	 	
        $filename = $_FILES['fupload']['name'];
        $source = $_FILES['fupload']['tmp_name'];	
        $target = $path_to_90_directory . $filename;
        move_uploaded_file($source, $target);//загрузка оригинала в папку $path_to_90_directory
    
      if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
      $im = imagecreatefromgif($path_to_90_directory.$filename) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
      }
      if(preg_match('/[.](PNG)|(png)$/', $filename)) {
      $im = imagecreatefrompng($path_to_90_directory.$filename) ;//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
      }
      
      if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
        $im = imagecreatefromjpeg($path_to_90_directory.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
      }
      
    //СОЗДАНИЕ КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ ВЗЯТО С САЙТА www.codenet.ru
    
    // Создание квадрата 90x90
    // dest - результирующее изображение 
    // w - ширина изображения 
    // ratio - коэффициент пропорциональности 
    
    $w = 90;  // квадратная 90x90. Можно поставить и другой размер.
    
    // создаём исходное изображение на основе 
    // исходного файла и определяем его размеры 
    $w_src = imagesx($im); //вычисляем ширину
    $h_src = imagesy($im); //вычисляем высоту изображения
    
             // создаём пустую квадратную картинку 
             // важно именно truecolor!, иначе будем иметь 8-битный результат 
             $dest = imagecreatetruecolor($w,$w); 
    
             // вырезаем квадратную серединку по x, если фото горизонтальное 
             if ($w_src>$h_src) 
             imagecopyresampled($dest, $im, 0, 0,
                              round((max($w_src,$h_src)-min($w_src,$h_src))/2),
                              0, $w, $w, min($w_src,$h_src), min($w_src,$h_src)); 
    
             // вырезаем квадратную верхушку по y, 
             // если фото вертикальное (хотя можно тоже серединку) 
             if ($w_src<$h_src) 
             imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
                              min($w_src,$h_src), min($w_src,$h_src)); 
    
             // квадратная картинка масштабируется без вырезок 
             if ($w_src==$h_src) 
             imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src); 
         
    
    $date=time(); //вычисляем время в настоящий момент.
    imagejpeg($dest, $path_to_90_directory.$date.".jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.
    
    //почему именно jpg? Он занимает очень мало места + уничтожается анимирование gif изображения, которое отвлекает пользователя. Не очень приятно читать его комментарий, когда краем глаза замечаешь какое-то движение.
    
    $avatar = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара.
    
    $delfull = $path_to_90_directory.$filename; 
    unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.
    }
    else 
             {
         //в случае несоответствия формата, выдаем соответствующее сообщение
             
    exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>"); //останавливаем выполнение сценариев
    
           }
    //конец процесса загрузки и присвоения переменной $avatar адреса загруженной авы
    }
    

     

  • Как удалить теги на PHP чтобы слова не сливались?

    function mystriptags($str,$tags)
    {
      $cat=str_replace("<"," <",$str);
      $cat =nl2br($cat);
      if(strlen($tags)>2)
        $cat=strip_tags($cat,$tags);
      else
        $cat=strip_tags($cat);
      $textadd=str_replace("\n"," ",$textadd);
      $textadd=str_replace("\r"," ",$textadd);
      $textadd=str_replace("\t"," ",$textadd);
      $cat=str_replace("   "," ",$cat);
      $cat=str_replace("  "," ",$cat);
      $cat=str_replace("\"","",$cat);
      $cat=str_replace("&gt;","",$cat);
      $cat=trim($cat);
    
      return $cat;
      
    }

     

  • Получить элементы по атрибуту из DOM

    function get_element_by_attr($dom,$attr,$value)
    {
    $finder = new DomXPath($dom);
    $nodes = $finder->query("//*[contains(concat(' ', normalize-space(@{$attr}), ' '), ' $value ')]");
    return $nodes;
    }

     

  • PHP код перевода относительного пути в абсолютный путь

    function rel2abs($rel, $base)
    {
      $base1=parse_url($url);
      $url1=$base1['host'];
    if(mb_strpos("-".$rel,$base)!=false)
      return $rel;
    if(parse_url($rel, PHP_URL_SCHEME) != '')
      if(mb_strpos("-".$rel,$url1)!=false)
      return $rel;
    
    if(mb_strpos("-".$base,"http://")==false)
      {
      $base="http://".$base;
      }
      /* return if already absolute URL */
        if (parse_url($rel, PHP_URL_SCHEME) != '') 
        {
        return $rel;
        }
    
        /* queries and anchors */
        if ($rel[0]=='#' || $rel[0]=='?') 
      {
      if(mb_strpos("-".$base.$rel,"http://")==false)
      return "http://".$base.$rel;
      return $base.$rel;
      }
    
        /* parse base URL and convert to local variables:
           $scheme, $host, $path */
        extract(parse_url($base));
    
        /* remove non-directory element from path */
        $path = preg_replace('#/[^/]*$#', '', $path);
    
        /* destroy path if relative url points to root */
        if ($rel[0] == '/') $path = '';
    
        /* dirty absolute URL */
        $abs = "$host$path/$rel";
    
        /* replace '//' or '/./' or '/foo/../' with '/' */
        $re = array('#(/\.?/)#', '#/(?!\.\.)[^/]+/\.\./#');
        for($n=1; $n>0; $abs=preg_replace($re, '/', $abs, -1, $n)) {}
    
        /* absolute URL is ready! */
        //return $scheme.'://'.$abs;
      if(mb_strpos("-".$abs,"http://")==false)
      return "http://".$abs;
      return $abs;
    }

     

  • Настройка базы данных UTF-8

    mysql_query(«SET CHARSET utf8»);
    mysql_query(«SET COLLATION_CONNECTION=utf8»);
    mysql_query(«SET CHARACTER_SET_CLIENT=utf8»);
    mysql_query(«SET CHARACTER_SET_RESULTS=utf8»);
    mysql_query(«SET CHARACTER_SET_CONNECTION=utf8»);

  • Функции для загрузки и сжатия файлов в своем блоге. GD LIB

    <?
    function cyrtolat($text)
    {
    $cyr  = array('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у', 
                'ф','х','ц','ч','ш','щ','ъ', 'ы','ь', 'э', 'ю','я','А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У',
                'Ф','Х','Ц','Ч','Ш','Щ','Ъ', 'Ы','Ь', 'Э', 'Ю','Я' );
    $lat = array( 'a','b','v','g','d','e','yo','zh','z','i','y','k','l','m','n','o','p','r','s','t','u',
                'f' ,'h' ,'ts' ,'ch','sh' ,'sch' ,'', 'i', '', 'e' ,'yu' ,'ya','A','B','V','G','D','E','YO','Zh','Z','I','Y','K','L','M','N','O','P','R','S','T','U',
                'F' ,'H' ,'Ts' ,'Ch','Sh' ,'SCH' ,'' ,'I','','E' ,'YU' ,'YA' );
    
    return str_replace($cyr,$lat, $text);
    }
    ?>
    function makeurl($text)
    {
    $spec  = array(',','.','!','@','#','$','%','^','&','*','(',')','_','+','=','~','`','\'','\\','/','"',';',':', 
                '<','>','?','{','}','[',']', '|',' ','\t','»','«');
    $rep = array('','','','','','','','','','','','','','','','','','','','','','','','','','','','','','', '','-','-','','');
    $text = str_replace(html_entity_decode('&mdash;'),'',$text);
    $text=mb_str_replace($spec, $rep, $text);
    $text=mb_str_replace("--","-", $text);
    $text=mb_str_replace("--","-", $text);
    $text=mb_str_replace("--","-", $text);
    
    return $text;
    }

     

    function compress($path,$file)
    {
    $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
    error_reporting(0);
    ini_set('memory_limit', '512M');
        if($ext=='jpg' || $ext=='jpeg'|| $ext=='png'|| $ext=='gif')
          {
          $stamp = imagecreatefrompng($_SERVER['DOCUMENT_ROOT'].'/images/wm.png');
          $sfile=$path."s_".$file;
          $lfile=$path."l_".$file;
          $fullfile=$path.$file;
          if(!($im = imagecreatefromjpeg($fullfile)))
            $im = imagecreatefrompng($fullfile);
          if($im)
            {
            $marge_right = 10;
            $marge_bottom = 10;
            $sx = imagesx($stamp);
            $sy = imagesy($stamp);
            imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));
            imagejpeg($im,$fullfile);
            $iw = imagesx($im); 
            $ih = imagesy($im);
            $k = 650 / $iw;
            if($k>1)$k=1;
            $sx = floor($iw * $k); $sy = floor($ih * $k);
            $im_m = imagecreatetruecolor($sx, $sy);
            imagealphablending( $im_m, false );
            imagesavealpha( $im_m, true );
            $transparent = imagecolorallocatealpha($im_m, 255, 255, 255,255);
            
            imagefilledrectangle($im_m, 0, 0, $sx, $sy, $transparent);				
            imagecopyresampled($im_m, $im, 0, 0, 0, 0, $sx, $sy, $iw, $ih);
            $r_l = imagejpeg($im_m,$lfile);
    
            $iw = imagesx($im); $ih = imagesy($im);
            $k = 200 / $iw;
            if($k>1)$k=1;
            $sx = floor($iw * $k); $sy = floor($ih * $k);
            $im_m = imagecreatetruecolor($sx, $sy);
            imagealphablending( $im_m, false );
            imagesavealpha( $im_m, true );
            $transparent = imagecolorallocatealpha($im_m, 255, 255, 255, 127);
            imagefilledrectangle($im_m, 0, 0, $sx, $sy, $transparent);				
            imagecopyresampled($im_m, $im, 0, 0, 0, 0, $sx, $sy, $iw, $ih);
            $r_s = imagejpeg($im_m,$sfile);
            }
          else
            {
            copy($fullfile, $lfile);
            copy($fullfile, $sfile);
            }
          }
      
      
    error_reporting(1);
    }

     

    function getpath($max)
      {
      $docroot=$_SERVER['DOCUMENT_ROOT']."/";
      include $docroot."config.php";
      
      
      if($max<10)$max='00'.$max;
            else
          if($max<100)$max='0'.$max;
          $targetPath=$docroot.'uploads/'.$max[0].'/'.$max[1].'/'.$max[2].'/';
          
      return $targetPath; 
      }
    mysql_connect("localhost","root","");
    mysql_select_db("img");
    mysql_query("insert into `img` (`path`) values 
    ('{$_FILES[fileToUpload][name]}')");
    $t=mysql_query(
    "select `id` from `img` order by `id` desc limit 1");
    $res=mysql_fetch_array($t);//последний id
    $ext = strtolower(pathinfo($_FILES[fileToUpload][name], 
    PATHINFO_EXTENSION));//расширение файла
    
    $filename=makeurl(cyrtolat(
    pathinfo(
    $_FILES[fileToUpload][name],PATHINFO_FILENAME)));//имя в латиницу и убираем спец символы
    $file=$filename.".".$ext;
    $path=getpath($res['id']);//получаем полный путь с учетом id ->/0/0/1/
    move_uploaded_file( $_FILES[fileToUpload]['tmp_name'], $path.$file);
    compress($path,$file);
    $fullfile=$path.$file;
    mysql_query("update `img` set `path`='{$fullfile}' where `id`='{$res['id']}'");
    
    <?
    //-------------------------------------------------------------------------------------------------------------
    function cyrtolat($text)
    {
    $cyr  = array('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у', 
                'ф','х','ц','ч','ш','щ','ъ', 'ы','ь', 'э', 'ю','я','А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У',
                'Ф','Х','Ц','Ч','Ш','Щ','Ъ', 'Ы','Ь', 'Э', 'Ю','Я' );
    $lat = array( 'a','b','v','g','d','e','yo','zh','z','i','y','k','l','m','n','o','p','r','s','t','u',
                'f' ,'h' ,'ts' ,'ch','sh' ,'sch' ,'', 'i', '', 'e' ,'yu' ,'ya','A','B','V','G','D','E','YO','Zh','Z','I','Y','K','L','M','N','O','P','R','S','T','U',
                'F' ,'H' ,'Ts' ,'Ch','Sh' ,'SCH' ,'' ,'I','','E' ,'YU' ,'YA' );
    
    return str_replace($cyr,$lat, $text);
    }
    //-------------------------------------------------------------------------------------------------------------
    function makeurl($text)
    {
    $spec  = array(',','.','!','@','#','$','%','^','&','*','(',')','_','+','=','~','`','\'','\\','/','"',';',':', 
                '<','>','?','{','}','[',']', '|',' ','\t','»','«');
    $rep = array('','','','','','','','','','','','','','','','','','','','','','','','','','','','','','', '','-','-','','');
    $text = str_replace(html_entity_decode('&mdash;'),'',$text);
    $text=str_replace($spec, $rep, $text);
    $text=str_replace("--","-", $text);
    $text=str_replace("--","-", $text);
    $text=str_replace("--","-", $text);
    
    return $text;
    }
    //-------------------------------------------------------------------------------------------------------------
    function compress($path,$file)
    {
    $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
    error_reporting(0);
    ini_set('memory_limit', '512M');
        if($ext=='jpg' || $ext=='jpeg'|| $ext=='png'|| $ext=='gif')
          {
          $stamp = imagecreatefrompng($_SERVER['DOCUMENT_ROOT'].'/images/wm.png');
          $sfile=$path."s_".$file;
          $lfile=$path."l_".$file;
          $fullfile=$path.$file;
          if(!($im = imagecreatefromjpeg($fullfile)))
            $im = imagecreatefrompng($fullfile);
          if($im)
            {
            $marge_right = 10;
            $marge_bottom = 10;
            $sx = imagesx($stamp);
            $sy = imagesy($stamp);
            imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));
            imagejpeg($im,$fullfile);
            $iw = imagesx($im); 
            $ih = imagesy($im);
            $k = 600 / $iw;
            if($k>1)$k=1;
            $sx = floor($iw * $k); $sy = floor($ih * $k);
            $im_m = imagecreatetruecolor($sx, $sy);
            imagealphablending( $im_m, false );
            imagesavealpha( $im_m, true );
            $transparent = imagecolorallocatealpha($im_m, 255, 255, 255,255);
            
            imagefilledrectangle($im_m, 0, 0, $sx, $sy, $transparent);				
            imagecopyresampled($im_m, $im, 0, 0, 0, 0, $sx, $sy, $iw, $ih);
            $r_l = imagejpeg($im_m,$lfile);
    
            $iw = imagesx($im); $ih = imagesy($im);
            $k = 200 / $iw;
            if($k>1)$k=1;
            $sx = floor($iw * $k); $sy = floor($ih * $k);
            $im_m = imagecreatetruecolor($sx, $sy);
            imagealphablending( $im_m, false );
            imagesavealpha( $im_m, true );
            $transparent = imagecolorallocatealpha($im_m, 255, 255, 255, 127);
            imagefilledrectangle($im_m, 0, 0, $sx, $sy, $transparent);				
            imagecopyresampled($im_m, $im, 0, 0, 0, 0, $sx, $sy, $iw, $ih);
            $r_s = imagejpeg($im_m,$sfile);
            }
          else
            {
            copy($fullfile, $lfile);
            copy($fullfile, $sfile);
            }
          }
      
      
    error_reporting(1);
    }
    //---------------------------------------------------------------------------------------------------------
    function getpath($max)
      {
      $docroot=$_SERVER['DOCUMENT_ROOT']."/";
    
      
      
      if($max<10)$max='00'.$max;
            else
          if($max<100)$max='0'.$max;
          $targetPath=$docroot.'uploads/'.$max[0].'/'.$max[1].'/'.$max[2].'/';
          
      return $targetPath;		
      }
    //-------------------------------------------------------------------------------------------------------
    ?>
    <?
    mysql_connect("localhost","root","");
    mysql_select_db("img");
    mysql_query("insert into `img` (`path`) values 
    ('{$_FILES[fileToUpload][name]}')");
    $t=mysql_query(
    "select `id` from `img` order by `id` desc limit 1");
    $res=mysql_fetch_array($t);//последний id
    $ext = strtolower(pathinfo($_FILES[fileToUpload][name], 
    PATHINFO_EXTENSION));//расширение файла
    
    $filename=makeurl(cyrtolat(
    pathinfo(
    $_FILES[fileToUpload][name],PATHINFO_FILENAME)));//имя в латиницу и убираем спец символы
    $file=$filename.".".$ext;
    $path=getpath($res['id']);//получаем полный путь с учетом id ->/0/0/1/
    move_uploaded_file( $_FILES[fileToUpload]['tmp_name'], $path.$file);
    compress($path,$file);
    $fullfile=$path.$file;
    mysql_query("update `img` set `path`='{$fullfile}' where `id`='{$res['id']}'");
    ?>
    <html>
      <head>
        <meta name='robots' content='noindex'>
      </head>
      
      <body>
        <form action="" method="post" enctype="multipart/form-data">
          Выберите файл для загрузки:
          <input type="file" name="fileToUpload" id="fileToUpload">
          <input type="submit" value="Загрузить" name="submit">
        </form>
      </body>
      
    </html>

     

  • Добавление и вывод постов в бд

    Добавление Записи в базу данных postinput.php

    if($_POST['send']=="отправить"){
    $c=mysql_real_escape_string($_POST['content']);
    //mysql_real_escape_string Экранирует специальные символы в строке, используемой в SQL-запросе, принимая во внимание кодировку соединения.
    $query=mysql_query("INSERT INTO `posts` (`title`,`content`) VALUES ('{$_POST['title']}','{$c}') ");
    if($query==true){
      $msg="Запись добавлена!";
    }	
    
    }  
    ?>
    <?echo $msg;?>
    <form action="" method="post">
    <p>Заголовок: <input type="text" name="title"></p>
    <p>Описание: <textarea cols="40" rows="20" name="content"></textarea></p>
    <p><input type="submit" name="send" value="отправить"></p>
    </form>

    Вывод анонсов постов blog.php

    <?echo $msg;?>
        <?	
        if(isset($_GET['id'])) $page=$_GET['id'];
            if($page<1){ $page=1;}
        $row=mysql_query("SELECT * FROM `posts`");
          $max_posts=3;
          $num_posts=mysql_num_rows($row);
          $num_pages=intval(($num_posts-1)/$max_posts)+1;
          /*кнопочки*/
          for($i=1;$i<=$num_pages;$i++){
            $i1="";
              if($i>1)$i1="?id=".$i;
            if($page==$i){
              
            echo "<a href='blog.php{$i1}' style='color:red;'>{$i} </a>";}
            else {echo "<a href='blog.php{$i1}' >{$i} </a>";}
            
          }
          /*****/
          
            if($page>$num_pages){ $page=$num_pages;}
            $c=($page-1)*$max_posts;
          $row1=mysql_query("SELECT * FROM `posts` ORDER BY `id` DESC LIMIT {$c},{$max_posts}");
            $res=mysql_fetch_assoc($row1);
          do {
            mb_internal_encoding("UTF-8");
            $content=mb_substr($res['content'],0,303) . "...";
              ?>
          <div class="anons">
          <div class="imgb"><img src="<?echo $res['img']?>"></div>
          <div class="r">
          <h3 class="titlea"><a href="<?echo "post.php?id=".$res['id']?>"><?echo $res['title'];?></a></h3>
          <div class="contenta"><?echo $content;?></div>
          <div class="bot"><div class="author"><a href=""><?echo $res['author']?></a></div><div class="date"><?echo $res['date']?>
        ><a href="<?echo "update.php?id=".$res['id']?>">Редактировать</a>
          <a href="<?echo "delete.php?id=".$res['id']?>&&del=1">Удалить</a>
    

    Вывод одного поста post.php

    <?$row=mysql_query("SELECT * FROM `posts` WHERE `id`='{$_GET['id']}'");
          $res=mysql_fetch_assoc($row);
    if($_GET['del']=="1"){
    $query1=mysql_query("DELETE FROM `posts` WHERE `id`='{$_GET['id']}'");
    if($query1=true){
      $msg="Запись удалена!";
    }	
    
    } 				
              ?>
        <div id="content">
          <div class="block2">
          <div class="center">
          <div class="row fon2">
            <h1><span class="titl"><?echo $res['title'];?></span></h1>
          </div>
          </div>
          </div>
          
          <div id="block2">
          <div class="center">
          <div class="row">
          <div class="content">
        
        
          
          <div class="imgb"><img src="<?echo $res['img']?>"></div>
          
          
          <div class="contenta"><?echo $res['content'];?></div>
          <div class="bot"><div class="author"><a href=""><?echo $res['author']?></a></div><div class="date"><?echo $res['date']?>
          <a href="<?echo "update.php?id=".$res['id']?>">Редактировать</a>
          <a href="<?echo "delete.php?id=".$res['id']?>&&del=1">Удалить</a>
          </div>
          </div>
          
          
          
          </div>
          
          </div>
          </div>
          </div>
          
          
          
          
          
        </div>

     

  • Php урок 11. Написание своих функций

     

    отправка email ссылка на скачивание 

    Код файла index.php

    <?
    include_once 'Mail.php';
    
    $from = 'test@mail.ru'; //change this to your email address
    $to = 'test@mail.ru'; // change to address
    
    $name=$_POST['name'];
    $tel=$_POST['tel'];
    $body=$name . " " . $tel;
    $title="Заказать звонок";
    $subject = $title; // subject of mail
    $body = $body; //content of mail
    
    $headers = array(
        'From' => $from,
        'To' => $to,
        'Subject' => $subject,
          'MIME-Version' => 1,
        'Content-type' => 'text/html;charset=utf-8'
    );
    
    $smtp = Mail::factory('smtp', array(
            'host' => 'ssl://smtp.mail.ru',
            'port' => '465',
            'auth' => true,
            'username' => 'test@mail.ru', //your mail account
            'password' => 'pass' // your password
        ));
    
    // Send the mail
    $mail = $smtp->send($to, $headers, $body);
        if($mail===true) {
          echo ("Ваше сообщение отправлено, мы обязательно его рассмотрим.");
        } else {
          echo ("Сообщение не было доставлено.<br>Текст сообщения:");
          var_dump($mail);
        }
    ?>

    функция mail

    <?
    function send_email($name,$tel) {
      $subject = 'Запись на школу программирования';
      $name = "=?UTF-8?B?".base64_encode($name)."?=";
      $subject = "=?UTF-8?B?".base64_encode($subject)."?=";
      $to = 'saltik91@mail.ru';
      $headers = "From: $name\r\n";
      $headers .= "MIME-Version: 1.0" . "\r\n";
      $headers .= "Content-type: text/html; charset=UTF-8" . "\r\n";
      $message.="Имя" . $name . "<br>" . $tel;
      $message = wordwrap($message, 70);
      $send = mail($to, $subject, $message, $headers);
    }
    $name=$_POST['name'];
    $tel=$_POST['tel'];
    send_email($name,$tel);
    header('Refresh:3;url=index.php');
      echo "<meta charset='utf-8'>";
      echo "Сообщение отправлено!";
    ?>

     

    Написание своих функций:

    В любом языке программирования существуют подпрограммы. В языке C они называются функциями, в ассемблере — подпрограммами, а в Pascal существуют даже два вида подпрограмм: процедуры и функции.

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

    В PHP такими подпрограммами являются пользовательские функции.

    Помимо встроенных функций PHP, часто возникает необходимость создания пользовательских функций, выполняющих определенные задачи.

    Особенности пользовательских функций PHP

    Перечислим особенности пользовательских функций в PHP:

    • Доступны параметры по умолчанию. Есть возможность вызывать одну и ту же функцию с переменным числом параметров;
    • Пользовательские функции могут возвращать любой тип;
    • Область видимости переменных внутри функции является иерархической (древовидной);
    • Есть возможность изменять переменные, переданные в качестве аргумента.

    В PHP программисту дана достаточно высокая свобода при создании пользовательских функций. В отличии от языка C++ в пользовательских функциях доступны параметры по умолчанию.

     

    Предположим перед нами стоит задача решить несколько арифметических действий с 2умя числами. Пусть эти числа будет определять рандом. Итак как бы мы это сделали не зная про функции:

    <?
    $c1 = rand(1, 10);
    $c2 = rand(1, 10);
    $sum= $c1+$c2;
    $pr = $c1*$c2;
    $prim = $pr/$sum*($pr-$sum);
    echo "Числа: $c1 и $c2<br>Сумма: $sum<br>Произведение: $pr<br>Пример: $prim";
    ?>

    а вот так можно сделать с помощью функции:

    <?
    for ($i=0; $i < 5; $i++) {
        $c1 = rand(1, 10);
        $c2 = rand(1, 10);
        echo prim($c1, $c2)."<hr>";
    }
    
    function prim($c1 = 1, $c2 = 1) {
      $sum= $c1+$c2;
      $pr = $c1*$c2;
      $prim = ceil($pr/$sum*($pr-$sum));
      return "Числа: $c1 и $c2<br>Сумма: $sum<br>Произведение: $pr<br>Пример: $prim";
    }
    ?>

    Параметры по умолчанию

    При программировании часто возникает необходимость создания функции с переменным числом параметров. Тому есть две причины:

    • Параметров слишком много. При этом нет смысла каждый раз указывать все параметры;
    • Функции должны возвращать значения разных типов в зависимости от набора параметров.

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

    <?php
    function makecup($type = "Чая")
    {
         return "Сделайте чашечку $type.\n";
    }
    echo makecup();
    echo makecup("Кофе");
    ?>

    Результат работы приведенного скрипта будет таким:

    Сделайте чашечку Чая
    Сделайте чашечку Кофе

    Значение по умолчанию должно быть константным выражением.

    Обратите внимание, что все аргументы, для которых установлены значения по умолчанию, должны находится правее аргументов, для которых значения по умолчанию не заданы, в противном случае ваш код может работать не так, как вы этого ожидаете. Рассмотрим следующий пример:

    <?php
    function makecup($type = "чая", $cond)
    {
         return "Сделайте чашечку $type $cond.\n";
    }
      
    echo makecup("горячего");   // Не будет работать так, как мы могли бы ожидать
    ?>

    Результат работы приведенного выше скрипта будет примерно следующим:

    Warning: Missing argument 2 for makecup() in c:\inetpub\php.su\test.php on line 2Сделайте чашечку горячего .

    Теперь видоизменим рассмотренный скрипт, исправив в нем ошибки:

    <?php
    function makecup($cond, $type = "чая")
    {
         return "Сделайте чашечку $type $cond.\n";
    }
      
    echo makecup("горячего");   // Теперь наш скрипт работает корректно! 
    ?>

    Результат работы исправленного скрипта будет выглядеть следующим образом:

    Сделайте чашечку чая горячего.

    <?
    //-------------------------------------------------------------
    function add1($a,$b)
    {
    $c=$a+$b;	
    echo "$a+$b=$c<br>";
    }
    //-------------------------------------------------------------
    function add2($a,$b)
    {
    $c=$a+$b;	
    return $c;
    }
    //-------------------------------------------------------------
    function add3($a,$b=0,$c=0,$d=0,$e=0,$f=0)
    {
    $c=$a+$b+$c+$d+$e+$f;	
    return $c;
    }
    //-------------------------------------------------------------
    function my_func(){
      $args = func_get_args();
      $summ=0;
      echo "<hr>";
      foreach ($args as $arg) {
        echo "$arg+";
      $summ+=$arg;
      }
      echo "=$summ<br>";
    }
    //-------------------------------------------------------------
    function rec($a)
    {
    if($a==0)return 0;
    
    return $a+rec($a-1);
    
    }
    //-------------------------------------------------------------
    add1(1,4);
    echo (add2(1,4)+add2(2,5));
    echo "<br>";
    echo add3(1,2,3);
    echo "<br>";
    echo add3(1,2,3,4,5,6);
    my_func(1,2,3,4,5,6,7,8,9);
    
    echo rec(10);
    
    
    function kirtolat($text)
    {
      $abc = ["А"=>"A", "а"=>"а", "Б"=>"B", "б"=>"b", "В"=>"V", "в"=>"v", "Г"=>"G", "г"=>"g", "Д"=>"D", "д"=>"d", "Е"=>"E", "е"=>"e", "Ё"=>"YO", "ё"=>"yo", "Ж"=>"J", "ж"=>"j", "З"=>"Z", "з"=>"z", "И"=>"i", "и"=>"i", "Й"=>"Y", "й"=>"y", "К"=>"K", "к"=>"k", "Л"=>"L", "л"=>"l", "М"=>"M", "м"=>"m", "Н"=>"N", "н"=>"n", "О"=>"O", "о"=>"o", "П"=>"P", "п"=>"p", "Р"=>"R", "р"=>"r", "С"=>"S", "с"=>"s", "Т"=>"T", "т"=>"t", "У"=>"U", "у"=>"u", "Ф"=>"F", "ф"=>"f", "Х"=>"H", "х"=>"h", "Ц"=>"C", "ц"=>"c", "Ч"=>"CH", "ч"=>"ch", "Ш"=>"SH", "ш"=>"sh", "Щ"=>"ScH", "щ"=>"sch", "Ъ"=>"'", "ъ"=>"'", "Ы"=>"I", "ы"=>"i", "Ь"=>"'", "ь"=>"'", "Э"=>"E'", "э"=>"e'", "Ю"=>"YU", "ю"=>"yu", "Я"=>"YA", "я"=>"ya",];
      foreach($abc as $kir=>$lat)
        {
        $text=str_replace($kir,$lat,$text);	
        }
      echo $text;
    }
    
    kirtolat("Привет мир");
    ?>

     

    <?
    function compress($path,$file)
    {
    $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
    //error_reporting(0);
    ini_set('memory_limit', '512M');
    if($ext=='jpg' || $ext=='jpeg'|| $ext=='png')
    {
     $sfile=$path."s/".$file;
     $lfile=$path."l/".$file;
     $fullfile=$path.$file;
     if(!($im = imagecreatefromjpeg($fullfile)))
     $im = imagecreatefrompng($fullfile);
     if($im)
     {
     $iw = imagesx($im); $ih = imagesy($im);
     $k = 850 / $iw;
     if($k>1)$k=1;
     $sx = floor($iw * $k); $sy = floor($ih * $k);
     $im_m = imagecreatetruecolor($sx, $sy);
     imagealphablending( $im_m, false );
     imagesavealpha( $im_m, true );
     $transparent = imagecolorallocatealpha($im_m, 255, 255, 255,255);
     imagefilledrectangle($im_m, 0, 0, $sx, $sy, $transparent); 
     imagecopyresampled($im_m, $im, 0, 0, 0, 0, $sx, $sy, $iw, $ih);
     $r_l = imagejpeg($im_m,$lfile);
     $iw = imagesx($im); $ih = imagesy($im);
     $k = 400 / $iw;
     if($k>1)$k=1;
     $sx = floor($iw * $k); $sy = floor($ih * $k);
     $im_m = imagecreatetruecolor($sx, $sy);
     imagealphablending( $im_m, false );
     imagesavealpha( $im_m, true );
     $transparent = imagecolorallocatealpha($im_m, 255, 255, 255, 127);
     imagefilledrectangle($im_m, 0, 0, $sx, $sy, $transparent); 
     imagecopyresampled($im_m, $im, 0, 0, 0, 0, $sx, $sy, $iw, $ih);
     $r_s = imagejpeg($im_m,$sfile);
     }
    else
     {
     copy($fullfile, $lfile);
     copy($fullfile, $sfile);
     }
    }
    error_reporting(1);
    }
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <title>Bootstrap Example</title>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    </head>
    <body>
    <?
    $files=scandir("gallery");//получить список файлов из одной папки
    /*foreach($files as $file)
    {
      compress("gallery/",$file);
    }*/
    $count=count($files);//колчиство элементов в массиве (колчиство файлов)
    $page_count=10;//задаем количество картинок на одной странице
    $pages=$count/$page_count;//считаем количество страниц
    ?>
    <div class="container">
      <h1>Галерея с фотообоями</h1>
      <ul class="pagination">
      <?
      $pagination="";
      for($i=0;$i<$pages-1;$i++)
        {
        $p=$i+1;
        $pagination.="<li><a href='?id=$i'>$p</a></li> ";
        }
      echo $pagination;	
      ?>
      </ul>
      <hr>
      <?
      $st=$_GET['id']*$page_count;
      $en=$st+$page_count;
      for($i=$st;$i<$en;$i++)
        {
        echo "<div class='col-md-6' style='height:400px'>
          <div class='thumbnail'>
            <img src='gallery/s/{$files[$i+2]}' >
            
          </div>
          <a href='gallery/{$files[$i+2]}' download>Скачать</a>
        </div>";
        }
      ?>
      <hr>
      <ul class="pagination">
      <?
      echo $pagination;
      ?>
      </ul>
    </div>
    
    </body>
    </html>