Autor Zpráva
jashin91
Profil
zdar, potřebuji napsat skript, který zapíše všelijaké info do souboru. Můj prozatímní zdrojá vypadá takto:
<?
$agent = $_SERVER["HTTP_USER_AGENT"];
if(strpos($agent, "Win") !== false) {
/* Windows */
if(strpos($agent, "Windows Vista") !== false OR strpos($agent, "Windows NT 6.0") !== false) {
$os = "Windows Vista";
} elseif(strpos($agent, "Windows XP") !== false OR strpos($agent, "Windows NT 5.1") !== false) {
$os = "Windows XP";
} elseif(strpos($agent, "Windows NT 5.2")) {
$os = "Windows 2003";
} elseif(strpos($agent, "Windows NT 5.0") !== false OR strpos($agent, "Windows 2000")) {
$os = "Windows 2000";
} elseif(strpos($agent, "Win 9x 4.90") !== false OR strpos($agent, "Windows ME") !== false) {
$os = "Windows ME";
} elseif(strpos($agent, "Windows 98") !== false OR strpos($agent, "Win98") OR strpos($agent, "Windows 4.10") !== false) {
$os = "Windows 98";
} elseif(strpos($agent, "Windows 95") !== false OR strpos($agent, "Win95") !== false) {
$os = "Windows 95";
} elseif(strpos($agent, "Windows CE") !== false) {
$os = "Windows CE";
} else {
$os = "Windows";
}
/* Mac */
} elseif(strpos($agent, "Mac") !== false) {
if(strpos($agent, "Mac OS X") !== false) {
$os = "Mac OS X";
} else {
$os = "Macintosh";
}
/* Linux */
} elseif(strpos($agent, "Linux") !== false) {
if(strpos($agent, "Ubuntu") !== false) {
$os = "Ubuntu Linux";
} elseif(strpos($agent, "Kubuntu") !== false) {
$os = "Kubuntu Linux";
} elseif(strpos($agent, "Xubuntu") !== false) {
$os = "Xubuntu Linux";
} elseif(strpos($agent, "Debian") !== false) {
$os = "Debian Linux";
} elseif(strpos($agent, "Fedora") !== false) {
$os = "Fedora Core Linux";
} elseif(strpos($agent, "Gentoo") !== false) {
$os = "Gentoo Linxu";
} elseif(strpos($agent, "SuSE") !== false OR strpos($agent, "SUSE") !== false) {
$os = "SuSE Linux";
} else {
$os = "Linux";
}
/* Symbian */
} elseif(strpos($agent, "Symbian") !== false OR strpos($agent, "S60") !== false) {
$os = "Symbian";
} else {
$os = "";
}
echo $os , $REMOTE_ADDR;
$ip=$REMOTE_ADDR;
foreach($_SERVER as $key => $value){
/*echo $key." - ".$value;*/
$info = $key." - ".$value;
$ip4=fopen("soubor","w");
$ip2=getenv('HTTP_X_FORWARDED_FOR');
$cas=time();
fputs($ip4,"$os;$ip;$ip2;$cas;$info;\r\n");
fclose($ip4);
echo $info;
}
?>

Vše, až na proměnnou $_SERVER se do souboru zapíše. Nevíte někdo, jakou funkci pro proměnnou použít, aby s mi ta změť infa zapsala do souboru ?
Předem děkuji.
Měsíček
Profil
V podmínce elseif máš problémy v závorkách ...

Špatně:

} elseif(strpos($agent, "Windows 95") !== false OR strpos($agent, "Win95") !== false) {

Správně:

} elseif((strpos($agent, "Windows 95") !== false ) OR ( strpos($agent, "Win95") !== false )) {

jinak to !== a "false" je docela odvážné šlo by to jinak ;)
DJ Miky
Profil
Měsíček
Ty elseif má dobře. Budou fungovat naprosto stejně, jako tebou navržená oprava.

jinak to !== a "false" je docela odvážné
Odvážné? Proč?

jashin91
Řádek
$info = $key." - ".$value;
ti způsobí, že se do proměnné info zapíše jen poslední údaj ze $_SERVER. Uprav to třeba takto:
$info .= $key." - ".$value.',';
Ta první tečka způsobí přidávání údajů za sebe (nepřepisování) a to na konci je jen oddělovač údajů, ten si můžeš změnit, jak chceš.
jashin91
Profil
DJ Miky
Díky moc, už mi to fachá :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: