Forum

> > Off Topic > An die PHP Profies
Forums overviewOff Topic overviewLog in to reply

German An die PHP Profies

7 replies
To the start Previous 1 Next To the start

old An die PHP Profies

k.o.g.
User Off Offline

Quote
Guten tag an alle,
ich selber kann eigentlich auch gut PHP doch mir fehlt etwas.
Wenn sich jemand zugleich auch noch mit den befehlen writeint() und writebyte() in BlitzBasic auskennt ist es genial.

Es werde ja verschiedene Daten mit writeint() und writebyte() gespeichert, ist dies möglich per PHP auszulesen?
z.B. eine CS2D Map?
Leider fehlt mir der Anhaltspunkt.

old Re: An die PHP Profies

k.o.g.
User Off Offline

Quote
Sry aber wie dumm bist du?
Du hast meine Frage nicht ganz gelesen, hast du auch ahnung von BlitzBasic?

Ach und wenn du so schlau bist such mir den befehl bei SELFPHP...

old Re: An die PHP Profies

Sysmatic
User Off Offline

Quote
da gibt's sonen berühmten spruch für solche fälle: "erst LESEN, dann DENKEN, dann POSTEN" aber naja

old Re: An die PHP Profies

bizzl
User Off Offline

Quote
@k.o.g.: es gibt solche befehle nicht. du kannst höchsten aus nem stream (datei mittels fopen laden) bytes in den buffer lesen:
http://www.selfphp.de/praxisbuch/praxisbuchseite.php?site=230&group=36
vllt hilft das irgendwie weiter. Solltest du nen eigenen Windoof-Server haben kannste dir auch wahlweise ein bb-Programm ausführen lassen das deine binärdaten in ein einfacher auslesbares Format (zbsp INI) übersetzt. Unter Linux/UNIX-Servern kannste es mit nem C/C++ oder FreePascal-Programm probieren, bei nem Solaris-Server ist mit sicherheit auch noch java verfügbar.
Für solche dinger musste aber volle Executerechte haben, sonst geht das net.
Wenn du aber nen FreeHoster wie Funpic hast würde ich solche spiele ganz bleiben lassen, weil das auslesen besonders bei großen dateien zu viel RAM und CPU-Zeit kostet und du deswegen gekickt werden kannst.

old Re: An die PHP Profies

Ste-ve
User Off Offline

Quote
Naja, meine Frage ist bestimmt nit so Profi haft, habe aber auch grade erst mit php angefangen.

Mein Problem ist: Ich möchte, dass User auf meinen Webspace Dateien hochladen können. Dazu habe ich folgendes Beispiel aus einem alten Php buch genommen:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?

if($op=='up')
{
copy($meinedatei,"/uploads");
}
echo"
<form enctype='multipart/form-data' action='test.php' method=post>
<input type='hidden' name=MAX_FILE_SIZE' value='1000'>
Datei hochladen: <input name= 'meinedatei' type='file'>
<input type='submit' value='hochladen'>
";
?>

Das Problem ist, dass die Datei aber nicht gesichert wird, sondern einfach nur die Seite neu geladen wird.
Ich gebe zu das ist im 5. Kapitel und ik bin erst im 3. aber bis auf
1
if($op=='up')
Zeile verstehe ik den Code weitgehend.
Hier könnt ihr es auf meinem webspace bewundern: http://steven04.gimyweb.de/m/
http://culturegambling.com/
edited 1×, last 22.06.09 02:00:36 pm

old Re: An die PHP Profies

HW
User Off Offline

Quote
Dein Buch scheint schon etwas veraltet, da sind mehrere Sachen nicht mehr zeitgemäß/korrekt.

Diese if($op=='up') Zeile macht für mich auch keinen Sinn, ich würde da das Script etwas anpassen. Offensichtlich soll die Zeile lediglich bewirken, dass das Script nur ausgeführt wird wenn auch eine Datei hochgeladen wurde. Das kann man auch erreichen, wenn man prüft ob $meinedatei gegeben ist. (mit if(isset($meinedatei))

Nun zur PHP Behandlung von hochgeladenen Dateien:
Ihre Variablen sind in PHP immer im Array $_FILES["name"] (in diesem Fall meinedatei als name) zu finden. Dieses ist wiederum ein Array, das die wichtigen Daten der Datei enthält, also auch den Pfad unter dem die Datei gespeichert wurde. Eine Liste mit den Arrayelementen findest du hier.
Für den Pfad der Datei musst du also $_FILES["meinedatei"]["tmp_name"] angeben.

Dann noch zum Abspeichern der Datei:
Für eine per HTML-Upload hochgeladene Datei muss die Funktion move_uploaded_file() verwendet werden. (sie hat dieselben Parameter wie copy, beide Funktionen benötigen aber noch den Dateinamen unter dem gespeichert werden soll, den erhältst du mit $_FILES["meinedatei"]["name"].

Außerdem kannst du das Formular außerhalb des Scripts schreiben, da brauchst du kein echo.

Daraus erfolgt sich folgendes (ungetestetes) Script:
1
2
3
4
5
6
7
8
9
10
<?
if( isset( $_FILES["meinedatei"] ) )
{
move_uploaded_file( $_FILES["meinedatei"]["tmp_name"], "/uploads/".$_FILES["meinedatei"]["name"] );
}
?>
<form enctype='multipart/form-data' action='test.php' method=post>
<input type='hidden' name=MAX_FILE_SIZE' value='1000'>
Datei hochladen: <input name= 'meinedatei' type='file'>
<input type='submit' value='hochladen'>

Wie gesagt ungetestet, könnte also noch fehlerhaft sein. Schau am besten unter www.selfphp.de nach, das ist recht gut und auch zeitgemäß.
Da ließen sich jetzt noch ein paar zusätzliche Sachen einbauen wie z.B. eine weitere Dateigrößenüberprüfung, da geh ich jetzt aber nicht weiter drauf ein.
To the start Previous 1 Next To the start
Log in to replyOff Topic overviewForums overview