elso oldal
„ELSŐOLDAL” PROJEKT
< Programozás > < Túraproject > < CSS > < JQuery > < Javascript > < PHP > < Táblázatok >
programozás

Aki próbálta már CRON-ból (szerver időzített feladatból) meghívni a $_SERVER["SERVER_ADDR"] változót, az tapasztalhatta, hogy a rendszer „Undefined index: SERVER_ADDR in ...” hibaüzenetet generál és nem adja vissza a változó értékét. Stabil szerver esetén ezt ki lehet váltani a konkrét IP-cím megadásával, ám ha ezt a változót valamiféle ellenőrzésre szeretnénk használni és időközben megváltozik az IP-cím, akkor abból csak gondok lehetnek.

Az alábbi két kis scripttel kiküszöbölhető a probléma.

Az első kis részletet egy olyan php-scriptbe kell beépíteni, ami elég nagy rendszerességgel lefut:


$MserIp=ROOT."TRASH_orankent/MyServerIp";//szerver ip.....
if (!file_exists($MserIp)){
	$attm=ROOT."TRASH_orankent/atmip_".time().rand(1000,9999);
	$hidip=fopen($attm,"w");if ($hidip){
		fwrite($hidip,$_SERVER["SERVER_ADDR"]);
		fclose($hidip);
		if (file_exists($attm)){
			if (filesize($attm)>0){
				rename($attm,$MserIp);
				}
			}
		}
	}

A fenti programrészben a ROOT egy előre definiált (gyökér)könyvtár, a „TRASH_orankenti” pedig valamilyen olyan könyvtár címe, amit bizonyos időközönként teljesen töröl a rendszer (akár saját CRON scripttel)

A másik rövid scriptet abba a CRON által meghívott scriptbe kell beépíteni, amelynél fel akarjuk használni a $_SERVER["SERVER_ADDR"] változót:


function makemeServerAddress() {
	// a MyServerIp file tartalmazza a szerver ip címét, amit időközönként
	// töröl a rendszer, majd az első index.php hívásnál egy kis script az
	// initben a fenti szerint újragenerálja, ami hiányzik.
	
	$MserIp=ROOT."TRASH_orankent/MyServerIp";
	$hon=fopen($MserIp,"r");
	$a="";
	if ($hon){$a=fread($hon,filesize($MserIp));}
	return $a;
	}
	
Meghívás:

$SajatSzerverIP=makemeServerAddress();