[PHP]Slechts deel variabele getoond

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben op het moment bezig met een scriptje om berichten naar gebruikers te kunnen sturen. Het script werkt, het bericht wordt in de database opgeslagen en de ontvanger kan het bericht lezen.

Echter, als de ontvanger het bericht wil doorsturen of erop wil antwoorden gaat het mis. Ik heb de volgende 'forward' link gemaakt:
code:
1
2
$forward="sendmessage.php?to=$from&subject=$subject&message=$message";
<a href=$forward>forward</a>

Op zich werkt dit goed, behalve als $subject of $message bestaat uit meer dan 1 woord. Is de message bijvoorbeeld "Hallo lieverd", dan wordt alleen "Hallo" in de URL geplakt.

Ik heb de FAQ gebruikt en kwam uit bij [TOPIC=741007///#faq11]. Gebruik ik echter ' voor hetgene achter de $forward dan wordt, heel logisch, dit exact gebruikt. Dus de variabelen namen ipv hun waarden.

Ik hoop dat ik het probleem een beetje duidelijk heb kunnen overbrengen want ik weet niet precies wat ik hier mee aan moet. Alvast bedankt voor jullie hulp!

Acties:
  • 0 Henk 'm!

  • UltraSub
  • Registratie: Mei 2003
  • Laatst online: 01-09 22:45
Escape die single quotes middels \

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:52

crisp

Devver

Pixelated

gebruik quotes om HTML attributen en gooi htmlspecialchars en urlencode over je querystring heen

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Je moet ook nog even variabelen urlencoden voordat je iets met de hand in een GET request zet.

PHP:
1
2
3
4
5
6
7
8
9
<?php
$forward=
 'sendmessage.php?to='.
  urlencode($from).
  '&subject='.
  urlencode($subject).
  '&message='.
  urlencode($message);
?>

Op die manier worden speciale tekens omgezet in een %nn code.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bang dat ik het niet precies begrijp.
UltraSub schreef op zondag 21 november 2004 @ 17:27:
Escape die single quotes middels \
Waar moet ik dat doen?
crisp schreef op zondag 21 november 2004 @ 17:29:
gebruik quotes om HTML attributen en gooi htmlspecialchars en urlencode over je querystring heen
Je bedoelt:
code:
1
$forward="sendmessage.php?to='$from'&subject='subject'&message='$message'";
Dit werkt niet

-- EDIT
Bedankt Skaah, het werkt nu. Ik bedank ook de anderen voor hun aanvullingen! Hartstikke bedankt jongens!

[ Voor 15% gewijzigd door Verwijderd op 21-11-2004 17:35 . Reden: Nieuwe informatie van Skaah ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:52

crisp

Devver

Pixelated

Zie Skaah, die kauwt het zelfs al voor:
PHP:
1
2
3
4
5
6
7
8
$forward= 
 'sendmessage.php?to='. 
  urlencode($from). 
  '&subject='. 
  urlencode($subject). 
  '&message='. 
  urlencode($message);
echo '<a href="' . $forward . '">forward</a>';

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als ik nu op de VERSTUUR knop druk haalt hij de waarden als volgt op:
code:
1
$message=addslashes(htmlspecialchars($HTTP_GET_VARS["Message"], ENT_QUOTES));

Heb ik dit zo goed gedaan of moeten addslashes en htmlspecialchars omgedraaid worden?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Die functies kunnen zo wel blijven staan. Maar waarom gebruik je $HTTP_GET_VARS in plaats van $_GET? :X

In de documentatie van PHP.net staat waarom die laatste bruikbaarder is, zoek maar eens naar het verschil tussen globals en superglobals.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt, ik heb het veranderd. Ik gebruikte dat omdat het niet mogelijk was om $_GET te gebruiken op mijn host (een kennis in amerika). Nu inmiddels wel :)

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
Addslashes en htmlspecialchars zijn in principe nergens voor nodig. De addslashes functie is alleen bruikbaar als je de data op plaatsen wilt gebruiken waar je allerlei speciale tekens (', " e.a.) moet escapen. Bijv php-variabelen als strings in javascript-code stoppen of evt in een database-query, maar gebruik dan liever de specifieke functies als mysql_escape_string.
En htmlspecialchars heb je alleen nodig als je de waardes wilt tonen in stukken html.

Beide heb je dus niet nodig als je de waardes toch al dmv urlencode in een url plaatst. Wel heb je een van beiden nodig als je de waardes op andere plaatsen "buiten php" wilt gebruiken.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:52

crisp

Devver

Pixelated

ACM schreef op zondag 21 november 2004 @ 18:57:
Addslashes en htmlspecialchars zijn in principe nergens voor nodig. De addslashes functie is alleen bruikbaar als je de data op plaatsen wilt gebruiken waar je allerlei speciale tekens (', " e.a.) moet escapen. Bijv php-variabelen als strings in javascript-code stoppen of evt in een database-query, maar gebruik dan liever de specifieke functies als mysql_escape_string.
En htmlspecialchars heb je alleen nodig als je de waardes wilt tonen in stukken html.

Beide heb je dus niet nodig als je de waardes toch al dmv urlencode in een url plaatst. Wel heb je een van beiden nodig als je de waardes op andere plaatsen "buiten php" wilt gebruiken.
True; mijn opmerking mbt htmlspecialchars betrof in dit geval de ampersands in de query-string van de URL bij het wegschrijven naar HTML :)

Intentionally left blank

Pagina: 1