Obsah fóra
Pravidlá
Posledná návšteva Sob 19.04.14 11:57Aktuálny čas je Sob 19.04.14 11:57


Časové pásmo: Europe/Bratislava [ letný čas ]




 [ Príspevkov: 37 ] Choď na stránku 1, 2, 3  Ďalší
AutorSpráva
Offline
 Poslať Napísal: Štv 14.08.08 21:49
Predmet príspevku: Užitočné a často používané skripty
 
Správca fóra
Správca fóra
Obrázok užívateľa

Registrovaný: 27.07.07
Príspevky: 3896
Bydlisko: Bratislava
Vek: 29
V tejto teme mozte zverejnovat rozne PHP/ASP skripty, ktore su podla vas uzitocne a mozu pomoct ostatnym uzivatelom tohto fora pri tvorbe webovych aplikacii.
Skripty by mali byt univerzalne stavane, cize by mali zabezpecovat viacero funkcionalit (ak je to mozne). V najlepsom pripade by mali mat podobu funkcii pripadne tried.

Pravidla:

1. Kazdy novy prispevok so skriptom MUSI obsahovat nasledujuce polozky:
- strucny a VYSTIZNY nazov
- autor skriptu pripadne zdroj
- poziadavky na beh skriptu (minimalna verzia PHP/ASP, potrebne kniznice a pod.) - ak nie su zname ziadne zvlastne poziadavky, netreba uvadzat
- podrobny popis (funkcionalita skriptu)
- samotny skript s vysvetlujucim komentarom k jednotlivym castiam
- popis, ako dany skript pouzit + konkretne priklady pouzitia

2. Pridavajte len funkcne a vami odskusane skripty!

3. Nezabudnite na prehladne formatovanie zdrojoveho kodu

4. Ak sa vyskytnu v teme viacere skripty s podobnym zameranim, ponechaju sa len tie, ktore su prehladnejsie, jednoduchsie, rychlejsie ci univerzalnejsie (ostatne sa vymazu bez upozornenia)

5. Kvoli zachovaniu prehladnosti, neprispievajte otazkami ci poznamkami do tejto temy. V pripade, ze sa chcete ku ktoremukolvek skriptu nieco spytat, kontaktujte autora daneho prispevku alebo napiste do http://www.pcforum.sk/tema-pre-casto-pouzivane-skripty-vt45358.html.


Nove verzie skriptov:

31.12.2012 - Kontrola minimalneho poctu pismen, cislic a specialnych znakov v retazci (stenley)
20.08.2012 - Predpoved pocasia (Google) (stenley)
05.04.2011 - Kalendar (stenley)
21.02.2010 - PHP Template Class (Tominator)
03.12.2009 - Cenzura (emer)
29.09.2009 - Je subor obrazok? (Snacker)
28.08.2009 - Sprava URL adresy (stenley)


Zoznam zverejnenych skriptov:

Zistenie velkosti priecinka
Kontrola minimalneho poctu pismen, cislic a specialnych znakov v retazci
Vyber prvych x slov z retazca
Funkcia na generovanie pekných url
Odosielanie súborov na server
Konfiguracna trieda (singleton)
Vygenerovanie náhodného reťazca
Oseknutie reťazca po medzere
Script pre upload s funkciou povolenia pripon (whitelist)
Export dat z MySQL do .sql súboru
Skopirovanie celeho adresara na FTP
Export dat z MySQL do XML
Kalendar
Predpoved pocasia (Google)
Zistenie velkosti priecinka
Vypis obsahu adresara
Je subor obrazok?
Najdenie pozicie vyskytu podretazca v retazci
PHP Template Class
Vkladanie retazca na urcitu poziciu druheho retazca
Zmena velkosti obrazka
Sprava URL adresy 2 ("pekne url adresy")
Strankovanie
Jednoduchy nakupny kosik cez SESSION
Pocet pracovnych dni medzi 2 datumami
Zistenie skutocnej IP adresy
Sprava URL adresy
Registracia s aktivaciou cez e-mail
Cenzura
Konverzia BBCode na HTML tagy
Trieda pre pracu so SESSION bez pouzitia databazy
Graficke znazornenie poctu pristupov
Trieda pre pracu s MySQL databazou (zakladna)
Validacia emailovej adresy
Hromadne osetrenie vstupov (zakladne)
Odstranenie diakritiky z textu


Naposledy upravil stenley dňa Pon 20.08.12 22:59, celkovo upravené 48






_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline
 Poslať Napísal autor témy: Pia 15.08.08 12:13
Predmet príspevku: Re: Užitočné a často používané skripty
 
Správca fóra
Správca fóra
Obrázok užívateľa

Registrovaný: 27.07.07
Príspevky: 3896
Bydlisko: Bratislava
Vek: 29
Odstranenie diakritiky z textu

Autor: stenley
Popis:
Citácia:
string odstranDiakritiku ( string $str )

Tato funkcia odstrani diakritiku zo str.

Premenna $nodia obsahuje pole pismen bez diakritiky, ktorymi sa maju nahradit prislusne pismena v premennej $dia. Cize, ak sa v str nachadza pismeno "á", nahradi sa pismenom "a" a pod. V pripade, ze potrebujete pridat dalsiu konverziu pismen, treba doplnit do $dia pismeno s diakritikou a do $nodia prislusne pismeno bez diakritiky (v rovnakom poradi).

Kód:
<?php
/**
 * odstranDiakritiku()
 *
 * Odstranenie diakritiky z textu
 *
 * @author   stenley <stenley@webdev.sk>
 * @version   1.1
 */

function odstranDiakritiku($str)
{
   //pismena s diakritikou
   $dia = array('á', 'ä', 'č', 'ď', 'é', 'ě', 'í', 'ľ', 'ĺ', 'ň', 'ó', 'ô', 'ŕ', 'ř', 'š', 'ť', 'ú', 'ů', 'ý', 'ž', 'Á', 'Ä', 'Č', 'Ď', 'É', 'Í', 'Ľ', 'Ĺ', 'Ň', 'Ó', 'Ô', 'Ř', 'Š', 'Ť', 'Ú', 'Ý', 'Ž');

   //prislusne pismena bez diakritiky
   $nodia = array('a', 'a', 'c', 'd', 'e', 'e', 'i', 'l', 'l', 'n', 'o', 'o', 'r', 'r', 's', 't', 'u', 'u', 'y', 'z', 'A', 'A', 'C', 'D', 'E', 'I', 'L', 'L', 'N', 'O', 'O', 'R', 'S', 'T', 'U', 'Y', 'Z');
   
   return str_replace($dia, $nodia, $str);
}
?>

Priklad pouzitia:

Kód:
$str = "Líščí chvostík";
echo odstranDiakritiku($str); //vypise: Lisci chvostik


Naposledy upravil stenley dňa Str 19.01.11 20:47, celkovo upravené 7






_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline
 Poslať Napísal autor témy: Ned 17.08.08 0:27
Predmet príspevku: Re: Užitočné a často používané skripty
 
Správca fóra
Správca fóra
Obrázok užívateľa

Registrovaný: 27.07.07
Príspevky: 3896
Bydlisko: Bratislava
Vek: 29
Hromadne osetrenie vstupov (zakladne)

Autor: stenley
Poziadavky: PHP5
Popis:
Citácia:
void safety ( mixed &$value )

Funkcia sluzi najma na zakladne osetrenie vsetkych hodnot v $_GET, $_POST a pod.

Argumentom funkcie safety() je retazec alebo pole hodnot, ktore je potrebne osetrit (zabezpecit). Upravu jednotlivych hodnot vykonava funkcia safetyValue(). V tejto verzii sa v hodnotach nahradia vsetky specialne znaky za prislusne HTML entity. Podla potreby je mozne funkciu safetyValue() doplnit o dalsie bezpecnostne upravy, napr. odstranenie niektorych neziadanych znakov alebo HTML tagov.

Kód:
<?php
/**
 * safety(), safetyValue()
 *
 * Hromadne osetrenie vstupov (zakladne)
 *
 * @author   stenley <stenley@webdev.sk>
 * @version   1.3
 */

function safety(&$value)
{
   if(is_array($value)) {
      array_walk_recursive($value,"safetyValue");
   } else {
      safetyValue($value);
   }
}

