kostenloser Webspace werbefrei: lima-city


parse_ini_file alternative

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    tion

    Kostenloser Webspace von tion

    tion hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich denke du meinst sowas:
    $ini_file = file_get_contents($adresse);
    $ini_array = parse_ini_string($ini_file);
    Allerdings glaube ich nicht, das dir das was bringen wirst und erwarte eher eine Fehlermeldung wie diese:
    Warning:  file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in xxx on line xxx
    Wenn das eintritt, dann kannst du es noch mit CURL probieren:
    $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);
    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…
    Übrigens, alle diese Berechtigungen kannst du auch nachlesen, indem du dir mal die phpinfo ansiehst:
    <?php
    phpinfo();
    ?>


    Mit freundlichen Grüßen
  4. Autor dieses Themas

    tion

    Kostenloser Webspace von tion

    tion hat kostenlosen Webspace.

    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&uuml;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&uuml;r Datei auf 0777 setzen<br />'; exit(); }
    		if(@unlink('temp/'. $playername .'.ini'))  { echo'Tempor&auml;re Datei gel&ouml;scht<br /><br />'; } else { echo'Kann Datei nicht l&ouml;schen - Bitte CHMOD f&uuml;r Datei auf 0777 setzen<br />'; exit(); }
    		echo'<table border="0" />';
    		echo'<tr>';
    		echo'<td width="250">Schl&uuml;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
  5. 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
  6. Autor dieses Themas

    tion

    Kostenloser Webspace von tion

    tion hat kostenlosen Webspace.

    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
  7. 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!
  8. Autor dieses Themas

    tion

    Kostenloser Webspace von tion

    tion hat kostenlosen Webspace.

    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;
    	}
    }
    ?>
  9. 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
  10. Autor dieses Themas

    tion

    Kostenloser Webspace von tion

    tion hat kostenlosen Webspace.

    Habe ich mir durchgelesen, ausprobiert, und... funktioniert nicht...


    4 beiträge weiter oben
  11. 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.
  12. Autor dieses Themas

    tion

    Kostenloser Webspace von tion

    tion hat kostenlosen Webspace.

    ok, jetzt weiß ich, woran es lag:

    habe vergessen das verzeichnis zu wechseln

    danke, funktioniert doch

    PPST:

    Unterstützt Lima-City fscokopen ?
  13. ich habe es oben schon geschrieben und tue es jetzt zum letzten mal:
    <?php
    phpinfo();
    ?>
    Da gibt es dann einen Sektor: Core
    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
  14. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!