[PHP-MySQL] $_GET['categorie'] maar ook degene met spaties!

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Goochem
  • Registratie: April 2002
  • Laatst online: 24-11-2023
Ik heb het volgende stukje code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

mysql_connect() or die (mysql_error());
mysql_select_db('database') or die (mysql_error());

$subs = mysql_query("SELECT DISTINCT sub FROM products ORDER BY sub ASC") or die (mysql_error());

while ($subrow = mysql_fetch_array($subs)) {
?>
<a href=<?=$_SERVER['PHP_SELF']?>?sub=<? print $subrow['sub']; ?>><?=$subrow['sub']?></a>
<?="<BR>"; }?>

?>

Output van dit geintje is een hele lijst met alle sub-categorieën in de database, bijvoorbeeld Monitoren, Harddisks, Mainboards, etc.

Deze sub-categorieën zijn per stuk allemaal een link zoals bijvoorbeeld pagina.php?sub=HARDDISKS.

Het probleem is nu dat er categorieën bij zitten die bestaan uit meerdere woorden, bijvoorbeeld SOFTWARE BACKUP of MAINBOARDS AMD, daarvan wordt alleen het eerste woord (bijvoorbeeld SOFTWARE) in de link weergegeven (pagina.php?sub=SOFTWARE ipv pagina.php?sub=SOFTWARE%20BACKUP.. (de spatie pakt ie dus niet mee, %20 hoort daar te komen, niet?)....

Iemand een idee hoe dit aan te pakken?

Goochem


Acties:
  • 0 Henk 'm!

  • [ti]
  • Registratie: Februari 2000
  • Niet online
php.net/urlencode

Acties:
  • 0 Henk 'm!

  • dennistd
  • Registratie: Augustus 2004
  • Laatst online: 19-09 08:30
Kun je de database niet aanpassen dat je bijvoorbeeld SOFTWARE_BACKUP krijgt?

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 15:37

momania

iPhone 30! Bam!

Je gebruikt hier presentatie waardes ook weer als input voor de rest van je programmatuur. Daar zit je fout ;)

Sla dus in je products tabel apart een presentatie naam op en een naam om verder mee te werken in je programmatuur. Heb je ook nooit last van spaties ;)

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

  • vriesdude
  • Registratie: Februari 2002
  • Laatst online: 19-09 19:14
momania schreef op donderdag 04 augustus 2005 @ 10:21:
Je gebruikt hier presentatie waardes ook weer als input voor de rest van je programmatuur. Daar zit je fout ;)

Sla dus in je products tabel apart een presentatie naam op en een naam om verder mee te werken in je programmatuur. Heb je ook nooit last van spaties ;)
Bij voorkeur zelf een Unique/Primary Key veld (int)

/dev/null


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

vriesdude schreef op donderdag 04 augustus 2005 @ 10:28:
[...]

Bij voorkeur zelf een Unique/Primary Key veld (int)
Bij voorkeur een string ivm met zoekmachines en vriendelijke url's.

Dat je intern een int als PK gebruikt lijkt me logisch.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Iemand een idee hoe dit aan te pakken?
Leer fatsoenlijk html. Het is gebruikelijk om aanhalingstekens om attributen heen te zetten.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:29

crisp

Devver

Pixelated

Janoz schreef op donderdag 04 augustus 2005 @ 10:33:
[...]


Leer fatsoenlijk html. Het is gebruikelijk om aanhalingstekens om attributen heen te zetten.
Dat niet alleen; HTML-attributen moeten ook HTML-encoded zijn. Daarnaast moeten query-vars URL-encoded zijn. Om het nog leuker te maken: PHP_SELF kan ism multiviews ook rare tekens bevatten, en bij het gebruik van magic_quotes zijn quotes ook nog eens voorzien van slashes :P

Helemaal correct zou dit dus zijn:
PHP:
1
2
$url = (get_magic_quotes_gpc() ? stripslashes($_SERVER['PHP_SELF']) : $_SERVER['PHP_SELF']) . '?sub=' . urlencode($subrow['sub']);
echo '<a href="' . htmlspecialchars($url) . '">' . htmlspecialchars($subrow['sub']) . '</a><br>';

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
crisp schreef op donderdag 04 augustus 2005 @ 10:42:
[...]

Dat niet alleen; HTML-attributen moeten ook HTML-encoded zijn. Daarnaast moeten query-vars URL-encoded zijn. Om het nog leuker te maken: PHP_SELF kan ism multiviews ook rare tekens bevatten, en bij het gebruik van magic_quotes zijn quotes ook nog eens voorzien van slashes :P

Helemaal correct zou dit dus zijn:
PHP:
1
2
$url = (get_magic_quotes_gpc() ? stripslashes($_SERVER['PHP_SELF']) : $_SERVER['PHP_SELF']) . '?sub=' . urlencode($subrow['sub']);
echo '<a href="' . htmlspecialchars($url) . '">' . htmlspecialchars($subrow['sub']) . '</a><br>';
Gebruik jij je if/else constructies altijd met die ? en : :>

[ Voor 11% gewijzigd door supakeen op 04-08-2005 10:46 ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

zmn schreef op donderdag 04 augustus 2005 @ 10:46:
Gebruik jij je if/else constructies altijd met die ? en : :>
offtopic:
Boeit dat? :P Wanneer het overzichtelijk kan blijven is het met die ternary operator een stuk korter om te tikken.


Maar nu graag weer ontopic. :)