function safetyValue(&$value)
{
   if(get_magic_quotes_gpc()) {
      $value = stripslashes($value);
   }

   $value = htmlspecialchars($value);
}
?>

Priklady pouzitia:

Kód:
//upravi vsetky hodnoty v $_GET a $_POST
safety($_GET);
safety($_POST);

//upravi hodnotu premennej $str
$str = '<a href="">odkaz</a>';
safety($str);
echo $str; //vysledok: &lt;a href=&quot;&quot;&gt;odkaz&lt;/a&gt;


Naposledy upravil stenley dňa Str 19.01.11 20:47, celkovo upravené 4






_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline
 Poslať Napísal autor témy: Ned 17.08.08 0:53
Predmet príspevku: Re: Užitočné a často používané skripty
 
Správca fóra
Správca fóra
Obrázok užívateľa

Registrovaný: 27.07.07
Príspevky: 3896
Bydlisko: Bratislava
Vek: 29
Validacia emailovej adresy

Autor: Markus Sipilä (regularne vyrazy), stenley (zvysok :))
Popis:
Citácia:
bool isValidEmail ( string $email )

Zisti, ci ma zadany email spravny tvar.

Ak ma email spravny format, funkcia vracia TRUE, v opacnom pripade FALSE.

Kód:
<?php
/**
 * isValidEmail()
 *
 * Validacia emailovej adresy
 *
 * @author   stenley <stenley@webdev.sk>
 * @version   1.1
 */

function isValidEmail($email)
{
   $regexp1 = "^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,4})$";
   $regexp2 = "^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})$";

   //skontroluje dovolenu dlzku jednotlivych casti emailovej adresy
   if(!ereg("^[^@]{1,64}@[^@]{1,255}$",$email)) {
      return false;
   }
   
   return (eregi($regexp1,$email) || eregi($regexp2,$email)) ? true : false;
}
?>

Priklad pouzitia:

Kód:
$email = "stenley@pcforum.sk";
if(isValidEmail($email)) {
   echo "Emailova adresa ma spravny tvar.";
} else {
   echo "Chybna emailova adresa!";
}


Naposledy upravil stenley dňa Str 19.01.11 20:48, celkovo upravené 2






_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline
 Poslať Napísal autor témy: Uto 19.08.08 8:23
Predmet príspevku: Re: Užitočné a často používané skripty
 
Správca fóra
Správca fóra
Obrázok užívateľa

Registrovaný: 27.07.07
Príspevky: 3896
Bydlisko: Bratislava
Vek: 29
Trieda pre pracu s MySQL databazou (zakladna)

Autor: stenley
Popis:
Nasledujuci skript sluzi na plnohodnotnu pracu s mysql databazou. Umoznuje jednoduchsie pouzivat vsetky najcastejsie pouzivane vstavane php funkcie pre pracu s mysql, s ktorymi ste sa pri praci urcite uz stretli. Narozdiel od mysqli je mozne tento kod pouzivat aj s PHP4. Skript pozostava z 2 tried - DB a DB_Statement. Trieda DB sluzi hlavne na pripojenie k db serveru, nastavenie kodovania (atd) a DB_Statement na pracu s touto databazou, tzn. vykonavanie roznych dopytov, nasledne ziskavanie vysledku v pouzitelnom tvare pre dalsie spracovanie a pod. Nasledujuci skript je vhodne ulozit do zvlast suboru a potom includovat na potrebne miesto:
Kód:
<?php
/**
 * DB
 *
 * Trieda pre pracu s MySQL databazou (zakladna)
 *
 * @author   stenley <stenley@webdev.sk>
 * @version   1.2
 */

class DB
{
   private $DB_HOST;   //host
   private $DB_USER;   //prihlasovacie meno
   private $DB_PASS;   //heslo
   private $DB_NAME;   //meno databazy
   private $DB_SOCKET;   //soket aj s dvojbodkou na zaciatku
   
   private $conn;
   
   public function DB($dbhost, $dbuser, $dbpass, $dbname, $dbsocket='')
   {
      $this->DB_HOST = $dbhost;
      $this->DB_USER = $dbuser;
      $this->DB_PASS = $dbpass;
      $this->DB_NAME = $dbname;
      $this->DB_SOCKET = $dbsocket;
      
      $this->connect();
   }
   
   //pripojenie k MySQL a databaze
   protected function connect()
   {
      $this->conn = @mysql_connect($this->DB_HOST.$this->DB_SOCKET, $this->DB_USER, $this->DB_PASS);
      if(!is_resource($this->conn)) {
         DB::error("Nepodarilo sa pripojiť k databázovému serveru MySQL!");
      }
      if(!@mysql_select_db($this->DB_NAME, $this->conn)) {
         DB::error("Nepodarilo sa pripojiť k databáze ".$this->DB_NAME."!");
      }
   }
   
   public function prepare($sql)
   {
      if(!$this->conn) {
         $this->connect();
      }   
      return new DB_Statement($sql, $this->conn);
   }
   
   //uzavretie spojenia so serverom
   public function close()
   {
      return @mysql_close($this->conn);
   }
   
   //nastavenie kodovania
   public function set_charset($charset='utf8')
   {
      @mysql_query("SET character set ".$charset);
      @mysql_query("SET character_set_results=".$charset);
      @mysql_query("SET character_set_connection=".$charset);
   }
   
   //uvolnenie dat z pamati
   public function free_result($result)
   {
      return @mysql_free_result($result);
   }
   
   //detekcia chyby
   public static function error($errMsg='')
   {
      if(empty($errMsg) && !is_null($this->conn)) {
         die(mysql_errno($this->conn).": ".mysql_error($this->conn));
      }
      die($errMsg);
   }
}

class DB_Statement
{
   private $conn;
   private $result;
   private $sql;
   private $sql_executed;
   
   public $counter = 0;      //"cislovanie" vysledkov
   
   public function DB_Statement($sql, $conn)
   {
      $this->sql = $sql;
      $this->conn = $conn;
      
      if(!is_resource($this->conn)) {
         DB::error("CHYBA!");
      }
   }
   
   //vykonanie sql poziadavky
   public function execute()
   {
      $binds = array();
      
      $arrBinds = func_get_args();
      foreach($arrBinds as $index => $name) {
         $binds[$index+1] = $name;
      }
      
      $this->sql_executed = $this->sql;
   
      foreach($binds as $ph => $pv) {
         $this->sql_executed = str_replace(":$ph", "'".mysql_escape_string($pv)."'", $this->sql_executed);
         $this->sql_executed = str_replace("?$ph", mysql_escape_string($pv), $this->sql_executed);
      }
      
      $this->result = @mysql_query($this->sql_executed, $this->conn);
      
      if(!$this->result) {
         DB::error("Nastala chyba pri vykonávaní sql požiadavky!");
      }
      
      return $this->result;
   }
   
   //vrati vykonanu sql poziadavku
   public function getQuery()
   {
      return $this->sql_executed;   
   }
   
   //vysledok v asociativnom poli
   public function fetch_assoc()
   {
      $this->counter++;
      return @mysql_fetch_assoc($this->result);
   }
   
   //vysledok v klasickom poli
   public function fetch_row()
   {
      $this->counter++;
      return @mysql_fetch_row($this->result);
   }
   
   //pocet vratenych zaznamov
   public function num_rows()
   {
      return @mysql_num_rows($this->result);
   }
   
   //pocet ovplyvnenych zaznamov poslednym SQL prikazom
   public function affected_rows()
   {
      return @mysql_affected_rows($this->conn);
   }
   
   //zabezpecenie pre pouzitie v SQL prikaze
   public function safety($string)
   {
      $string = htmlentities($string);
      
      if(get_magic_quotes_gpc()) {
         $string = stripslashes($value);
      }
      
      if(function_exists('mysql_real_escape_string')) {
         return mysql_real_escape_string($string);
      }
      
      return mysql_escape_string($string);
   }
}
?>


Priklad pouzitia:

Majme tabulku uzivatelov, kde su o nich ulozene rozne informacie - mena, kontakty, vek, oblubena farba a pod. Chceme ziskat zoznam uzivatelov, ktory maju uvedenu nejaku emailovu adresu:
Kód:
require_once("mysql.class.php");

