Kacka.pl

Blog IT

Posty z kategorii ‘PHP

Count w PHP

Wielu programistów PHP używa funkcji count która służy do zliczania ilości elementów tablicy.

Niewielu jednak pamięta o tym, że funkcja ta może przyjmować drugi argument.

Służy on do określania, czy funkcja ma liczyć rekursywnie, co przydaje się przy wielowymiarowych tablicach.

Przykład z manuala:

1
2
3
4
5
6
7
8
$food = array('fruits' => array('orange', 'banana', 'apple'),
'veggie' => array('carrot', 'collard', 'pea'));

// rekursywnie
echo count($food, COUNT_RECURSIVE); // wyświetli 8

// normalnie
echo count($food); // wyświetli 2
  • 0 komentarzy
  • Kategorie: PHP
  • Microsoft kupuje php.pl

    Jeśli wierzyć informacją prasowym (http://forum.php.pl/index.php?act=announce&f=8&id=8, http://msdn.microsoft.com/pl-pl, http://www.codeguru.pl/NewsList/1,20629/by_PublishDate/desc.aspx, http://wss.pl/NewsList/1,20629/by_PublishDate/desc.aspx) Microsoft przejmuje Php.pl

    Szkoda, że dziś 1 kwietnia i nie do końca wiadomo czy to żart czy też prawda.

    Poczekamy do jutra.

    Dopisek: To jednak tylko żart:)

  • 0 komentarzy
  • Kategorie: PHP
  • Zend Studio alt+n

    W standardowej konfiguracji Zend Studio binduje kombinację alt+n uniemożliwiając napisanie literki ń.

    Żeby wyłączyć tą opcję należy:

    Window -> Customize Perspective -> Commands Groups Availability -> Odznaczamy checkbox-a przy „New PHP Document

  • 1 komentarz
  • Kategorie: PHP
  • Brawa dla Zend-a

    W dniu wczorajszym Zend zdecydował się rozdać za darmo licencję na

    1 x Zend Studio 8.0   $284.98

    1 x Zend Server Developer License  $284.98

    wszystkim ZCE.

    Świetna idea i punkt dla PHP.

  • 0 komentarzy
  • Kategorie: PHP
  • Jeśli ktoś interesuje się bezpieczeństwem polecam serię artykułów Pawła.

    W 25 lekcjach pokazuje On podstawowe metody ataków oraz obrony przed nimi.

    Godne polecenia!

  • 0 komentarzy
  • Kategorie: PHP
  • Krzaczki zamiast liter w PHP

    Jeśli na stronie nie znajduje się:

    <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />

    i zamiast polskich liter dostajesz krzaczki, spróbuj na początku skryptu PHP dodać linijkę:

    1
    header('Content-Type: text/html; charset=utf-8');

    gdzie utf-8 możesz zamienić na swoje kodowanie.

  • 1 komentarz
  • Kategorie: PHP
  • Prosty skrypt sprawdzający poprawność numeru PESEL w PHP:

    <?PHP

    /**
     * Funkcja sprawdzająca poprawność numeru PESEL
     *
     * @param string $pesel
     * @return bool
     */

    function pesel ($pesel)
    {
        $pesel = preg_replace('/([^0-9]*)/', '', $pesel); //Usuwamy wszystko co nie jest cyfrą
        if ( strlen($pesel) != 11)
        {
            return 0; //zła długość
        }

        $wagi = array(1,3,7,9,1,3,7,9,1,3); //sprawdzanie sumy kontrolnej


          for ($i=0; $i<10; $i++)
          {
              $suma += $pesel[$i]*$wagi[$i];
          }

          $liczba = 10 - $suma%10;


          if ( $liczba == 10 )
          {
              $liczba=0;
          }

          if ( $pesel[10] == $liczba )
          {
              return 1;
          }
          else
          {
              return 0;
          }
    }

    if ( pesel('800101-10027') )
    {
        echo 'OK';
    }
    else
    {
        echo 'ZŁY!';
    }

    Dzięki usuwaniu wszystkiego oprócz cyfr z numeru PESEL, możemy go podawać w różnych formach (ze spacjami, przecinkami, pauzami itp.)

    Przykład działania skryptu można zobaczyć tutaj.

  • 1 komentarz
  • Kategorie: PHP
  • Wyszukiwanie pełnotekstowe

    Wielu początkujących webmasterów budując wyszukiwarkę stosuję konstrukcję LIKE, których jednak szybkość i trafność budzi wiele do życzenia. Dlatego też w MySQL wprowadzono wyszukiwanie pełnotekstowe, które przy pomocy algorytmu sortuje znalezione informację według trafności.

    Załóżmy, że na mamy system CMS w którym przechowujemy dane w następujący sposób:

    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE `cms` (
    `id` int(11) NOT NULL auto_increment,
    `tytul` varchar(255) NOT NULL,
    `tresc` text NOT NULL,
    `tagi` varchar(255) NOT NULL,
    `status` smallint(1) default '0',
    PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

    Jak widać przechowujemy tytuł artykułu, jego treść, tagi oraz status (0 – nie wyświetla, 1 – wyświetla)

    Aby wyszukiwanie pełnotekstowe działało musimy stworzyć specjalne indeksy. Dla przykładu:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ALTER TABLE cms ADD FULLTEXT (tytul); # jeżeli wyszukujemy sam tytuł
    ALTER TABLE cms ADD FULLTEXT (tresc); # jeżeli wyszukujemy samą treść
    ALTER TABLE cms ADD FULLTEXT (tagi); # jeżeli wyszukujemy same tagi

    ALTER TABLE cms ADD FULLTEXT (tytul, tresc); # szukam według tytułu i treści
    ALTER TABLE cms ADD FULLTEXT (tresc, tagi); # szukam według treści i tagów

    ALTER TABLE cms ADD FULLTEXT (tytul, tresc, tagi); # szukam według tytułu treści i tagów

    #itd

    Mając już stworzone indeksy, możemy przystąpić do tworzenia zapytań.

    Zacznijmy od wyszukania identyfikatora artykułu, który posiada tag „php” :

    1
    SELECT id FROM cms WHERE MATCH(tagi) AGAINST('php');

    Jeśli chcemy zwrócić tytuł artykułu który w treści, tytule lub tagu zawiera słowo „matematyka”:

    1
    SELECT tytul FROM cms WHERE MATCH(tytul, tresc, tagi) AGAINST('matematyka');

    Oczywiście funkcjonalność ta ma pewne ograniczenia:

    Jeżeli ilość rekordów spełniających podany warunek jest większa od połowy wszystkich rekordów w bazie, nie zostanie zwrócony żaden rekord.

    Wyszukiwarka ta działa podobnie jak Google: (obsługiwanie operatorów)

    „Ala ma kota” – musi wystąpić cała fraza: Ala ma kota

    Ala -kota – musi wystąpić słowo Ala i nie może wystąpić słowo kota

    kot* – dopuszczalne są różne końcówki, np. kot, kota, kotem, kotu

    Aby korzystać z operatorów należy dodatkowo do zapytania dodać: IN BOOLEAN MODE
    Wtedy wygląda ono tak:

    1
    SELECT id FROM cms WHERE MATCH(tytul, tresc) AGAINST('Ala -kota' IN BOOLEAN MODE);
  • 0 komentarzy
  • Kategorie: PHP
  • Jak pozbyć się spamu

    Jeśli masz problem ze spamem na swojej stronie, a nie chcesz stosować uporczywych dla użytkowników captcha, wypróbuj Sblam!

    Filtruje on treści postów w sposób niewidoczny dla użytkowników, działa ze wszystkimi przeglądarkami i jest przyjazny dla osób niepełnosprawnych.

    Jest również całkowicie darmowy, a jego kod źródłowy można oglądnąć Tutaj.

  • 0 komentarzy
  • Kategorie: PHP
  • Jeżeli podczas uploadu plików w wordpressie dostajesz błąd, spróbuj dodać do pliku .htaccess kod:

    1
    2
    3
    4
    5
    6
    <FilesMatch "(async-upload\.php|wp-cron\.php|xmlrpc\.php)$">
        Satisfy Any
        Order allow,deny
        Allow from all
        Deny from none
    </FilesMatch>
  • 0 komentarzy
  • Kategorie: PHP