MySQL index oldal

PHP 5.4.34-win32-VC9-x86

Eltérések a régebbi, azaz PHP 5.4 előtti verzióktól.

Register Globals már a PHP 5.3.0 verzióban is elítélt, helytelenített, és a PHP 5.4.0. verziónál el is távolították.


GLOBALS változók beállítása.
(Ha rendszergazda jogosúltsággal rendelkezünk. Vagy felvesszük rendszergazdával a kapcsolatot, és megkérjük, hogy állítsa be nekünk.)
PHP.ini fájlban, a variables_order = "EGPCS" meghatározással állíthatjuk be, Hogy mely GLOBALS változók legyenek érvényben.
Rövidítések: G, P, C, E, S; azaz, GET, POST, COOKIE, ENV, SERVER.

  1. GLOBALS PHP 5.4. ... verziótól kezdve:
    • Alapértelmezés szerint, nincs minden GLOBALS változó előre definiálva.

    • Néhány GLOBALS változót($_POST[]; $_GET[]; stb), melyek a munkamenezhez fontosak, nekünk kell felhasználásuk előtt, létrehozni.

    • Ha nem tudjuk, hogy melyik GLOBALS változó létezik, és milyen információkat tartalmaz, lekérdezhetjük egyenként is, így:
      <?php
      echo'<pre>';
                  echo'<hr></hr><h5>$_SERVER</h5>';
                                                                              echo print_r($_SERVER);
                  echo'<hr></hr><h5>$_ENV</h5>';
                                                                              echo print_r($_ENV);
                  echo'<hr></hr><h5>$_REQUEST</h5>';
                                                                              echo print_r($_REQUEST);
                  echo'<hr></hr><h5>$_GET</h5>';
                                                                              echo print_r($_GET);
                  echo'<hr></hr><h5>$_POST</h5>';
                                                                              echo print_r($_POST);
                  echo'<hr></hr><h5>$_COOKIE</h5>';
                                                                              echo print_r($_COOKIE);
                  echo'<hr></hr><h5>$_FILES</h5>';
                                                                              echo print_r($_FILES);
      echo'</pre>';
      ?>
    • Ha tudjuk melyik GLOBALS változó milyen adatot tárol, akkor egyszerűen így is lekérdezhetjük:
      <?php
      print ("<p>". $_SERVER['HTTP_HOST']."</p>");
      ?>
      

  2. Dátum PHP 5.4. ...... verziótól kezdve:
    • Nincs automatikus date.timezone, azaz dátum felismerés.
    • A PHP.ini fájban, nekünk kell beállítani így: date.timezone = EUROPE / BUDAPEST
    • Vagy a programok elején kell meghatározni így: date_default_timezone_set('Europe/Budapest');

 


Változások a php.ini fájl kezelésében.

A következő php.ini direktívák, eltávolításra kerültek:

A következő php.ini direktívák, bevezetésre kerültek:

A következő php.ini irányelvek, megváltoztak:

Nem kötelező, csak ajánlott beállítási értékek:

 


Gyakori hibajelzések, ha valaki most tér át a PHP 5.4.xx valamelyik verziójára.

  1. Undefined index: valami in ........... on line ....
    • Minden tömbben indexelni kell a tömbben tárolt elemeket, melyek az adatokat tárolják. (Indexelés = tömbelemeket egyedi azonosítóval kell ellátni, ez lehet szám vagy szöveg.)
      A SUPERGLOBALS változók is, tömb formátumban tárolják az adatokat.
    • Például: Ha a $_POST['valami'] nem tartalmaz adatot, mert az űrlapról nem érkezett adat.
      Elsőként elleőrízzük, hogy a POST létezik és tartalmaz e értéket, ha igen, akkor rendelhetjük változóhoz a POST-ban tárolt értéket.
      PHP 5.4.x-ben POST és GET így helyes:
      if(isset($_POST['valami'])) {$adat=$_POST['valami'];}


  2. Undefined variable: (meghatározatlan változó) valami in --- on line ....
    • Ha a "$valami" változónak nincs értéke, és programunkban felhasználjuk további műveletre.
    • Nem definiáltuk a felhasználás előtt úgy, hogy értéket is rendeltünk volna hozzá, például így: $valami=" ";
    • A programnak kellene, e változóhoz értéket rendelni, például a POST['valami'] tömbben tárolt értékkel.
      Például így: $valami=POST['valami'];
      De az űrlapról, nem érkezett adat, és a POST['valami'] nem tartalmaz adatot.

  3. Use of undefined constant valami - assumed 'valami' in ... on line ..
    • Hibát az aposztróf hiánya okozza.
      Hibás: $_POST[valami];
      Helyes: $_POST['valami'];


 