//pripojenie k mysql a konkretnej databaze
$db = new DB("localhost","username","password","dbname");

//nastavuje character set, character_set_results a character_set_connection na utf8
$db->set_charset();

//priprava dotazu
$res = $db->prepare("SELECT * FROM `users_info` WHERE NOT ISNULL(`email`) ORDER BY `id`");

//vykonanie dotazu
$res->execute();

//spracovavanie vysledkov
while($user_info = $res->fetch_assoc()) {
   echo $res->counter.'. '.$user_info['name'].' - '.$user_info['email'].'<br>';
}

//uzatvorenie spojenia s mysql
$db->close();



Vysledok:
=========
1. Peter Beladicky - beladicky.p[kapor]gmail.com
2. Lubos Zeleny - zelenac[kapor]yahoo.com
3. Frantisek Sedivy - fero.sedivy[kapor]centrum.sk
4. Ladislav Velky - master[kapor]gmail.com


Ked uzpozname uzivatelov a ich emailove adresy, chceme zistit hodnotu id uzivatelov Lubos Zeleny (zelenac[kapor]yahoo.com) a Ladislav Velky (master[kapor]gmail.com). Bude to podobny skript, len s mensimi obmenami:
Kód:
require_once("mysql.class.php");

$db = new DB("localhost","username","password","dbname");
$db->set_charset();

//namiesto :1 a :2 sa doplnia konkretne hodnoty parametrov z $res->execute()
$res = $db->prepare("SELECT id, name FROM `users_info` WHERE `name`=:1 AND `email`=:2 ORDER BY `id`");

//vykonanie sql prikazu s konkretnymi hodnotami
$res->execute("Lubos Zeleny","zelenac[kapor]yahoo.com");
while($user_info = $res->fetch_assoc()) {
   echo $user_info['name'].', id je '.$user_info['id'].'<br>';
}

//vykonanie sql prikazu s inymi konkretnymi hodnotami
$res->execute("Ladislav Velky","master[kapor]gmail.com");
while($user_info = $res->fetch_assoc()) {
   echo $user_info['name'].', id je '.$user_info['id'].'<br>';
}

$db->close();



Vysledok:
=========
Lubos Zeleny, id je 2
Ladislav Velky, id je 4


V zasade, ak sa ma hodnota obklopit jednoduchymi uvodzovkami, pouzite v prepare() :1, :2 ..., ak je hodnota cislo alebo len chcete vlozit do sql nejaku hodnotu bez jednoduchych uvodzoviek (napr. pri LIKE), tak pouzite ?1, ?2 ...


Naposledy upravil stenley dňa Str 19.01.11 20:48, celkovo upravené 2






_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline
 Poslať Napísal autor témy: Str 20.08.08 17:27
Predmet príspevku: Re: Užitočné a často používané skripty
 
Správca fóra
Správca fóra
Obrázok užívateľa

Registrovaný: 27.07.07
Príspevky: 3896
Bydlisko: Bratislava
Vek: 29
Graficke znazornenie poctu pristupov

Autor: stenley
Poziadavky: GD kniznica
Popis:
Zaznamenavate si pocet pristupov na vasu stranku a chcete zobrazit toto cislo na webe vo forme obrazka? Nie je nic jednoduchsie, ako pouzit nasledujuci skript :) Umoznuje nastavit farbu pozadia obrazka, pisma, "oddelovaca" cislis, velkost pisma, minimalny pocet zobrazovanych cislis a format vysledneho obrazku - gif (default), jpeg, png.

Kód:
<?php
/**
 * GZPP
 *
 * Graficke znazornenie poctu pristupov
 *
 * @author   stenley <stenley@webdev.sk>
 * @version   1.0
 */

class GZPP
{
   //pocet pristupov
   public $pristupy;

   //farba podkladu
   public $bgColor;
   
   //farba textu
   public $fontColor = "#FFFFFF";
   
   //farba oddelovaca cislic
   public $delColor;

   //veldkost pisma
   public $fontSize = 5;
   
   //minimalny pocet cislis na obrazku
   public $minDigits = 5;
   
   //vystupny format obrazku
   public $output_format;
   
   public function GZPP($pristupy)
   {
      $this->pristupy = $pristupy;

      if(strlen($pristupy)>$this->minDigits) {
           $this->minDigits = strlen($pristupy);
      }
   }
   
   //vygeneruje obrazok
   public function generate()
   {
      $this->setColors();
      $this->setFormat();
         
      header("Expires: ".GMDate("D, d M Y H:i:s")." GMT");
      header("Content-type: image/".$this->output_format);

      $decPosWidth = imagefontwidth($this->fontSize)+6;
      $decPosHeight = imagefontheight($this->fontSize)+4;
       
      $img = imagecreate($decPosWidth*$this->minDigits, $decPosHeight);
       
      $bgColor = imagecolorallocate($img, $this->bgColor['r'], $this->bgColor['g'], $this->bgColor['b']);
      $fontColor = imagecolorallocate($img, $this->fontColor['r'], $this->fontColor['g'], $this->fontColor['b']);
      $delColor = imagecolorallocate($img, $this->delColor['r'], $this->delColor['g'], $this->delColor['b']);

      for($i=$this->minDigits,$z=1; $i>=1; $i--) {
         $valueDecPos = 0;

         if($i<=strlen($this->pristupy)) {
            $valueDecPos = substr($this->pristupy, -$i, 1);
         }

         imagestring($img, $this->fontSize, $decPosWidth*$z-2-imagefontwidth($this->fontSize), 2, (int)$valueDecPos, $fontColor);

         if($i!=1) {
            imageline($img, $decPosWidth*$z, 0, $decPosWidth*$z, $decPosHeight, $delColor);
         }

         $z++;
      }
         
      eval("image".$this->output_format."(\$img);");
      imagedestroy($img);
   }
   
   //nastavi a vypocita potrebne zlozky farieb
   private function setColors()
   {
      if(empty($this->delColor)) {
           $this->delColor = $this->bgColor;
      }
       
      $this->bgColor = $this->hex2rgb($this->bgColor);
      $this->fontColor = $this->hex2rgb($this->fontColor);
      $this->delColor = $this->hex2rgb($this->delColor);
   }
   
   //nastavi spravny format vystupneho obrazku
   private function setFormat()
   {
      $this->output_format = eregi("gif|jpeg|png",$this->output_format) ? $this->output_format : "gif";
   }
   
   //vypocita RGB z HEX
   private function hex2rgb($hex)
   {
      $int = hexdec($hex);
      return array("r" => 0xFF&($int>>0x10), "g" => 0xFF&($int>>0x8), "b" => 0xFF&$int);
   }
}
?>

Priklady pouzitia:

Kód:
$pocet_pritupov = 12345;

$counter = new GZPP($pocet_pritupov);
$counter->generate();

Vysledok:
Obrázok

Kód:
$pocet_pristupov = 12345;

$counter = new GZPP($pocet_pristupov);
$counter->bgColor = "#5c81b1";
$counter->fontColor = "#ecf0f6";
$counter->minDigits = 7;
$counter->generate();

Vysledok:
Obrázok

Ako dat vysledny obrazok na stranku:
Kód:
<img src="gzpp.php" alt="Pocet pristupov" title="Pocet pristupov">

Tento priklad predpoklada, ze v subore gzpp.php je ulozena trieda aj s jej pouzitim v zmysle predchadzajucich ukazok.


Naposledy upravil stenley dňa Str 19.01.11 20:48, celkovo upravené 2






_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline
 Poslať Napísal autor témy: Štv 21.08.08 7:47
Predmet príspevku: Re: Užitočné a často používané skripty
 
Správca fóra
Správca fóra
Obrázok užívateľa

Registrovaný: 27.07.07
Príspevky: 3896
Bydlisko: Bratislava
Vek: 29
Trieda pre pracu so SESSION bez pouzitia databazy

Autor: stenley
Poziadavky: PHP5
Popis:

Nasledujuca trieda sluzi na jednoduchsiu a plnohodnotnu pracu so SESSION. Umoznuje pracovat s hodnotami session premennych (pridavanie, editovanie, mazanie), zistit, ci nejaka session premenna existuje, vratit cele pole session ci session id...
Kód:
<?php
/**
 * Session
 *
 * Trieda pre pracu so SESSION bez pouzitia databazy
 *
 * @author   stenley <stenley@webdev.sk>
 * @version   1.0
 */

class Session
{
   private $session;
   
   public function __construct()
   {
      $this->startSession();
   }
   
   //Nastavi session premennu 
   private function __set($name,$value)
   {
      if(array_key_exists($name,$this->session)) {
         $this->session[$name] = $value;
      } else {
         $this->addSessionVar($name,$value);
      }
   }
   
   //Vrati hodnotu session premennej 
   private function __get($name)
   {
      if(array_key_exists($name,$this->session)) {
         return $this->session[$name];
      } else {
         return false;
      }
   }
   
   //Inicializuje session 
   private function startSession()
   {
      session_start();
      $this->session = &$_SESSION;
   }
   
   //Prida novu session premennu a nastavi jej hodnotu
   private function addSessionVar($name,$value)
   {
      $this->session[$name] = $value;
   }
   
   //Vrati pole session
   public function getSession()
   {
      return $this->session;   
   }
   
   //Vrati session id
   public function getSessionID()
   {
      return session_id();
   }
   
   //Vymaze session premennu
   public function unsetSessionVar($name)
   {
      if(isset($this->session[$name])) {
         unset($this->session[$name]);   
      }
   }
   
   //Zisti, ci uz dana session premenna existuje
   public function issetSession($name)
   {
      return isset($this->session[$name]);
   }
   
   //Odstrani session
   public function destroySession()
   {
      foreach($this->session as $item) {
         $this->unsetSessionVar($item);
      }
      session_destroy();
   }
}
?>


Priklad pouzitia:

Kód:
//subor s triedou Session
require_once("session.class.php");

$sess = new Session();

//nastavenie hodnoty premennej (znamena $_SESSION['premenna'] = "hodnota")
$sess->premenna = "hodnota";

if($sess->issetSession("premenna")) {
   echo 'premenna existuje a obsahuje: '.$sess->premenna;
} else {
   echo 'premenna neexistuje';
}



Vysledok:
=========
premenna existuje a obsahuje: hodnota


Naposledy upravil stenley dňa Str 19.01.11 20:48, celkovo upravené 2






_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline
 Poslať Napísal: Pia 22.08.08 9:55
Predmet príspevku: Re: Užitočné a často používané skripty
 
Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.03.08
Príspevky: 1735
Bydlisko: triminka@spa...
Konverzia BBCode na HTML tagy

Autor: Triminka
Popis:
Citácia:
string bbcode ( string $str )

Tato funkcia odstrani nadefinovane BBCode znacky a nasledne ich zameni za normalne HTML tagy v retazci str.

Premenna $BBCode obsahuje definovane regexpy obsahujuce BBCode tagy a nimi obkolesene retazce, pricom premenna $HTMLTag obsahuje znacky HTML ktorymi sa prepisu BB tagy. Novy BBCode je mozne jednoducho pridat tak, ze pridame regularny vyraz do pola $BBCode a pridame taktiez to, za co sa ma zamenit do $HTMLTag.

Kód:
function bbcode($str)
{
   $BBCode = array("/\[b\](.*)\[\/b\]/isU", "/\[u\](.*)\[\/u\]/isU", "/\[i\](.*)\[\/i\]/isU", "/\[url\=(.*)\](.*)\[\/url\]/isU");
   $BBTag = array("<strong>$1</strong>", "<u>$1</u>", "<i>$1</i>", "<a href=\"$1\" target=\"_blank\" rel=\"nofollow\">$2</a>");

   $str = preg_replace($BBCode, $BBTag, $str);
   return $str;
}

Priklad pouzitia:

Kód:
$str = "[b]Macko[/b][i]pes[/i] [u]ma[/u] [url=www.dvenohy.com]dve nohy[/url]";
echo bbcode($str);

Vypise to Mackopes ma dve nohy.

//Na formatovanie zabudnite ked to pisem v okne noveho prispevku kde sa prekvapivo tabulator neda moc pouzivat :P

Tento skript plne spada pod licenciu BSD systemov.

//upravene formatovanie a nazov skriptu (stenley)

// Pre nechapavejsich: v regexpoch (.*?) nepouzivam preto, lebo nevidim dovod volat regexp engine zakazdym, ked niekto napise [b][/b] milion krat za sebou, zato pri odkaze sa to moze hodit =p

Ďuri 27.2.2010: Pridany U modifikator, nech to funguje. :)







_________________
Redeem the game of law! Despair the Billy, here are the morals! Come, relentless eraser rain, relentless eraser rain...
Offline
 Poslať Napísal: Sob 30.08.08 21:02
Predmet príspevku:
 
Užívateľ
Užívateľ

Registrovaný: 23.12.07
Príspevky: 98
Bydlisko: Svidnik
Cenzura

Autor: emer
Popis: Cenzura vybranych slov v texte

Kód:
function cenzuruj($text, $cenzura, $rozsirzleslova = 0, $rozdelovac = ','){
  $zleslova = array('zleslovo1', 'zleslovo2');
  if($rozsirzleslova !== 0){
    if(is_array($rozsirzleslova)){
      $zleslova = array_merge($zleslova, $rozsirzleslova);
    }else{
      $zleslova = array_merge($zleslova, (array)explode($rozdelovac, $rozsirzleslova));
    }
  }
  return str_replace(array_values($zleslova), $cenzura, $text);
}


Priklady pouzitia:
Kód:
$text = 'Toto je zleslovo1, ktore zacenzurujeme. A toto je zleslovo2, ktore tiez zacenzurujeme. Cenzure neunikne ani rozsirenezleslovo.';
echo cenzuruj($text, '/cenzura/', 'rozsirenezleslovo');

Kód:
$text = 'Toto je zleslovo1, ktore zacenzurujeme. A toto je zleslovo2, ktore tiez zacenzurujeme. Cenzure neunikne ani rozsirenezleslovo.';
echo cenzuruj($text, '/cenzura/', array('rozsirenezleslovo'));


//zmeneny povodny skript za univerzalnejsi (stenley)







_________________
... nebite ma ja sa to raz naucim....
Offline
 Poslať Napísal: Uto 09.09.08 14:46
Predmet príspevku:
 
Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 09.09.07
Príspevky: 3134
Bydlisko: Nové Zámky
Registracia s aktivaciou cez e-mail

Autor: Blackshadow

Popis:
Citácia:
Registracny formular, ktory posiela e-mail o uspesnej registracii s aktivacnym linkom, ktory ucet aktivuje..


Pouzitie:
Citácia:
Cez formular sa uzivatel zaregistruje. Potom si ucet aktivuje.
Pri prihlaseni kontrolujte, ci v DB ma v stlpci "aktiv" hodnotu "ano" - vtedy je aktivovany ucet.


Poznamka autora:
Citácia:
Samozrejme to nie je perfektny a najlepsi sposob, ale funguje celkom spolahlivo. Ak najdete chyby, napiste SS alebo do urcenej temy.
Ak ho pouzijete, prosim, kontaktujte ma, kde ste ho pouzili a ako ste s nim spokojny. Dakujem


