PHP plusteken probleem

Pagina: 1
Acties:

  • asmoday
  • Registratie: Mei 2000
  • Laatst online: 15-05-2023
Ik heb een probleem met het doorgeven van een variabele artikelnr.
Die variabele wordt eerst uit een database opgehaald waarna deze wordt doorgegeven aan een andere php file dmv het volgende stukje:

<a href=\"body.php?page=php/toevoegen&artikelnr=$artikelnr& etc...

Bij bijna alle artikelnr's gaat het goed op artikelnummers met een + teken erin na.
Zoals dus bijvoorbeeld DOK64MB+CRAD.
Het probleem is dat als deze is doorgegeven de + als het ware verdwijnt, deze wordt "uitgevoerd" oid en vervangen door een spatie.
Dit is uiteraard niet de bedoeling. Ik heb met het een en ander geprobeerd, waaronder quotemeta die een slash voor de plus zet voordat de variabele wordt doorgegeven, maar na het doorgeven staat de slash er nog wel maar de + is verdwenen. Die functie lijkt dus weinig nut te hebben.

Weet iemand hier een oplossing voor?

Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk, agh burzum-ishi krimpatul


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Doet iets met Cloud (MS/IBM)


  • asmoday
  • Registratie: Mei 2000
  • Laatst online: 15-05-2023
Muchos gracias... _/-\o_
Duurde even voordat het werkte, maar goed.

Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk, agh burzum-ishi krimpatul


  • asmoday
  • Registratie: Mei 2000
  • Laatst online: 15-05-2023
Een voorbarige juich...
Urlencode zorgt ervoor dat artikelen met een + in het artikelnr wel goed gaan, maar dan gaan artikelen met een spatie en tekens zoals een / ineens fout.
Spaties in artikelnr's worden vervangen door een + teken en een / door %2F.
%2F is wel te vervangen door str_replace, maar het plusteken vervangen door een spatie werkt niet, want artikelen die bedoeld zijn met een plusteken krijgen dan ook een spatie.
Weet iemand hoe dit op te lossen is?

Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk, agh burzum-ishi krimpatul


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

huh?

das toch niet erg?
Je browser stuurd die data op na je klik en daarna zet je webserver het allemaal netjes om.
Zodra het weer bij je php aankomt is het weer de gewone inhoud die je al had...

En anders moet je es verder dan je neus lang is kijken naar urldecode ;)
En trouwens ook es naar het NUT en de bedoeling van urlencode, een var met een / erin mag namelijk ook NIET in een url voorkomen...

Je moet het wel PER variabele urlencode-en natuurlijk

  • Blubber
  • Registratie: Mei 2000
  • Niet online
asmoday schreef op 21 augustus 2002 @ 12:54:
Een voorbarige juich...
Urlencode zorgt ervoor dat artikelen met een + in het artikelnr wel goed gaan, maar dan gaan artikelen met een spatie en tekens zoals een / ineens fout.
Spaties in artikelnr's worden vervangen door een + teken en een / door %2F.
%2F is wel te vervangen door str_replace, maar het plusteken vervangen door een spatie werkt niet, want artikelen die bedoeld zijn met een plusteken krijgen dan ook een spatie.
Weet iemand hoe dit op te lossen is?
http://www.php.net/manual/en/function.urldecode.php

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Ik snap je probleem niet helemaal...

Je hebt artikelen die je op een url mee wilt geven. Die zul je dan moeten url-encoden (vandaar die naam). Als iemand die link vervolgens klikt wordt jou PHP-pagina uitgevoerd, en de variabele is dan automatisch ge-url-decoded. Daar hoef je dus niets mee te doen. Spaties, comma's plusjes en zelfs binaire karakters werken daarbij perfect.

Localhost, sweet localhost


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Localhost, sweet localhost


  • ArmEagle
  • Registratie: Oktober 2001
  • Laatst online: 18-06 08:00

ArmEagle

Duzz.

Het lijkt mij dat je met die
<a href=\"body.php?page=php/toevoegen&artikelnr=$artikelnr& etc..
een lijst van artikelen laat zien en dan extra info over dat artikel mbv die link wil laten zien.
Als dat zo is, kun je beter alle id's v/d artikelen in de links zetten en in die nieuwe pagina de extra gegevens v/h artikel weer uit de database ophalen.

Maar ik kan jouw bedoeling fout hebben begrepen.

  • asmoday
  • Registratie: Mei 2000
  • Laatst online: 15-05-2023
Op een beginpagina wordt er allereerst een artikel geselecteerd, deze wordt ge-encode, dan wordt op een volgende pagina de info van dat artikel weergegeven en kan dat artikel besteld worden.
Het weergeven van de info werkt prima.


Zodra je de form gesubmit wordt gaat het fout. Die ziet er zo uit:

<form ENCTYPE="multipart/form-data" ACTION= "<?php echo "body.php?page=php/toevoegen&artenc=$artenc&
hoofdgroepnr=$hoofdgroepnr&omschrijving=$omschrijving"; ?>" METHOD=post>

Dus pas na het submitten is het artikelnr (artenc) fout. Spaties worden dan ineens + en andersom. Zo worden ze dus opgeslagen in de database waardoor op de volgende pagina het artikel niet gevonden wordt omdat de vergelijking met de database niet klopt.

Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk, agh burzum-ishi krimpatul


  • ArmEagle
  • Registratie: Oktober 2001
  • Laatst online: 18-06 08:00

ArmEagle

Duzz.

maak van al die parameters ("page" en "artenc", etc) hidden form velden. met value op jouw waarden gezet, gaat denk ik veel beter.

Edit:
Maar zoals ik hierboven al zei; kun je niet met alleen het artikelID vosltaan, ipv allerlei extra info mee te geven?

trouwens als je een submit knop gebruikt en die de naam "submit" geeft kun je in de
'toevoegpagina' controleren of $submit bestaat:
PHP:
1
2
if ($submit) {
}

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

PHP:
1
2
3
4
<form 
   enctype="multipart/form-data" 
   action="body.php?page=php/toevoegen&amp;artenc=<?=urlencode ( $artenc )?>&amp;hoofdgroepnr=<?=$hoofdgroepnr?>&amp;omschrijving=<?=urlencode ( $omschrijving )?>" 
   method="post">

ik denk dat je een beetje die richting op moet denken.
enkel de variabelen moet ge-urlencode verstuurd worden, de url zelf verder niet.

offtopic:

en niet over <?= en <?php echo -issues beginnen, aub :D

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

ArmEagle:
.....controleren of $submit bestaat:
PHP:
1
2
if ($submit) {
}
foei! :+
isset () of empty ()

Omdat je je error-reporting natuurlijk op E_ALL hebt staan ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • asmoday
  • Registratie: Mei 2000
  • Laatst online: 15-05-2023
Ok, hij werkt!! :D
Bedankt! _/-\o_

Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk, agh burzum-ishi krimpatul


  • ArmEagle
  • Registratie: Oktober 2001
  • Laatst online: 18-06 08:00

ArmEagle

Duzz.

Oh ja, dit gebruikte ik eerder. nu idd isset(), stom stom stom stom stom stomsotm stom......

Maar ik ben dus heeeel erg benieuwd of het probleem dus niet simpeler kan...

  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
rawurlencode() doet alles wat urlencode() doet, behalve dat spaties worden omgezet in %20 i.p.v. +
misschien heb je daar iets aan?

Pas de replâtrage, la structure est pourrie.


Verwijderd

drm schreef op 21 augustus 2002 @ 13:51:
offtopic:

en niet over <?= en <?php echo -issues beginnen, aub :D
:X ;)
Pagina: 1