PÉLDÁK.

Ez a meghatározás, 5.4 előtti verzióknál hibátlanul működik!
De a PHP 5.4.34 verziónál már hibát okoz!
<p><b><u>Matematika űrlapunk</u></b></p>

<form action="fájlnév.php" method="POST">
          Első érték: ------- <input type="text" name="egy" value="2" /><br />
          Második érték:-- <input type="text" name="ketto" value="3" /><br />
                          <p> <input type='submit' name='valami' value="Matematika TESZT mehet? Kattins ide!"> </p>
</form>

<p>
        <?php
                    $a = $_POST['egy'];
                    $b = $_POST['ketto'];
                             echo "Első érték = ".$a."<br />";
                             echo "Második érték = ".$b;
                    $c=$a+$b;
                             echo "<br /><u>Matematika eredménye</u>  ".$a."+".$b."=".$c;
                
        ?>
</p>

PHP 5.4.34 verziónál a következő hibajelzéseket kapjuk:

Notice: Undefined index: egy in C:\Apache2.2\htdocs\teszt.php on line xx

Notice: Undefined index: ketto in C:\Apache2.2\htdocs\teszt.php on line xx

Hiba oka:

  1. PHP 5.4.xx verzióktól kezdve elvárják, hogy a feldolgozó PHP szkriptben, feldolgozásnál csak olyan változók, és tömbök legyenek, melyek értékkel is rendelkeznek. Ha nincs értékük, akkor előre definiálni kell.
    Példák:
    • Ha a program későbbi részében kapnak valós értéket: $a=" "; $POST['valami']=" ";
    • Ha űrlapról érkeznek adatok, akkor feltételhez kell kötni a létrehozásukat (indexelésüket)
      	Ezen feltételnél, akkor aktiválódnak, ha felhasználó a submit gombra kattint.
      	                   if(isset($_POST['valami'])) {$a=$POST['egy']; $b=$_POST['ketto'];}
      					   
      	Ezen feltételnél, a submit gombra történő kattintás előtt aktiválódnak.
      	                   if(empty($_POST['valami'])) {$_POST['egy']=""; $_POST['ketto']="";}

 


 

Ez a meghatározás, minden PHP verzióban hibátlanul működik!
Indexelés és feldolgozás akkor történik, ha felhasználó az űrlap submit gombjára kattint.
<p><b><u>Matematika űrlapunk</u></b></p>

<form action="fájlnév.php" method="POST">
          Első érték: ------- <input type="text" name="egy" value="2" /><br />
          Második érték:-- <input type="text" name="ketto" value="3" /><br />
                          <p> <input type='submit' name='valami' value="Matematika TESZT mehet? Kattins ide!"> </p>
</form>

<p>
        <?php
             if(isset($_POST['valami'])) 
                {
                    $a = $_POST['egy'];
                    $b = $_POST['ketto'];
                             echo "Első érték = ".$a."<br />";
                             echo "Második érték = ".$b;
                    $c=$a+$b;
                             echo "<br /><u>Matematika eredménye</u>  ".$a."+".$b."=".$c;
                }
        ?>
</p>

 


 

Ez a meghatározás, minden PHP verzióban hibátlanul működik!
Indexelés és feldolgozás, a submit gombra történő kattintás előtt aktiválódik.
Eredmény addig nulla "0" ameddig az űrlapról nem érkeznek adatok.
<p><b><u>Matematika űrlapunk</u></b></p>

<form action="fájlnév.php" method="POST">
          Első érték: ------- <input type="text" name="egy" value="2" /><br />
          Második érték:-- <input type="text" name="ketto" value="3" /><br />
                          <p> <input type='submit' name='valami' value="Matematika TESZT mehet? Kattins ide!"> </p>
</form>

<p>
        <?php
             if(empty($_POST['valami'])) {$_POST['egy']=""; $_POST['ketto']="";} 
                
                    $a = $_POST['egy'];
                    $b = $_POST['ketto'];
                             echo "Első érték = ".$a."<br />";
                             echo "Második érték = ".$b;
                    $c=$a+$b;
                             echo "<br /><u>Matematika eredménye</u>  ".$a."+".$b."=".$c;
                
        ?>