'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!

  • mklerx
  • Registratie: April 2000
  • Laatst online: 18-09 16:38
crisp schreef op donderdag 04 augustus 2005 @ 10:42:
[...]

Dat niet alleen; HTML-attributen moeten ook HTML-encoded zijn. Daarnaast moeten query-vars URL-encoded zijn. Om het nog leuker te maken: PHP_SELF kan ism multiviews ook rare tekens bevatten, en bij het gebruik van magic_quotes zijn quotes ook nog eens voorzien van slashes :P

Helemaal correct zou dit dus zijn:
PHP:
1
2
$url = (get_magic_quotes_gpc() ? stripslashes($_SERVER['PHP_SELF']) : $_SERVER['PHP_SELF']) . '?sub=' . urlencode($subrow['sub']);
echo '<a href="' . htmlspecialchars($url) . '">' . htmlspecialchars($subrow['sub']) . '</a><br>';
Volgens mij is die stripslashes niet nodig, omdat als magic_quotes_gpc aanstaat alleen de variabelen in de GET, POST en COOKIES (GPC) arrays ge'addslashed' zijn en niet de variabelen in $_SERVER en lokale variabelen.
Toch?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:29

crisp

Devver

Pixelated

mklerx schreef op donderdag 04 augustus 2005 @ 20:59:
[...]


Volgens mij is die stripslashes niet nodig, omdat als magic_quotes_gpc aanstaat alleen de variabelen in de GET, POST en COOKIES (GPC) arrays ge'addslashed' zijn en niet de variabelen in $_SERVER en lokale variabelen.
Toch?
Nee, toch niet; dingen als $_SERVER['PHP_SELF'] en $_SERVER['HTTP_USER_AGENT'] enzo zijn ook voorzien van 'magic' quotes...

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Goochem schreef op donderdag 04 augustus 2005 @ 10:09:

Het probleem is nu dat er categorieën bij zitten die bestaan uit meerdere woorden, bijvoorbeeld SOFTWARE BACKUP of MAINBOARDS AMD, daarvan wordt alleen het eerste woord (bijvoorbeeld SOFTWARE) in de link weergegeven (pagina.php?sub=SOFTWARE ipv pagina.php?sub=SOFTWARE%20BACKUP.. (de spatie pakt ie dus niet mee, %20 hoort daar te komen, niet?)....

Iemand een idee hoe dit aan te pakken?
Deze code kan je helpen;

PHP:
1
2
3
4
5
if($tmp = explode(" ", $value)) {
    echo $tmp[0];
} else {
    echo $value;
}


Wees echter zelf zo verstandig om eens te kijken hoe je nette code kunt schrijven, in zowel HTML als PHP. Je switched nu bijvoorbeeld constant tussen HTML en PHP, totaal overbodig. Daarna kun je gaan kijken wat de mogelijkheden van PHP zijn. Succes!

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

crisp:
Nee, toch niet; dingen als $_SERVER['PHP_SELF'] en $_SERVER['HTTP_USER_AGENT'] enzo zijn ook voorzien van 'magic' quotes...
En daarom:
PHP:
1
2
3
4
5
6
<? 
if ( get_magic_quotes_gpc () ) {
   die ( 'What twat has turned this option on? '
         . 'Find him, poke him with a stick and turn off this option' );
}
?>


magic quotes :r

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


Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

drm schreef op vrijdag 05 augustus 2005 @ 09:01:
[...]
En daarom:
PHP:
1
2
3
4
5
6
<? 
if ( get_magic_quotes_gpc () ) {
   die ( 'What twat has turned this option on? '
         . 'Find him, poke him with a stick and turn off this option' );
}
?>


magic quotes :r
vergeet niet even te melden om wélke optie het gaat in je foutmelding ;)

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Waarom dan niet gewoon standaard in je script:

PHP:
1
set_magic_quotes_runtime (0);


Ben je ook overal vanaf.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:29

crisp

Devver

Pixelated

Bosmonster schreef op vrijdag 05 augustus 2005 @ 14:06:
Waarom dan niet gewoon standaard in je script:

PHP:
1
set_magic_quotes_runtime (0);


Ben je ook overal vanaf.
nee, magic_quotes_runtime != magic_quotes_gpc

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

SchizoDuckie:
vergeet niet even te melden om wélke optie het gaat in je foutmelding ;)
:Z you got the point

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


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

drm schreef op vrijdag 05 augustus 2005 @ 09:01:
En daarom:
PHP:
1
2
3
4
5
6
<? 
if ( get_magic_quotes_gpc () ) {
   die ( 'What twat has turned this option on? '
         . 'Find him, poke him with a stick and turn off this option' );
}
?>


magic quotes :r
offtopic:
Hmm, ik herinner me vaag iets dat een slim persoon ooit heeft gezegd over die()...wie was dat ook alweer? :+


edit:
Bah, drm is een vieze editert. :+

[ Voor 5% gewijzigd door NMe op 05-08-2005 22:28 ]

'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!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

-NMe-:
offtopic:
Hmm, ik herinner me vaag iets dat een slim persoon ooit heeft gezegd over die()...wie was dat ook alweer? :+
Hoezo :? O-)

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

Pagina: 1