[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Sum.cogitans

    Sum.cogitans Elder - Старейшина

    Joined:
    7 Sep 2013
    Messages:
    173
    Likes Received:
    32
    Reputations:
    19
    Тогда добавляем проверку, по средствам file_exists:

    PHP:
    function transliterate($st) { //Функция транслитерации слова 
           
    $st strtr($st,  
            
    "абвгдежзийклмнопрстуфыэАБВГДЕЖЗИЙКЛМНОПРСТУФЫЭ"
            
    "abvgdegziyklmnoprstufieABVGDEGZIYKLMNOPRSTUFIE" 
          
    ); 
         
          
    $st strtr($st, array( 
            
    'ё'=>"yo",    'х'=>"h",  'ц'=>"ts",  'ч'=>"ch"'ш'=>"sh",   
            
    'щ'=>"shch",  'ъ'=>'',   'ь'=>'',    'ю'=>"yu"'я'=>"ya"
            
    'Ё'=>"Yo",    'Х'=>"H",  'Ц'=>"Ts",  'Ч'=>"Ch"'Ш'=>"Sh"
            
    'Щ'=>"Shch",  'Ъ'=>'',   'Ь'=>'',    'Ю'=>"Yu"'Я'=>"Ya"
          )); 
          return 
    $st


    $textarea "Я тут был"//Тут долежн быть контент  
    $byw explode(" ",$textarea); //Разбиваем по словам 

    foreach ($byw as $ow) { //Разбираем массив 
        
    $f_name transliterate($ow); //Транслируем слово для названия файла 
        
    $f_cur $f_name.".txt"
        if (
    file_exists($f_cur)) {
            echo 
    "Файл $f_cur существует<br>"//Тут он говорит, о том что файл уже есть, можно удалить строку, елси не надо
        
    } else {
            
    $f_new fopen($f_cur"w");
            
    fwrite($f_new$ow);   
            
    fclose($f_new);
        } 
    }  
     
  2. smirk

    smirk Elder - Старейшина

    Joined:
    8 Sep 2011
    Messages:
    137
    Likes Received:
    43
    Reputations:
    26
    Всем ку,
    PHP:
    $file =$_GET['th']; 
    $arr = array('1''2''3''4''5''6' ....);
    if (!
    in_array($file,$arr)) $file $arr[0];
      include (
    "tm"$file .".txt");
    Вопрос 1-ый, с точки зрения с безопасностью норм? А второй, в маccиве arr должно быть с 1 до 70, просто перечислить цифры - глупо, наверно это как-то можно сделать через цикл?
    Заранее спасибо.
     
  3. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75

    PHP:
    $file =$_GET['th']; 

    if(!
    is_numeric($file) or !isset($_GET['th']) or $file or $file 70)  {
    $file 1;
    }

      include (
    "tm"$file .".txt");
     
    1 person likes this.
  4. smirk

    smirk Elder - Старейшина

    Joined:
    8 Sep 2011
    Messages:
    137
    Likes Received:
    43
    Reputations:
    26
    2qaz спасибо
     
  5. I_I

    I_I Member

    Joined:
    22 Nov 2013
    Messages:
    67
    Likes Received:
    6
    Reputations:
    1
    Классно :)
    А можно этот код минимизировать, чтоб он был очень маленький?
    Пока знаю что можно удалить
    HTML:
     function transliterate($st) { //Функция транслитерации слова  
           $st = strtr($st,   
            "абвгдежзийклмнопрстуфыэАБВГДЕЖЗИЙКЛМНОПРСТУФЫЭ",  
            "abvgdegziyklmnoprstufieABVGDEGZIYKLMNOPRSTUFIE"  
          );  
          
          $st = strtr($st, array(  
            'ё'=>"yo",    'х'=>"h",  'ц'=>"ts",  'ч'=>"ch", 'ш'=>"sh",    
            'щ'=>"shch",  'ъ'=>'',   'ь'=>'',    'ю'=>"yu", 'я'=>"ya",  
            'Ё'=>"Yo",    'Х'=>"H",  'Ц'=>"Ts",  'Ч'=>"Ch", 'Ш'=>"Sh",  
            'Щ'=>"Shch",  'Ъ'=>'',   'Ь'=>'',    'Ю'=>"Yu", 'Я'=>"Ya",  
          ));  
          return $st;  
    }  
    оставив только
    HTML:
     function transliterate($st) { //Функция транслитерации слова  
     
          return $st;  
    }  
    и будет почти все тоже самое, изменится только название файлов.

    Код также не фильтрует запятые, точки, вопросы и вписывает все это в текст.

    Потом еще я немного доработал предыдущий код, он позволяет не встраивать file_exists: нужно всего то строку заменить так
    HTML:
        $f_new = fopen($f_name.".php", "c+"); //Ну и далее, записываем все в файлы 
     
    #22105 I_I, 3 Mar 2014
    Last edited: 4 Mar 2014
  6. fl47590

    fl47590 Member

    Joined:
    15 Nov 2013
    Messages:
    54
    Likes Received:
    8
    Reputations:
    0
    Dr.Money, какие ошибки? В начале скрипта ( перед подключением файла с классом ) напиши:
    PHP:
    error_reportingE_ALL );
    ini_set"display_errors""on" );
    Отпишись, что будет на выходе.
     
  7. Dr.Money

    Dr.Money New Member

    Joined:
    5 Sep 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Волшебным образом заработало!
    Искренне спасибо от все души!
     
  8. Dr.Money

    Dr.Money New Member

    Joined:
    5 Sep 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    upd: прошло немного времени и опять не работает:


    Notice: Undefined offset: 1 in /var/www/acc/data/www/domen.ru/snipnets/yandex.php on line 71 Warning: fopen(%D0%BB%D1%8E%D0%B1%D0%BE%D0%B9+%D0%BA%D0%BB%D1%8E%D1%87.txt): failed to open stream: Permission denied in /var/www/acc/data/www/domen.ru/snipnets/yandex.php on line 23 Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/acc/data/www/domen.ru/snipnets/yandex.php on line 24 Warning: fclose(): supplied argument is not a valid stream resource in /var/www/acc/data/www/domen.ru/snipnets/yandex.php on line 25


    yandex.php
    test.php
     
  9. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    проверка включенного изображения

    можно ли проверить через php включено ли изображение в браузере ?

    такой код не работает:
    PHP:
    <?php
    @session_start(); 
    if (
    $_SESSION['use_images'] == 1) { 
    echo 
    'Изображения включены'
    } else { 
    echo 
    'Изображения отключены'
    }
    ?>
     
  10. Sum.cogitans

    Sum.cogitans Elder - Старейшина

    Joined:
    7 Sep 2013
    Messages:
    173
    Likes Received:
    32
    Reputations:
    19
    Насколько я знаю, можно определить по средствам JS, например:

    Code:
    function testGraphics() {
       if (document.tImage.width==100)
       alert ("Картинки включены");
       else alert ("Картинки отключены");
    }
    <img src="test.gif" alt="Image" name="tImage"> //В теле
    
    Есть еще ряд способов, если погуглить, например по средствам onLoad.
     
    #22110 Sum.cogitans, 5 Mar 2014
    Last edited: 5 Mar 2014
  11. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    на js эта проверка работает лучше но если учесть что js отключен может быть, из за этого хотелось сделать на php
     
  12. Sum.cogitans

    Sum.cogitans Elder - Старейшина

    Joined:
    7 Sep 2013
    Messages:
    173
    Likes Received:
    32
    Reputations:
    19
    NOJS, так же можно детектить. Лично я, альтернатив на php, к сожалению не знаю, да и в гугле ничего не нашлось.
     
  13. fl47590

    fl47590 Member

    Joined:
    15 Nov 2013
    Messages:
    54
    Likes Received:
    8
    Reputations:
    0
    PHP пишет, что проблема в попытке записи (метод save). Еще пишет, что регуляркой в $title[1] ничего не зацепилось.

    Как вариант:
    1. Разобраться с правами на запись в папку (сохранять в файл вида "%D0%BB%D1%8E%D0%B1%D0%BE%D0%B9+%D0%BA%D0%BB%D1%8E%D1%87.txt", впрочем, как-то странно).
    2. Закомментировать 75 строку, т.к. все равно в test.php все пользователю в браузер отдается.
     
  14. Dr.Money

    Dr.Money New Member

    Joined:
    5 Sep 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    С правами всё ок - пытался и так и сяк, результат один и тот же.
    А закоментить как?
     
  15. v00d

    v00d Member

    Joined:
    11 Oct 2010
    Messages:
    34
    Likes Received:
    10
    Reputations:
    7
    PHP:
    $result = array();
    $punctuation = array(
      
    ':' => 'colon',
      
    ',' => 'comma',
      
    '-' => 'dash',
      
    '?' => 'question',
    );
    preg_match_all('/(\w+)?(\W)\s?/ims''where, is: your - mind?'$r);

    foreach(
    $r[1] as $key=>$word){
      
    $result[] = $word;
      if(
    is_array($r[2]) && !empty($r[2][$key]) && array_key_exists($r[2][$key], $punctuation))
        
    $result[] = $punctuation[$r[2][$key]];
    }

    print_R($result);
     
    1 person likes this.
  16. I_I

    I_I Member

    Joined:
    22 Nov 2013
    Messages:
    67
    Likes Received:
    6
    Reputations:
    1
    нашел другое решение спасибо.
     
  17. Kruzak

    Kruzak New Member

    Joined:
    21 Dec 2010
    Messages:
    126
    Likes Received:
    4
    Reputations:
    1
    подскажите пожалуйста универсальное решение которое оставит только первый символ из строки, все остальные символы заменит

    вот такое мне нужно на выходе:

    antichat -> a.......
    ant -> a..
    a -> a
     
  18. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75

    PHP:
    <?

    $string "antichat";

    for(
    $i 1;$i<=strlen($string)-1;$i++) {

    $string[$i] = ".";

    }

    echo 
    $string;

    ?>
     
  19. Sum.cogitans

    Sum.cogitans Elder - Старейшина

    Joined:
    7 Sep 2013
    Messages:
    173
    Likes Received:
    32
    Reputations:
    19
    Kruzak
    Если я правильно понял, относительно символов замены, то выглядеть это может примерно так:

    PHP:
    $str 'antichat'//Тут твоя строка
        
    $frs_s $str{0}; //Определеяем первый символ
        
    $s_count = (strlen($str) -1) ; //Определяем оставшееся кол-во символов
        
    $rep str_repeat("."$s_count); // Повторяем определенное (в $s_count) кол-во точек
    echo ($frs_s), ($rep); //Выводим результат 
    UPD
    Вот, даже два варианта тебе написали. Используй лучше код qaz, он оптимальней, а у меня можешь погуглить используемые функций для понимания.
    UPD2
    Три :D
     
    #22119 Sum.cogitans, 8 Mar 2014
    Last edited: 8 Mar 2014
  20. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    PHP:
    <?php
    $array 
    = array('antichat''ant''a');

    array_walk($array'cut_string');

    function 
    cut_string(&$s)
    {
        
    $s str_pad($s{0}, strlen($s), '.');
    }

    var_dump($array);
    ?>
     
    _________________________
Thread Status:
Not open for further replies.