parse_ini_file alternative
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
auslese
code
dank
datei
einstellung
file
ftp
funktion
grundkenntnis
host
http
manual
mode
port
pos
server
setzen
url
versuchen
verwendung
-
Sorry das ich "Crossposte", aber bei meinem älterem Thema habe ich mich vertan und ich weiß nicht, wie man den Titel änderrt ^^
Also,
Ich suche nach einer Alternative für parse_ini_file, da ich mit dieser Funktion auf einen FTP-Server zugreifen will, und dann immer meine "Lieblings"-Meldung kommt:
Warning: parse_ini_file() [function.parse-ini-file]: URL file-access is disabled in the server configuration in xxx on line xxx
Der Aufbau der ini-Datei:
Variable=Wert\n
Variable=Wert\n
Variable=Wert\n
Hoffe es gibt alternativen,
Tion -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich denke du meinst sowas:
Allerdings glaube ich nicht, das dir das was bringen wirst und erwarte eher eine Fehlermeldung wie diese:$ini_file = file_get_contents($adresse); $ini_array = parse_ini_string($ini_file);
Wenn das eintritt, dann kannst du es noch mit CURL probieren:Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in xxx on line xxx
Wenn auch das Fehlschlägt glaube ich nicht, dass du überhaupt die Berechtigung hast auf fremde URLs o.Ä. zuzugreifen, wobei du dann immernoch fsockopen ausprobieren könntest…$ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, $adresse); $ini_file = $curl_exec($ch); $ini_array = parse_ini_string($ini_file);
Übrigens, alle diese Berechtigungen kannst du auch nachlesen, indem du dir mal die phpinfo ansiehst:<?php phpinfo(); ?>
Mit freundlichen Grüßen -
Habe jetzt auch versucht, die mit file_gets_content zu downloaden und dann zu parsen...
Habe außerdem eine Debugdatei erstellt:
<?php if(!isset($_POST['name'])) { echo'<form action="debug.php" method="post"><input type="text" name="name" /><input type="submit" value="Debug" />'; } else { $checkback = @include'settings.php'; if($checkback) { echo'Einstellungen geladen<br /><br />'; } else { echo'Kann Einstellungen nicht laden - Datei existiert nicht'; exit(); } $playername = $_POST['name']; $path = $userverzeichnis .'/'. $playername .'.ini'; echo'Pfad: <u>'. $path .'</u><br /><br />'; if(@file_exists($path)) { echo'Account gefunden<br /><br />'; } else { echo'Account nicht gefunden - Einstellungen falsch oder Name ungültig'; exit(); } if(@file_put_contents('temp/'. $playername .'.ini',file_get_contents($path))) { echo'Datei in Ordner "temp" kopiert<br /><br />'; } else { echo'Kann Datei nicht kopieren - Bitte Ordner "temp" erstellen<br />'; exit(); } if($tmpreturnvar = @parse_ini_file('temp/'. $playername .'.ini')) { echo'Datei ausgelesen<br /><br />'; } else { echo'Kann Datei nicht auslesen - Bitte CHMOD für Datei auf 0777 setzen<br />'; exit(); } if(@unlink('temp/'. $playername .'.ini')) { echo'Temporäre Datei gelöscht<br /><br />'; } else { echo'Kann Datei nicht löschen - Bitte CHMOD für Datei auf 0777 setzen<br />'; exit(); } echo'<table border="0" />'; echo'<tr>'; echo'<td width="250">Schlüssel:</td><td>Wert:</td>'; echo'<tr>'; foreach($tmpreturnvar as $Player => $var) { echo'<tr>'; echo'<td width="250">'. $Player .'</td><td>'. $var .'</td>'; echo'<tr>'; } echo'</table>'; } ?>
Ergebnis:
Einstellungen geladen Pfad: ftp://tion:*****@62.75.175.6/samp03/scriptfiles/user/Tion.ini Account nicht gefunden - Einstellungen falsch oder Name ungültig
Wie kann man fsockopen dateien auslesen ?
Ich dachte das wäre zur Serverkontrolle ^^
Lese ich mir mal durch, danke -
tion schrieb:
Wie kann man fsockopen dateien auslesen ?
Mit fsockopen() kannst du eine Verbindung zu einem Server aufbauen, da musst du aber wenigstens Grundkenntnisse vom verwendeten Protokoll (FTP oder HTTP) haben (die du wahrscheinlich nicht hast).
Also kannst du es z.B. mit den FTP-Funktionen von PHP versuchen.
Lg cookies
Edit: UDP- und Unix-Sockets gehen natürlich auch.
Beitrag zuletzt geändert: 31.12.2010 16:40:04 von cookies -
Habe ich mir durchgelesen, ausprobiert, und... funktioniert nicht...
mit FTP kenne ich mich minimal aus, und frage mich, ob man das
USER tion PASS [i]Hier das Passwort[/i] CWD samp03 CWD scriptfiles CWD user RETR datei.tld
auch so
USER tion PASS [i]Hier das Passwort[/i] CWD samp03/scriptfiles/user RETR datei.tld
schreiben kann ?
und wie sende ich das per FSOCKOPEN ?
// Edit: Wieso keine Grundkenntnisse in HTML ? >= http://forum.sa-mp.de/wbb/san-andreas-multiplayer/scripting-base/showroom/54069-php-godfather-usercontrolpanel/
Beitrag zuletzt geändert: 31.12.2010 20:17:02 von tion -
Die Verwendung des FTP-Protokolles solltest du am besten in der passenden RFC nachlesen.
Für die Verwendung von fsockopen() schlage in der PHP-Doku nach (nemoinho hat bereits den passenden Link gepostet).
cookies sprach von Grundkenntnissen in FTP und HTTP, nicht HTML, das ist ein großer Unterschied! -
ok
habe jetzt eine "FTP-Api" herausgegoogelt, werde es mal mit der Versuchen:
<?php class ftpconnection { private $host; private $controlconnection; public function __construct($host,$username,$password) { $this->host=$host; $this->controlconnection=@fsockopen($this->host,21); if ($this->controlconnection==false) { return false; } stream_set_timeout($this->controlconnection,0,50000); fgets($this->controlconnection); fwrite($this->controlconnection,"USER ".$username."\r\n"); $response=fgets($this->controlconnection); if (substr($response,0,1)!=3) { fclose($this->controlconnection); $this->controlconnection=false; return false; } fwrite($this->controlconnection,"PASS ".$password."\r\n"); $response=fgets($this->controlconnection); if (substr($response,0,1)!=2) { fclose($this->controlconnection); $this->controlconnection=false; return false; } while (fgets($this->controlconnection)!=false) { } fwrite($this->controlconnection,"TYPE I\r\n"); fgets($this->controlconnection); } public function __destruct() { if ($this->controlconnection==false) { return false; } fwrite($this->controlconnection,"QUIT\r\n"); fgets($this->controlconnection); fclose($this->controlconnection); } private function getdataport() { if ($this->controlconnection==false) { return false; } fwrite($this->controlconnection,"PASV\r\n"); $response=fgets($this->controlconnection); if (substr($response,0,1)!=2) { return false; } $pos=0; for ($x=0;$x<4;$x++) { $pos=strpos($response,",",$pos+1); } $response=substr($response,$pos+1); $pos=strpos($response,")"); $response=substr($response,0,$pos); $response=explode(",",$response); $port=bindec(sprintf("%08u",decbin($response[0])).sprintf("%08u",decbin($response[1]))); return $port; } public function chdir($directory) { if ($this->controlconnection==false) { return false; } fwrite($this->controlconnection,"CWD ".$directory."\r\n"); $response=fgets($this->controlconnection); if (substr($response,0,1)!=2) { return false; } return true; } public function cdup() { if ($this->controlconnection==false) { return false; } fwrite($this->controlconnection,"CDUP\r\n"); $response=fgets($this->controlconnection); if (substr($response,0,1)!=2) { return false; } return true; } public function pwd() { if ($this->controlconnection==false) { return false; } fwrite($this->controlconnection,"PWD\r\n"); $response=fgets($this->controlconnection); if (substr($response,0,1)!=2) { return false; } $response=substr($response,5); $pos=strpos($response,"\""); $response=substr($response,0,$pos); return $response; } public function mkdir($dirname) { if ($this->controlconnection==false) { return false; } fwrite($this->controlconnection,"MKD ".$dirname."\r\n"); $response=fgets($this->controlconnection); if (substr($response,0,1)!=2) { return false; } return true; } public function rmdir($dirname) { if ($this->controlconnection==false) { return false; } fwrite($this->controlconnection,"RMD ".$dirname."\r\n"); $response=fgets($this->controlconnection); if (substr($response,0,1)!=2) { return false; } return true; } public function ls($listall=false,$details=false,$name="") { $port=$this->getdataport(); if ($port==false) { return false; } $dataconnection=@fsockopen($this->host,$port); if ($dataconnection==false) { return false; } if ($details==true) { if ($listall==true) { fwrite($this->controlconnection,"LIST -a ".$name."\r\n"); } else { fwrite($this->controlconnection,"LIST ".$name."\r\n"); } } else { if ($listall==true) { fwrite($this->controlconnection,"NLST -a ".$name."\r\n"); } else { fwrite($this->controlconnection,"NLST ".$name."\r\n"); } } $response=fgets($this->controlconnection); if (substr($response,0,1)!=1) { fclose($dataconnection); return false; } $data=""; while (!feof($dataconnection)) { $data.=fgets($dataconnection); } fclose($dataconnection); $response=fgets($this->controlconnection); if (substr($response,0,1)!=2) { return false; } return $data; } public function put($localfile,$filename) { $port=$this->getdataport(); if ($port==false) { return false; } $dataconnection=@fsockopen($this->host,$port); if ($dataconnection==false) { return false; } fwrite($this->controlconnection,"STOR ".$filename."\r\n"); $response=fgets($this->controlconnection); if (substr($response,0,1)!=1) { fclose($dataconnection); return false; } $ulfile=@fopen($localfile,"r"); if ($ulfile==false) { fclose($dataconnection); return false; } while (!feof($ulfile)) { $data=fread($ulfile,16384); fwrite($dataconnection,$data); } fclose($ulfile); fclose($dataconnection); $response=fgets($this->controlconnection); if (substr($response,0,1)!=2) { return false; } return true; } public function write($filename,$data) { $port=$this->getdataport(); if ($port==false) { return false; } $dataconnection=@fsockopen($this->host,$port); if ($dataconnection==false) { return false; } fwrite($this->controlconnection,"STOR ".$filename."\r\n"); $response=fgets($this->controlconnection); if (substr($response,0,1)!=1) { fclose($dataconnection); return false; } fwrite($dataconnection,$data); fclose($dataconnection); $response=fgets($this->controlconnection); if (substr($response,0,1)!=2) { return false; } return true; } public function get($filename,$localfile) { $port=$this->getdataport(); if ($port==false) { return false; } $dataconnection=@fsockopen($this->host,$port); if ($dataconnection==false) { return false; } fwrite($this->controlconnection,"RETR ".$filename."\r\n"); $response=fgets($this->controlconnection); if (substr($response,0,1)!=1) { fclose($dataconnection); return false; } $dlfile=@fopen($localfile,"w"); if ($dlfile==false) { fclose($dataconnection); return false; } while (!feof($dataconnection)) { $data=fread($dataconnection,16384); fwrite($dlfile,$data); } fclose($dlfile); fclose($dataconnection); $response=fgets($this->controlconnection); if (substr($response,0,1)!=2) { return false; } return true; } public function read($filename) { $port=$this->getdataport(); if ($port==false) { return false; } $dataconnection=@fsockopen($this->host,$port); if ($dataconnection==false) { return false; } fwrite($this->controlconnection,"RETR ".$filename."\r\n"); $response=fgets($this->controlconnection); if (substr($response,0,1)!=1) { fclose($dataconnection); return false; } $data=""; while (!feof($dataconnection)) { $data.=fread($dataconnection,16384); } fclose($dataconnection); $response=fgets($this->controlconnection); if (substr($response,0,1)!=2) { return false; } return $data; } public function delete($filename) { if ($this->controlconnection==false) { return false; } fwrite($this->controlconnection,"DELE ".$filename."\r\n"); $response=fgets($this->controlconnection); if (substr($response,0,1)!=2) { return false; } return true; } public function rename($name,$newname) { if ($this->controlconnection==false) { return false; } fwrite($this->controlconnection,"RNFR ".$name."\r\n"); $response=fgets($this->controlconnection); if (substr($response,0,1)!=3) { return false; } fwrite($this->controlconnection,"RNTO ".$newname."\r\n"); $response=fgets($this->controlconnection); if (substr($response,0,1)!=2) { return false; } return true; } public function chmod($mode,$name) { if ($this->controlconnection==false) { return false; } fwrite($this->controlconnection,"SITE CHMOD ".$mode." ".$name."\r\n"); $response=fgets($this->controlconnection); if (substr($response,0,1)!=2) { return false; } return true; } public function is_dir($name) { $result=$this->ls(true,true,$name); if ((empty($result)) || ($result==false)) { return false; } if (substr($result,0,1)=="d") { return true; } return false; } public function is_file($name) { $result=$this->ls(true,true,$name); if ((empty($result)) || ($result==false)) { return false; } if (substr($result,0,1)!="d") { return true; } return false; } } ?>
-
tion schrieb:
habe jetzt eine "FTP-Api" herausgegoogelt, werde es mal mit der Versuchen
Wieso versuchst du es nicht einfach mal mit LESEN?
cookies schrieb:
Also kannst du es z.B. mit den FTP-Funktionen von PHP versuchen.
Zu der fsockopen()-Idee: FTP über fsockopen() zu benutzen ist meiner Meinung nach nicht sonderlich sinnvoll, da das FTP-Protokoll vergleichsweise ziemlich komplex ist (für die Dateiübertragungen wird z.B. ein extra Port verwendet).
Lg cookies -
Habe ich mir durchgelesen, ausprobiert, und... funktioniert nicht...
4 beiträge weiter oben -
tion schrieb:
Habe ich mir durchgelesen, ausprobiert, und... funktioniert nicht...
4 beiträge weiter oben
Tut mir leid, aber „funktioniert nicht“ seh ich immer noch nicht als Fehlerbeschreibung an. -
ok, jetzt weiß ich, woran es lag:
habe vergessen das verzeichnis zu wechseln
danke, funktioniert doch
PPST:
Unterstützt Lima-City fscokopen ? -
ich habe es oben schon geschrieben und tue es jetzt zum letzten mal:
Da gibt es dann einen Sektor: Core<?php phpinfo(); ?>
und dieser enthält die Direktive: disable_functions, wenn da fsockopen nicht aufgeführt ist, wird sie unterstützt, da sie zum php-core gehört und in dieser Direktive alle deaktivierten Funktionen stehen!
Wie gesagt, die phpinfo sagt einem immer was untersützt wird, oder eben nicht.
Mit freundlichen Grüßen -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage