Toon posts:

[php]strippen van filename uit post lukt niet

Pagina: 1
Acties:
  • 41 views sinds 30-01-2008

Verwijderd

Topicstarter
ik heb dus een formuliertje waarin de gebruiker een afbeelding kiest via
code:
1
<input name="post[pic]" type="file" runat="server" size="40">

als die post komt ie deze functie tegen, het is mijn bedoeling dat ik alleen de filename overhoud om in een database te stoppen maar ik krijg een vage foutmelding dat er een onverwachte T_STRING op een paar regels lager staat terwijl dat allemaal commentaar is :S

code:
1
2
      $lok = substr(strrchr($post[pic], "\"), 1);
      print $lok;


iemand enig idee wat er fout gaat?
de filename komt wel gewoon normaal door als ik die eerst print met "print $post[pic];"

Verwijderd

Onder php krijg je de filename niet door als simpele post waarde. PHP met superglobals op OFF kan dat niet verwerken.

$_GET["varname"]
$_POST["varname"]
$_FILES["varname"]

Dus jij zou $_FILES["post[pic]"] moetten gebruiken, als je de name van die input naar "image" veranderd dan is het $_FILES["image"].

Zie ook:
P&W FAQ - Mijn file-upload form werkt niet
P&W FAQ - Mijn POST en GET forms werken niet (meer)

Dan daarbij krijg je de filename mee als array (de returned data krijg php als array), dus je kan "waarschijnlijk" iets gebruiken als $_FILES["varname"]["filename"] gebruiken. Dit kan je zien door de volgende code te gebruiken, dit zal alle waardes returnen die in files[varname] staat
PHP:
1
print_r($_FILES["varname"]);

[ Voor 28% gewijzigd door Verwijderd op 19-07-2004 03:23 ]


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

basename gebruiken?

Blog [Stackoverflow] [LinkedIn]


  • ixi
  • Registratie: December 2001
  • Laatst online: 17-05 17:12

ixi

echo $_FILES['post']['pic']['name']; Geeft de bestandsnaam.

Verder kan je 'name' vervangen door:
'size : bestandsgrootte in bytes
'type' : MIME bestandstype
'error' : Fouten bij het uploaden (0 = geen fout, 1 2 3 en 4 zijn uploadfouten)
'tmp_name' : Bestandsnaam waar het geuploadde bestand tijdelijk wordt opgeslagen

Verder als je in je HTML FORM een veldnaam als 'veldnaam[pic]' gebruikt moet je die in php aanroepen als $veldnaam['pic']. Dus niet [pic] zonder aanhalingstekens. Het is altijd aan te raden om gebruik te maken van de superglobals zoals KingOfDos hierboven al zegt. Gebruik dus $_POST['veldnaam']['pic'], of $_FILES['veldnaam']['pic'][..] als je met bestand-velden bezig bent.

  • PowerSp00n
  • Registratie: Februari 2002
  • Laatst online: 20-05 23:44

PowerSp00n

There is no spoon

Verwijderd schreef op 19 juli 2004 @ 02:57:
code:
1
2
      $lok = substr(strrchr($post[pic], "\"), 1);
      print $lok;
Maar ok, wat er fout is aan je code. Je escaped die ".

[ Voor 56% gewijzigd door PowerSp00n op 19-07-2004 04:23 ]


  • TRON
  • Registratie: September 2001
  • Laatst online: 04-05 12:27
code:
1
$lok = substr(strrchr($post[pic], "\""), 1);

gebruiken dus.

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Overigens is dit dus een parse error, en parse errors doen we niet aan omdat die altijd met wat leeswerk door de code zelf op te lossen zijn (regelnummer en fout staan er zelfs bij ;) ).

Schluss dus, is ook wel opgelost.

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.