</p>

 


 

A php-5.4.34 hibátlanul, csak így működik. (A php-5.2.17 így is, hiba nélkül működik.)

Megjegyzés:
Ez a bemutató script, űrlapkitöltési ellenőrzést is végez.
Sikeres teszt esetén, újabb teszt elvégzéséhez (ismétléshez), ki kell lépni ezen oldalról, majd ismételten be kell lépni!

<?php
print "<h5><u>Töltse ki, a beviteli mezőket!</u></h5>";

$hiba=0;
$elso_feltetel =(isset($_POST['elso_feltetel']))? $_POST['elso_feltetel']=1:0;
	if (empty($_POST['felh']) || empty($_POST['jelszo'])) 
		{
			// Űrlap kitöltésének ellenőrzése.
			if (empty($_POST['felh'])) { $hibalista[]="Nem adta meg, felhasználói nevét!"; }	
			if (empty($_POST['jelszo'])) { $hibalista[]="Nem adta meg, jelszavát!"; }
			 	
				$hiba = 1; // Ha nem kaptunk értéket, akkor űrlap kell.
		}
	else
		{    // Ha van érték a mezőkben, akkor feldolgozhatjuk.
			    $felh = $_POST["felh"];	     print "Ön felhasználói neve: <b> ".$felh."</b><br />";
			    $jelszo = $_POST["jelszo"];  print "Ön jelszava: <b> ".$jelszo."</b>";
				
				$hiba = 0; // Minden rendben, űrlap nem kell.
		}
		
if ($hiba != 0)
{     // Ha, vannak űrlapkitöltési hibák, akkor a hibát, kiíratjuk.           
                        if ($elso_feltetel==1) 
                                 foreach ( $hibalista as $i => $ertek )
                                        {
                                          print ("$ertek<br>");
                                        }
				
if (empty($_POST['kuldes'])) { $_POST['felh']=""; $_POST['jelszo']=""; $_POST['elso_feltetel']=""; } 	

	 // Űrlap létrehozása.		
	echo '
		<form method="post" action="'.$_SERVER['PHP_SELF'].'">
			<p><strong>Felhasználói név:*</strong><br>
				<input type="text" name="felh" VALUE="'.$_POST['felh'].'" size=10 maxlength=> </p>
			<p><strong>Jelszó:*</strong><br>
				<input type="password" name="jelszo" VALUE="'.$_POST['jelszo'].'" size=10 maxlength=30> </p>
				
			<p><input type="submit" name="kuldes" VALUE="Teszt"></p>
				<input type="hidden" name="elso_feltetel" VALUE="'.$_POST['elso_feltetel'].'"> 
		</form>
		' ;
}
?>

 


 

Megjegyzés:
PHP 5.4.xx verzióktól kezdve, minden olyan változót, melyet programunk fel fog dolgozni, közvetlen a feldolgozás megkezdésekor, vagy ezt megelőzően definiálni (indexelni) kell, azaz, értékadással együtt, létre kell hozni. (Például így: $POST['valami']=" "; vagy $tomb['valami']=NULL; )

A PHP 5.4.xx verziók valamelyikében megírt űrlapok és azok feldolgozási formátumait a PHP 5.4.xx előtti verziók is, hibátlanul feldolgozzák.

Fordítva ez nem igaz, PHP 5.4.xx előtti verziók valamelyikében megírt űrlapok és azok feldolgozási formátumait a PHP 5.4.xx verzióktól kezdve hibajelzést kapunk, ha a változók nem voltak előre definiálva (indexelve).

Ha valakinek már vannak kész programjai, melyet PHP 5.4.xx előtti verziók valamelyikében készített el, nem kell megsemmisíteni, továbbra is használhatja, csak a szükséges definíciókat (indexeléseket) kell a program megfelelő részén elhelyezni.

Az indexeléseket feltételhez kell kötni, melyet az isset vagy empty függvénnyel vizsgálunk meg.

Figyelem!
Ezen oldalon fent a zöld nyílra kattintunk, visszajutunk a PHP témakörökhöz.
Az ott lévő témakörök PHP 5.2.17-re készültek.
Ha programleírást másolunk ki, hogy a saját gépünkön egy újabb PHP 5.4.xx verzióban teszteljük annak működését, előfordulhat, hogy néhány programnál hibajelzést kapunk, akkor ezen oldalon leírtak alapján módosítsuk a programot!