Tartalomjegyzék

< PHP

PHP minták

Dátum

Néha szükségünk van az aktuális dátumra, vagy éppen az időpontra. A date() függvény segíthet számunkra. Paraméterként egy karaktersorozatban meg kell adni milyen formában szeretnénk viszontlátni a dátumot vagy éppen az időt.

Ha például szeretnénk az évet, akkor egy „Y”-t írunk. A hónap megjelenítésére, az m kód használható. A napok megjelenítésére „d” kód.

Dátum megjelenítésére példa:

$today = date("Y-m-d"); 
 
print $today;

Működés közben:

2024-11-23

További formázási lehetőségeket a következő táblázat alapján valósíthatunk meg:

Használható kódok
d A hónap napja (forma 01 to 31)
D A nap szöveges megjelenéssel (három betű)
j A hónap napja vezető nullák nélkül (1 to 31)
l (kisbetűs 'L') - A nap teljes szöveggel
N A nap ISO-8601 számformátumban (Hétfő 1 -től Vasárnap 7-ig)
S Angol elöljárók a hónap napjai számára (2 karakter st, nd, rd vagy th. Jól működik a j-vel)
w A hét napja számmal 0 és 6 között (0 vasárnaptól egészen 6-os szombatig)
z Az év adott napja (0-tól - 365-ig)
W Az év hete számmal, az ISO-8601 szerint (a hét hétfővel kezdődik)
F A hónap teljesen szövegesen (January - December)
m A hónap számokkal (01 – 12)
M A hónap rövid szöveges formája (három betű)
n A hónap számokkal, vezető nullák nélkül (1 – 12)
t A napok száma az adott hónapban
L Az adott év szökőév? (1 ha szökőév, 0 ha nem)
o A ISO-8601 szerinti év számmal
Y Az év négy számjeggyel ábrázolva
y Az év két számjeggyel ábrázolva
a Kisbetűs am vagy pm
A Nagybetűs AM vagy PM
B Swatch Internet time (000 – 999)
g Egy óra 12-órás formában (1 – 12)
G Egy óra 24-órás formában (0 to 23)
h Egy óra 12-órás formában (01 to 12)
H Egy óra 24-órás formában (00 to 23)
i Perc, vezető nullákkal (00 to 59)
s Másodperc, vezető nullákkal (00 to 59)
e Az időzóna azonosítója (Például: UTC, Atlantic/Azores)
I (nagybetűs i) - Vajon nyári időszámításban van a dátum? (1 nyári időszámítás esetén, 0 ha nem)
O Greenwich-től hány órára vagyunk (GMT) órában (Például: +0100)
T Időzóna beállítás a PHP-t futtató gépen. (Például: EST, MDT)
Z Időzóna lépték másodpercben. Az UTC nyugatra negatív, keletre pozitív (-43200 – 43200)
c Az ISO-8601 szerinti dátum (pl. 2004-02-12T15:19:21+00:00)
r The RFC 2822 formatted date (pl. Thu, 21 Dec 2000 16:01:07 +0200)
U Az eltelt idő másodpercekben Unix idő óta (January 1 1970 00:00:00 GMT)

Gyakorlat 001

Weblap fejlécének előállítása

<?php
header('Content-Type: text/html; charset=utf-8');
header('X-Custom-Header-1: foobar')
?>

Fájlkezelés

Megnyitás hozzáfűzésre:

$adatfile = fopen("adat.txt", "a") or exit("Nem tudom megnyitni a fájlt!");
fputs($adatfile, "Adat\n\n");
fclose($adatfile);

LDAP

$ldapConn=ldap_connect("localhost");
ldap_set_option($ldapConn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldapConn, LDAP_OPT_REFERRALS, 0);
 
if ($ldapConn) 
{
    //bind ha kell:
    $ldapBind=ldap_bind($ldapConn,"BindUser","BindPassword");
 
    $ldapBase="ou=People,dc=domain,dc=com";
    $filter="cn=$UserName*";
    $justthese = array( "givenName", "sn", "mail", "description");
 
    $ldapSearch = ldap_search($ldapConn, $ldapBase, $filter, $justthese);
 
    $info = ldap_get_entries($ldapConn, $ldapSearch);
 
    print_r($info);
}

IP cím lekérdezése

echo "Távoli cím: " . $_SERVER['REMOTE_ADDR']."<br/>";
echo "X Forward: " . $_SERVER['HTTP_X_FORWARDED_FOR']."<br/>";
echo "IP kliens: " . $_SERVER['HTTP_CLIENT_IP']."<br/>";
function getIp() {
    $ip = $_SERVER['REMOTE_ADDR'];
 
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
 
    return $ip;
}

Átirányítás

header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.masikdomain.valahol/');
exit();