registracia.php
Kód:
<?php
if (isset($_POST['zaregistrovat'])) {
// k databazi sme sa pripojili uz..
// osetrime vstupy, dal som len zaklady, kludne osetrite ako chcete.
  $nick = htmlspecialchars(addslashes($_POST['nick']));
  $heslo = htmlspecialchars(addslashes($_POST['heslo']));
  $hesloKontrola = htmlspecialchars(addslashes($_POST['hesloKontrola']));
  $mail = htmlspecialchars(addslashes($_POST['mail']));
  $meno = htmlspecialchars(addslashes($_POST['meno']));
  // mozete pouzit aj timestamp
  $datum = Date("j.m.Y H:i:s", Time());
  // generujeme kod pre aktivaciu
  $aktiv = md5(md5($datum).md5(rand(1,1000)));
  // nastavime premennu chyby na prazdnu
  $chyby = "";
  // upravime nick o nepovolene znaky
  $uprNick = preg_replace("~[^-a-zA-Z0-9_.]+~", "", $nick);
  // nemusite vyplnit, ak netriedite userov na ranky
  $rank = "user";
  $origoHeslo = $heslo;
 
  // overime spravnost nicku
  if (!$nick){ $chyby.="Nevyplnili ste prihlasovacie meno<br>"; }
            elseif (strlen($nick) < 4) { $chyby.="Prihlasovacie meno má menej ako 4 znaky<br>"; }
            elseif (strlen($nick) > 18) { $chyby.="Prihlasovacie meno má viac ako 18 znakov<br>"; }
            elseif ($nick != $uprNick) { $chyby.="Prihlasovacie meno má nepovolené znaky. Povolené sú: _,.<br>";}
            elseif ($nick == "admin" || $nick == "administrator" || $nick == "Admin" || $nick == "Administrator") { $chyby.="Chceš sa hrať na administrátora?<br>";}
  // overime spravnost hesla
  if (!$heslo){ $chyby.="Nevyplnili ste heslo<br>"; }
            elseif (strlen($heslo) < 4) { $chyby.="Heslo má menej ako 4 znaky<br>"; }
            elseif ($heslo != $hesloKontrola) { $chyby.="Zadané heslá niesú rovnaké<br>"; }
  // overime spravnost mailu
  if (!$mail){ $chyby.="Nevyplnili ste e-mail<br>"; }
            elseif (!eregi('^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$',$mail)) { $chyby.="Zlý formát emailu<br>"; }
     
     //overenie jedinecnosti nicku a mailu
      $query2 = "
      SELECT *
      FROM clenovia
      WHERE nick='$nick'
      ";
        $result2 = mysql_query($query2);
        $pocetRiadkov = mysql_num_rows($result2);
        if($pocetRiadkov == 1) { $chyby.="Toto prihlasovacie meno už je použité.<br>"; }
      $query2 = "
      SELECT *
      FROM clenovia
      WHERE mail='$mail'
      ";
        $result2 = mysql_query($query2);
        $pocetRiadkov = mysql_num_rows($result2);
        if($pocetRiadkov == 1) { $chyby.="Tento e-mail už je použitý.<br>"; }
           
           
  // ak sa zatial chyba nevyskytla, pokracujeme...
  if ($chyby == "") {
     
      // heslo si zabezpecte.. ja pouzivam md5 + moju funkciu
      $heslo = md5($heslo);
      $heslo = heslo($heslo);

      // ulozime do DB
      // musite mat v tabulke clenovia patricne stlpce
      $vlozit = "INSERT INTO clenovia
      ( nick, heslo, mail, meno, datum, aktiv, rank )
      VALUES
      ( '$nick', '$heslo', '$mail', '$meno', '$datum', '$aktiv', '$rank' )";
      $vysledok = mysql_query( $vlozit );
      if ($vysledok) {
                  $idUzivatela = mysql_insert_id();
                 
                  // odosielanie mailu
                  $komu = $mail;
                 
                  $predmet = "Aktivačný e-mail";
                  $headers = "Content-Type: text/html; charset=utf-8\n";
                  $headers .= "From: vas@mail.sk\r\n";
                 
                  $telospravy = "
                  Dobrý deň,<br>
                  ďakujeme vám za registráciu na stránke WEB4MEN. Pre dokončenie registrácie navštívte nasledujúci link:<br>
                  <a href=\"http://www.vasa-stranka.sk/aktivacia.php?kluc=$aktiv&id=$idUzivatela\">http://www.vasa-stranka.sk/aktivacia.php?kluc=$aktiv&id=$idUzivatela</a><br>
                  Vaše prihlasovacie meno je: $nick<br>
                  Vaše prihlasovacie heslo je: $origoHeslo<br>
                 
                   Ďakujeme<br>
                   <br>
                   (ak ste sa na tejto stránke neregistrovali, kontaktujte administrátora na maili: vas@mail.sk)
                  ";

                  if (mail($komu, $predmet, $telospravy, $headers )) {
                 
                  // presmerovanie, ak je mail odoslany
                  echo "
                    Zaregistrovali ste sa.
                    <script>
                    window.location.replace(\"/index.php\");
                    </script>";
                  exit();
                  } else {
                  $chyby.="Vyskytol sa problém s odosielaním mailu. Skúste znova, alebo kontaktujte administrátora";
                 
                  }
     
      } else {
       echo mysql_error();
       $chyby.= "Vyskytla sa chyba s databázou. Skúste znova, neskôr, alebo kontaktujte administrátora<br>";
    }
   
  }
     
}   

?>

<h1>Registrácia</h1>
        <p>Vypľň registračné údaje. Povinné položky sú označené hviezdičkou.
        </p>
       <br>
     
        <?php
        // ak sa vyskytla chyba, vypise ju
        if ($chyby != "") {
          echo "<p style=\"color: red\"><b>Vyskytli sa nasledujúce chyby:</b><br>
                $chyby
                </p><br>\n";
        }

        ?>     
        <!--
        Toto si mozete spravit ako potrebujete
        vo value to zobrazuje zadane udaje, ak to hodi chybu, aby sa nemuseli este raz vyplnat
         -->     
        <form name="form" method="post">
        <table >
        <tr>
          <td><b>Prihlasovacie meno*:</b></td>
          <td><input type="text" size="18" maxlength="18" name="nick" class="tmave" <?php if(isset($_POST['zaregistrovat'])) {echo "value=\"$nick\"";} ?>>  maximálne 18 znakov, minimálne 4 znaky, bez diakritiky, medzier a špeciálnych znakov</td>
        </tr>
       
        <tr>
          <td><b>Heslo*:</b></td>
          <td><input type="password" size="10" name="heslo" class="tmave"> minimálne 4 znaky</td>
        </tr>
        <tr>
          <td><b>Heslo ešte raz pre kontrolu*:</b></td>
          <td><input type="password" size="10" name="hesloKontrola" class="tmave"></td>
        </tr>
        <tr>
          <td><b>Váš platný e-mail*:</b></td>
          <td><input type="text" size="18" name="mail" class="tmave" <?php if(isset($_POST['zaregistrovat'])) {echo "value=\"$mail\"";} ?>> na tento e-mail Vám bude zaslaný aktivačný link</td>
        </tr>
        <tr>
          <td><b>Vaše meno:</b></td>
          <td><input type="text" size="18" name="meno" class="tmave" <?php if(isset($_POST['zaregistrovat'])) {echo "value=\"$meno\"";} ?>></td>
        </tr>
       
        <tr>
          <td colspan="2"><input type="submit" name="zaregistrovat" class="tmave" value="Zaregistrovať"> <input type="reset" name="reset" class="tmave" value="Zmaž údaje"> </td>
        </tr>
       
        </table>
        </form>


aktivacia.php
Kód:
<h1>Aktivácia účtu</h1>
<?php
// overime, ci je zadany kluc a ID uzivatela, a ci je ID cislo
if (isset($_GET['kluc']) && isset($_GET['id']) && is_numeric($_GET['id'])) {

// osetrime, ak chcete, mozte aj inak
$kluc = addslashes($_GET['kluc']);
// odstranujem z klucu pomlcky
// v md5 hashi sa nemozu nachadzat a v DB narobia problemy
// pre istotu !
$kluc = str_replace("-","",$kluc);
$idUzivatela = $_GET['id'];

// najdeme v DB uzivatela, co ma v stlpci aktiv dany kluc
$query2 = "
  SELECT *
  FROM clenovia
  WHERE id='$idUzivatela' && aktiv='$kluc'
  ";

$result2 = mysql_query($query2);
$pocetRiadkov = mysql_num_rows($result2);
if($pocetRiadkov == 1) {
 
  // nasli sme usera, tak mu aktiv nastavime na "ano"
  $query = "
  UPDATE clenovia SET aktiv='ano' WHERE id='$idUzivatela'
  ";
  $update = mysql_query($query);
 
  // vypiseme chybu, alebo uspech
  if ($update == false ) {
    echo "
    <p style=\"color:red;\">Niekde sa vyskytla chyba. Skúste znova, alebo kontaktujte administrátora.</p>
    ";
    } else {
    echo "<p>Aktivácia prebehla úspešne. Môžete sa prihlásiť vpravo hore.</p>";
    }

} else {
 
  // ak sa zadany kluc nezhoduje
  echo "<p>Tento aktivačný klúč nezodpovedá k užívateľovi. Skúste znova alebo kontaktujte administrátora.</p>";
}
  // ak nezadali kluc alebo ID
} else {
  echo "<p>Nieje zadaný aktivačný klúč alebo ID užívatela.</p>";
}
?>







_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Offline
 Poslať Napísal autor témy: Štv 18.09.08 21:06
Predmet príspevku:
 
Správca fóra
Správca fóra
Obrázok užívateľa

Registrovaný: 27.07.07
Príspevky: 3896
Bydlisko: Bratislava
Vek: 29
Sprava URL adresy

Autor: stenley
Popis:
Citácia:
string generateURL ( [mixed $param1, mixed $value1, ...] )

Nasledujuca funkcia sluzi na zmenu, pridanie ci vymazanie parametrov a ich hodnot nachadzajucih sa v aktualnej URL adrese. Umoznuje zmenit viacero parov (parameter-hodnota) naraz. Ak sa funkcii nepreda ziadny parameter, vracia sa vsetko od nazvu aktualne spracovavaneho skriptu vratane.

Kód:
<?php
/**
 * generateURL()
 *
 * Sprava URL adresy
 *
 * @author   stenley <stenley@webdev.sk>
 * @version   1.4
 */

function generateURL() {
   $GET = $_GET;
   $QUERY_STRING = '';
   $SCRIPT_NAME = substr(strrchr($_SERVER["SCRIPT_NAME"],"/"),1);
   
   $num_args = func_num_args();
   if($num_args>0 && $num_args%2==0) {
      $args = func_get_args();
       
      foreach($args as $index => $paramName) {
         $paramName = trim($paramName);
         
         if($index%2==0 && !empty($paramName)) {
            $paramValue = trim($args[$index+1]);
             
            if(array_key_exists($paramName, $GET) && empty($paramValue)) {
               unset($GET[$paramName]);   
            } elseif(!empty($paramValue)) {
               $GET[$paramName] = $paramValue;
            }
         }
      }
   }
   
   foreach($GET as $param => $value) {
      $QUERY_STRING .= $param."=".$value."&amp;";
   }
   
   return $SCRIPT_NAME.((empty($QUERY_STRING)) ? '' : "?".substr($QUERY_STRING,0,-5));
}
?>


Verzia funkcie podporujuca polia v url
Kód:
<?php
/**
 * generateURL()
 *
 * Sprava URL adresy
 *
 * @author   stenley <stenley@webdev.sk>
 * @version   1.5
 * @license   http://opensource.org/licenses/gpl-license.php GNU Public License
 */

function generateURL() {
   $GET = $_GET;
   $QUERY_STRING = '';
   $SCRIPT_NAME = substr(strrchr($_SERVER["SCRIPT_NAME"],"/"),1);
   
   function parseGET($varName, $arr, $indent=0) {
      static $str;
      static $path = array();
   
      foreach($arr as $key => $value) {
         if(is_array($value)) {
            $path[$indent] = $key;
            parseGET($varName, $value, $indent+1);
         } else {
            if(!empty($value)) {
               $str .= $varName;
               if($path) {
                  for($i=0; $i<$indent; $i++) {
                     $str .= '['.$path[$i].']';
                  }
               }
               $str .= '['.$key.']='.$value.'&amp;';
            }
         }
      }
      return $str;
   }

   $num_args = func_num_args();
   if($num_args>0 && $num_args%2==0) {
      $args = func_get_args();
       
      foreach($args as $index => $paramName) {
         $paramName = trim($paramName);
         
         if($index%2==0 && !empty($paramName)) {
            $paramValue = trim($args[$index+1]);
         
            preg_match("/^([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)((\[[^\[\]]+\])+)$/", $paramName, $matches);

            if($matches) {
               $var = 'GET[\''.$matches[1].'\']'.$matches[2];
               @eval("\$varExists = isset(\$$var);");
               
               if($varExists && empty($paramValue)) {
                  @eval("unset(\$$var);");
               } elseif(!empty($paramValue)) {
                  @eval("\$$var = \$paramValue;");
               }
            } else {
               if(array_key_exists($paramName, $GET) && empty($paramValue)) {
                  unset($GET[$paramName]);   
               } elseif(!empty($paramValue)) {
                  $GET[$paramName] = $paramValue;
               }
            }
         }
      }
   }

   foreach($GET as $param => $value) {
      if(is_array($value)) {
         $QUERY_STRING .= parseGET($param, $value);
      } else {
         $QUERY_STRING .= $param."=".$value."&amp;";
      }
   }
   
   return $SCRIPT_NAME.((empty($QUERY_STRING)) ? '' : "?".substr($QUERY_STRING,0,-5));
}
?>


Priklady pouzitia:

1. Zistenie aktualnej adresy:
Aktualna adresa: index.php?x=1&y=2
Pouzitie: generateURL()
Vysledok: index.php?x=1&y=2

2. Pridanie noveho parametra "z" s hodnotou "3":
Aktualna adresa: index.php?x=1&y=2
Pouzitie: generateURL("z",3)
Vysledok: index.php?x=1&y=2&z=3

3. Zmena hodnoty parametra "x" na "2":
Aktualna adresa: index.php?x=1&y=2
Pouzitie: generateURL("x",2)
Vysledok: index.php?x=2&y=2

4. Vymazanie parametra "y":
Aktualna adresa: index.php?x=1&y=2
Pouzitie: generateURL("y","")
Vysledok: index.php?x=1

5. Pridanie viacerych parametrov a hodnot:
Aktualna adresa: index.php?x=1&y=2
Pouzitie: generateURL("z",3,"a",4,"b",5)
Vysledok: index.php?x=1&y=2&z=3&a=4&b=5

6. Zistenie aktualnej adresy:
Aktualna adresa: index.php?x=1&param[key]=value
Pouzitie: generateURL()
Vysledok: index.php?x=1&param[key]=value

Aktualna adresa: index.php?param[]=value1&param[]=value2
Pouzitie: generateURL()
Vysledok: index.php?param[0]=value1&param[1]=value2

7. Pridanie noveho parametra "param[key2]" s hodnotou "value2":
Aktualna adresa: index.php?x=1&param[key]=value
Pouzitie: generateURL("param[key2]","value2")
Vysledok: index.php?x=1&param[key]=value&param[key2]=value2


Naposledy upravil stenley dňa Str 19.01.11 20:49, celkovo upravené 3






_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline
 Poslať Napísal autor témy: Pon 29.09.08 23:22
Predmet príspevku:
 
Správca fóra
Správca fóra
Obrázok užívateľa

Registrovaný: 27.07.07
Príspevky: 3896
Bydlisko: Bratislava
Vek: 29
Zistenie skutocnej IP adresy

Autor: stenley
Popis:
Citácia:
string getIpAddress ( void )

Ip adresa klienta (navstevnika) je bezne dostupna v php premennych REMOTE_ADDR. Ak sa vsak klient "skryva" za nejakym proxy serverom, na zistenie jeho skutocnej IP adresy nam tato premenna velmi neposluzi. Vacsinou je v nej ulozena prave ip adresa proxy serveru. Nasledujuci kod umoznuje zistit skutocnu ip adresu klienta, ak sa nachadza za transparentnym alebo anonymnym proxy serverom, v pripade elite proxy serverov sa vracia ip adresa proxy.

Kód:
<?php
/**
 * getIpAddress()
 *
 * Zistenie skutocnej IP adresy
 *
 * @author   stenley <stenley@webdev.sk>
 * @version   1.0
 */

function getIpAddress()
{
   $basicIP = getenv("REMOTE_ADDR");
   $realIP = getenv("HTTP_X_FORWARDED_FOR");
   
   if(empty($realIP)) { $realIP = getenv("HTTP_X_FORWARDED"); }
   if(empty($realIP)) { $realIP = getenv("HTTP_FORWARDED_FOR"); }
   if(empty($realIP)) { $realIP = getenv("HTTP_FORWARDED"); }
   
   $proxyFlag = empty($realIP) ? 0 : 1;
   
   if(!$proxyFlag) {
      $realIP = getenv("HTTP_VIA");
      if(empty($realIP)) { $realIP = getenv("HTTP_X_COMING_FROM"); }
      if(empty($realIP)) { $realIP = getenv("HTTP_COMING_FROM"); }
      if(!empty($realIP)) { $proxyFlag = 2; }
   }
   
   if($realIP==$basicIP) { $proxyFlag = 0; }
   
   switch($proxyFlag) {
      case '0':
         $ipadr = $basicIP;
         break;
      case '1':
         $tmp = ereg("^([0-9]{1,3}\.){3,3}[0-9]{1,3}", $realIP, $zhoda);
         if($tmp && (count($zhoda)>0)) {
            $ipadr = $zhoda[0];
         } else {
            $ipadr = $basicIP;
         }
         break;
      case '2':
         $ipadr = $basicIP;
   }
   
   return $ipadr;
}
?>


Priklady pouzitia:

Ip adresa klienta: 123.123.123.123
Pouzity anonymous proxy: 222.222.222.222
Kód:
echo getIpAddress();

Vypise: 123.123.123.123 (cize sa zisti ipcka klienta a nie proxy serveru)
Premenna $_SERVER['REMOTE_ADDR'] by obsahovala adresu proxy servera 222.222.222.222

Poznamka: Spominane ip adresy su vymyslene.


Naposledy upravil stenley dňa Str 19.01.11 20:49, celkovo upravené 2






_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline
 Poslať Napísal autor témy: Štv 09.10.08 21:59
Predmet príspevku:
 
Správca fóra
Správca fóra
Obrázok užívateľa

Registrovaný: 27.07.07
Príspevky: 3896
Bydlisko: Bratislava
Vek: 29
Pocet pracovnych dni medzi 2 datumami

Autor: stenley
Popis:
Citácia:
int getWorkDays ( string $date1, string $date2 )

Nasledujuca funkcia sluzi na zistenie poctu pracovnych dni medzi datumami $date1 a $date2 vratane, tzn. po-pia predstavuje 5 pracovnych dni. Oba datumy musia mat format YYYY-MM-DD. V pripade, ze nie je splnena tato podmienka, funkcia vracia FALSE.

Kód:
<?php
/**
 * getWorkDays()
 *
 * Pocet pracovnych dni medzi 2 datumami
 *
 * @author   stenley <stenley@webdev.sk>
 * @version   1.1
 */

function getWorkDays($date1,$date2)
{
   $regexp = "^[0-9]{4}-[0-9]{2}-[0-9]{2}$";   //pozadovany format datumu
   
   if(ereg($regexp,$date1) && ereg($regexp,$date2)) {
      list($year,$month,$day) = explode("-",$date1);
      $date1 = mktime(0,0,0,$month,$day,$year);
      
      list($year,$month,$day) = explode("-",$date2);
      $date2 = mktime(0,0,0,$month,$day,$year);
      
      if($date1 > $date2) {
         $tmp = $date1;
         $date1 = $date2;
         $date2 = $tmp;
      }
      
      $date1_weekday = date("N",$date1);   //cislo dna v tyzdni
      $date2_weekday = date("N",$date2);    //cislo dna v tyzdni
      
      $diff = ceil(($date2-$date1)/86400);  //rozdiel dni medzi datumami
      $diff -= 7 - $date1_weekday;           //odpocitany 1.tyzden
      $diff -= $date2_weekday;               //odpocitany posledny tyzden
      
      $work_days = 0;
      
      //pracovne dni v tyzdni s datumom date1
      $work_days += ($date1_weekday <= 5) ? 5 - $date1_weekday + 1 : 0;
      
      //pracovne dni v tyzdni s datumom date2
      $work_days += ($date2_weekday <= 5) ? $date2_weekday : 5;
      
      //pracovne dni medzi
      $work_days += ($diff / 7) * 5;
      
      return $work_days;
   }
   
   return false;
}
?>


Priklady pouzitia:

Ako zistit pocet pracovnych dni medzi datumami 1.10.2008 (streda) a 9.10.2008 (stvrtok):
Kód:
echo getWorkDays("2008-10-01","2008-10-09");
Vypise: 7


Naposledy upravil stenley dňa Str 19.01.11 20:49, celkovo upravené 3






_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline
 Poslať Napísal autor témy: Uto 14.10.08 23:01
Predmet príspevku:
 
Správca fóra
Správca fóra
Obrázok užívateľa

Registrovaný: 27.07.07
Príspevky: 3896
Bydlisko: Bratislava
Vek: 29
Jednoduchy nakupny kosik cez SESSION

Autor: stenley
Poziadavky: PHP5
Popis:

Prirodzenou sucastou kazdeho eshopu je nakupny kosik, do ktoreho si ulozite produkty, ktore si planujte objednat/kupit. Tento skript ilustruje prave takyto kosik, teda pridavanie (odstranovanie) produktov - manipulaciu s kosikom, nezahrna objednanie produktov pridanych do kosiku. Obsah kosika, ako aj celkova cena produktov v nom, su ukladane do session premennych. Pomocou triedy Basket su vykonavane vsetky akcie, potrebne pre pridavanie/odstranovanie/ziskanie produktov, ako aj vymazanie obsahu kosiku.

Kód:
<?php
/**
 * Basket
 *
 * Jednoduchy nakupny kosik cez SESSION
 *
 * @author   stenley <stenley@webdev.sk>
 * @version   1.1
 */

class Basket
{
   private $BASKET;   //obsah kosiku
   private $PRICE;      //cena produktov v kosiku
   
   function __construct()
   {
      if(!isset($_SESSION['basket'])) {
         $_SESSION['basket'] = array();
         $_SESSION['price'] = 0;
      }
      
      $this->BASKET = &$_SESSION['basket'];
      $this->PRICE = &$_SESSION['price'];
   }

   //prida novu polozku do kosika
   public function AddItem($itemData,$itemDataKey='')
   {
      if(empty($itemDataKey)) {
         $this->BASKET[] = $itemData;
      } else {
         if(array_key_exists($itemDataKey,$this->BASKET)) {
            $this->BASKET[$itemDataKey]['quantity'] += $itemData['quantity'];
         } else {
            $this->BASKET[$itemDataKey] = $itemData;
         }
      }
   }

   //ziska data z kosika
   public function GetData()
   {
      return $this->BASKET;
   }

   //ziska celkovu sumu kosika
   public function GetPrice()
   {
      $tmp_price = 0;

      $arrData = $this->GetData();

      foreach($arrData as $item) {
         $tmp_price += $this->SumPrice($item);
      }

      $this->PRICE = $tmp_price;

      return $this->PRICE;
   }

   //vymaze polozku z kosika
   public function DeleteItem($itemDataKey)
   {
      unset($this->BASKET[$itemDataKey]);
   }

   //spocita celkovu sumu v kosiku
   private function SumPrice($item)
   {
      $tmp_price = 0;

      if(array_key_exists("price",$item)) {
         $tmp_price += $item['price']*$item['quantity'];
      }

      return $tmp_price;
   }

   //vyprazdni kosik
   public function DeleteBasket()
   {
      $this->BASKET = array();
      $this->PRICE = 0;
   }
}
?>


Priklad pouzitia:

Pre zjednodusenie budu jednotlive produkty ulozene v poli:

Kód:
$produkty[1] = array(
   'nazov' => 'Produkt 1',
   'popis' => 'popis k 1.produktu',
   'cena' => 30
);
$produkty[2] = array(
   'nazov' => 'Produkt 2',
   'popis' => 'popis k 2.produktu',
   'cena' => 50
);


Nasledujuci kod (ulozeny v subore index.php) spolu s polom produktov vypisuje aktualny obsah kosika, celkovu sumu produktov v kosiku, obsahuje moznost pridat jednotlive produkty do kosiku a vymazat obsah kosika:

Kód:
session_start();

$kosik = new Basket;

if(isset($_GET['empty'])) {
   //vymazanie obsahu kosiku
   $kosik->DeleteBasket();
   header("Location: ./");   
}

if(!empty($_GET['id']))
{
   $id = $_GET['id'];
   if(array_key_exists($id,$produkty))
   {
      //pridanie produktu (1ks) do kosiku
      $kosik->AddItem(array('title'=>$produkty[$id]['nazov'], 'price'=>$produkty[$id]['cena'],'quantity'=>1),$id);
      header("Location: ./");
   }
}
?>
<h1>Obsah kosika</h1>
<?php
foreach($kosik->GetData() as $item)
{
   echo $item['title'].' (cena: '.$item['price']*$item['quantity'].',-Sk/'.$item['quantity'].'ks)<br>';
}

echo 'Celkova cena: '.$kosik->GetPrice();
?>
<p>
<?php
foreach($produkty as $id => $produkt) {
   echo '<a href="?id='.$id.'">Pridat do kosika '.$produkt['nazov'].'</a><br>';
}
?>
</p>
<p><a href="?empty">Vymazat obsah kosika</a></p>


Naposledy upravil stenley dňa Str 19.01.11 20:49, celkovo upravené 4






_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline
 Poslať Napísal autor témy: Pia 24.10.08 14:02
Predmet príspevku:
 
Správca fóra
Správca fóra
Obrázok užívateľa

Registrovaný: 27.07.07
Príspevky: 3896
Bydlisko: Bratislava
Vek: 29
Strankovanie

Autor: stenley
Poziadavky: funkcia generateURL() z tejto temy
Popis:
Citácia:
string pagination ( int $numRows, int $rowsPerPage [, int $maxPages ] )

Strankovanie je vhodne, ked chcete rozdelit vacsie mnozstvo dat na mensie kusky. Opodstatnene vyuzitie ma napr. pri zobrazovani vysledkov vyhladavania, ked chcete na stranu zobrazit len obmedzeny pocet zaznamov kvoli prehladnosti. Nasledujuca funkcia vytvara odkazy na jednotlive stranky s tym, ze je mozne obmedzit, kolko cisiel stranok sa zobrazi. Tato hodnota sa uvadza ako nepovinny 3. parameter funkcie, pricom default hodnota je 15. Tzn. ak bude stranok 40, vzdy sa zobrazi len 15 cisiel, ktore sa budu postupne menit posuvanim sa v zozname stranok.
$numRows urcuje celkovy pocet zaznamov (clankov, vysledkov vyhladavania, ...) a $rowsPerPage predstavuje pocet zaznamov zobrazenych na jednej stranke.

Kód:
<?php
/**
 * pagination()
 *
 * Strankovanie
 *
 * @author   stenley <stenley@webdev.sk>
 * @version   1.2
 */

function pagination($numRows, $rowsPerPage, $maxPages=15)
{
   global $page, $numPages;

   $ret = "";

    if($numPages>0) {
      if(!isset($page)) {
         $page = 1;        //cislo aktivnej stranky (default=1)
      }
      $from = 1;        //cislo stranky, od ktoreho sa zacina strankovanie
      $to = $numPages;    //cislo stranky, kde strankovanie konci
      $padd_a = ceil($maxPages/2);  //pre pozicovanie cisla aktivnej stranky v strankovani
      $padd_b = floor($maxPages/2); //pre pozicovanie cisla aktivnej stranky v strankovani
      
      //vypocitanie prveho a posledneho cisla stranky v strankovani (pre potreby for cyklu)
      if($page >= $maxPages) {
         $from = $page - $maxPages + $padd_a;
         $to = $from + $maxPages - 1;
         
         if($page == $numPages || $page + $padd_b >= $numPages) {
            $to = $numPages;
            $from = $to - $maxPages + 1;
         }
      }
      
      //odkaz na prvu stranku
      $ret .= (($page > 1) ? '<a href="'.generateURL(PAGEVAR,1).'">&lt;&lt;</a>' : '&lt;&lt;').'&nbsp;';
      
      //odkaz na predoslu stranku
      $ret .= (($page > 1) ? '<a href="'.generateURL(PAGEVAR,$page-1).'">&lt;</a>' : '&lt;').'&nbsp;';
      
      //strankovanie
      for($i = $from; $i <= $to; $i++) {
         if(--$maxPages >= 0) {
            if($page == $i) {
                 $ret .= $i;    //aktivna stranka
            } else {
                 $ret .= '<a href="'.generateURL(PAGEVAR,$i).'">'.$i.'</a>'; //ostatne stranky
            }
            $ret .= DELIMITER;
         } else {
            break;
         }
      }
      
      //odstranenie oddelovaca za poslednou strankou
      $ret = substr($ret,0,-strlen(DELIMITER)).'&nbsp;';
      
      //odkaz na nasledujucu stranku
      $ret .= (($page < $numPages) ? '<a href="'.generateURL(PAGEVAR,$page+1).'">&gt;</a>' : '&gt;').'&nbsp;';
      
      //odkaz na poslednu stranku
      $ret .= (($page < $numPages) ? '<a href="'.generateURL(PAGEVAR,$numPages).'">&gt;&gt;</a>' : '&gt;&gt;');
      
      return $ret;
   }
   
   return false;
}
?>


Priklad pouzitia:

Majme v db ulozene nazvy pesniciek zaradene do roznych zanrov (pop, rock, ...). Pre zjednodusenie predpokladame, ze v kategorii pop je 631 pesniciek. Chceme vypisat nazvy tychto piesni tak, aby sa na jednej stranke zobrazilo max. 8 skladieb, pricom design webu umoznuje zobrazit max 9 cisiel stranok.
Poznamka: cislo aktivnej stranky je v adrese ulozene v parametri page.
$page a $numPages su globalne premenne funkcie pagination

Kód:
define("PAGEVAR", "page");    //nazov parametra v GET, kde sa uchovava cislo stranky
define("DELIMITER", " | ");   //oddelovac cisiel stranok
   
$page = 1;        //cislo aktivnej stranky (default=1)

$numRows = 631;
$rowsPerPage = 8;
$maxPages = 9;

$numPages = ceil($numRows/$rowsPerPage);     //pocet stranok v strankovani

if(!empty($_GET[PAGEVAR]) && $_GET[PAGEVAR]>0 && intval($_GET[PAGEVAR])<=$numPages) {
   $page = $_GET[PAGEVAR];
}

$offset = ($page - 1) * $rowsPerPage;

$sql = "SELECT id, nazov FROM mp3 WHERE zaner='pop' LIMIT $offset,$rowsPerPage";
$res = mysql_query($sql);
if($res!==false) {
   while(list($id,$nazov) = mysql_fetch_row($res)) {
      echo '<p>'.$id.' - '.$nazov.'</p>';
   }
}

echo pagination($numRows, $rowsPerPage, $maxPages);


Vysledok (zoznam stranok):

URL: index.php?page=1 (aktivna stranka 1)
<< < 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 > >>

URL: index.php?page=20 (aktivna stranka 20)
<< < 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 > >>


Naposledy upravil stenley dňa Str 19.01.11 20:50, celkovo upravené 7






_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Zobraziť príspevky z predchádzajúceho:  Zoradiť podľa  
 [ Príspevkov: 37 ] Choď na stránku 1, 2, 3  Ďalší


Užitočné a často používané skripty




Časové pásmo: Europe/Bratislava [ letný čas ]


Podobné témy

 Témy  Autor  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Tema pre casto pouzivane skripty

[ Choď na stránkuChoď na stránku: 1 ... 13, 14, 15 ]

stenley

223

10878

Uto 08.01.13 9:18

dulius Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. hack- používane názvy

[ Choď na stránkuChoď na stránku: 1, 2 ]

lolko

16

782

Ned 03.05.09 18:32

lolko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Php skripty

sonyc01

10

4342

Štv 28.09.06 11:57

mokus Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP skripty bez ?>

maťo*

5

96

Pon 10.06.13 22:59

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. skripty serverove klientske atd

euthanan

6

252

Pia 17.10.08 14:21

euthanan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Neviem spustat PHP skripty v PC

LUBOLUBO

1

272

Sob 26.02.11 16:20

Ďuri Zobrazenie posledných príspevkov


Kto je online

Užívatelia prezerajúci fórum: Žiadny registrovaný užívateľ nie je prítomný a 0 hostia


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB 3.x.x © 2005 - 2014 PCforum, webhosting by WebSupport, edited by JanoF