Kérjünk be 0 végjelig minta

Olyan feladatok megoldásához nyújt segítséget, ahol például számokat kell bekérni 0 végjelig. Az index.php a példában minidig önmagát hívja.

index.php
<?php
 
header("Content-Type: text/html; charset=UTF-8");
$szam = $_GET['szam'];
$osszeg = $_GET['osszeg'];
$szamlalo = $_GET['szamlalo'];
$osszeg = $osszeg + $szam;
$szamlalo++;
 
if($szam == "0" )
{
    $szamlalo = $szamlalo -2;
    print "Összeg: ".$osszeg."<br />";
    print "Számláló: ".$szamlalo."<br />";
    print "Átlag: ". $osszeg / $szamlalo ."<br />";
}
else
{
 
    print <<<EOT
<form action="index.php">
Szam: <input type="text" name="szam" /><br />
<input type="submit" />
<input type="hidden" name="osszeg" value=$osszeg />
<input type="hidden" name="szamlalo" value=$szamlalo />
</form>
EOT;
 
}
 
 
?>

A program nem csak a bekérést valósítja meg, de számol, összegez és átlagol.

A kiíratás előtt le kell levonni 2-t. Egyet azért, mivel a $szamlalo már eleve 1-gyel kezd a weblap első megjelenéskor. A másik egyes értéket pedig azért mert a program a 0 érték végjelet is megszámolja, amit nem kell.

0 végjelig számok, majd maximum és minimum számítás

index.php
<?php
 
header("Content-type:text/html; charset=UTF-8");
 
if(!isset($_GET['szam']))
{
	urlap();
}
else if($_GET['szam'] == "0")
{
	$min = $_GET['min'];
	$max = $_GET['max'];
	echo "Minimum: ". $min . "<br />";
	echo "Maximum: ". $max . "<br />";
}
else
{
	$szam = $_GET['szam'];
	$min = $_GET['min'];
	$max = $_GET['max'];
	$szamlalo = $_GET['szamlalo'];
 
	if($szamlalo > 0)
	{
		if($min > $szam)
			$min = $szam;
	}
	else
	{
		$min = $szam;
	}
 
	if($max<$szam)
		$max = $szam;
	$szamlalo++;
	urlap();
}
 
function urlap()
{	
	global $min, $max, $szam, $szamlalo;
	echo "<form action=\"index.php\" method=\"get\">\n";
	echo "Szám: <input type=\"text\" name=\"szam\"><br />\n";
	echo "<input type=\"submit\">\n";
	echo "<input type=\"hidden\" name=\"min\" value=$min>\n";
	echo "<input type=\"hidden\" name=\"max\" value=\"$max\">\n";
	echo "<input type=\"hidden\" name=\"szamlalo\" value=\"$szamlalo\">\n";
	echo "</form>";
 
}
 
?>

Könyvtár olvasása

index.php
<?php
if ($handle = opendir('.')) 
{
    while (false !== ($entry = readdir($handle))) 
    {
        if ($entry != "." && $entry != "..") 
        {
            echo "$entry\n";
        }
    }
    closedir($handle);
}
?>

Véletlen karaktersorozat generálása

function genRandStr($length = 10)
{
	return substr(str_shuffle(implode(array_merge(range(0,9), range('a','z'), range('A','Z')))), 0, $length);
}

Más domainről felhasználható adat

XMLHttpRequest cannot load http://localhost/tasks. 
No 'Access-Control-Allow-Origin' header is present 
on the requested resource. Origin 
'http://localhost:9000' is therefore not allowed access.
header('Access-Control-Allow-Origin: *');

JSON

$jsonData = json_encode($tomb);

Fájl betöltése

<textarea>

<?php
$fn = "adat.txt";
print htmlspecialchars(implode("",file($fn)));
?>

</textarea>

Heredoc és a tömb

Ha heredoc szövegben adunk meg tömbváltozókat, akkor a tömbhivatkozást kapcsos-zárójelbe kell tenni, „{ }”.

$lang = array (
    'username' => "Felhasználónév",
    'password' => "Jelszó"
);
 
print <<<EOT
 
{$lang['username']} <input type="text"><br>
 
{$lang['password']} <input type="password"><br>
EOT;

Változó hosszúságú argumentumok

A func_get_args() függvény visszaadja tömbként az argumentumokat.

A func_get_arg() függvény egyenként adja vissza az argumentumokat. Paraméterként meg kell adni, mi az indexe az argumentumnak.

function csinald() {
    $args = func_get_args();
    var_dump($args);
}
csinald('egy', 'kettő', 'három');
function csinald() {
    $arg0 = func_get_arg(0);
    echo $arg0;
}
csinald('egy', 'kettő', 'három');