Al een tijdje ben ik bezig met een website geschreven in PHP. Om precies te zijn is dit een website die ik maak om daarin mijn MySQL database uit te lezen en dat op de website netjes te ordenen. In die MySQL database staat mijn collectie aan DVD's, Gamecube games, PC Games, etc. Daarbij heb ik ook een link staan naar de afbeeldingen. Nu heb je problemen dat in bestandsnamen bijvoorbeeld geen : tekens gebruikt kunnen worden en dat IE niet een direct het ' teken ondersteund.
Om dit probleem te verhelpen maak ik gebruik van het onderstaande stukje code in PHP:
Dit werkt op zich goed. Heel goed zelfs, alleen bij de ' gaat het fout. Hieronder een voorbeeld van wat er gebeurd wanneer een afbeelding met een ' erin geopend wordt. Als de link geopend wordt is er in de titelbalk te zien dat hij een \ voor de ' zet. Die \ kan ik niet plaatsen, want ik heb die nergens toegewezen. Hier de link met het probleem: http://www.godjira.net/co...image=Luigi%27s%20Mansion . Ook is het probleem te zien bij de eigenschappen van de afbeelding. Ook daarin staat diezelfde \ weer. Heel vreemd.
Hieronder staat de code van image.php en de code van de originele pagina gamecube.php:
image.php:
gamecube.php
Ik kan zelf de fout niet terug vinden. De fout zit namelijk niet bij die str_replace, daar staat die \ namelijk niet gedefinieerd.
Hieronder nog een aantal linkjes naar de pagina's zelf:
http://collection.godjira.net
http://collection.godjira.net/gamecube.php
Het gebeurd ook bij de andere pagina's, dus niet alleen bij de Gamecube site. Het is overigens zo dat iedere collectie site met de plaatjes naar image.php linkt. Het probleem ligt, volgens mij, bij image.php, want daarin gaat het fout. Het meezenden van de variabelen gaat gewoon goed.
Om dit probleem te verhelpen maak ik gebruik van het onderstaande stukje code in PHP:
code:
1
2
3
4
| $afb = str_replace("'", "%27", $titel); $afb = str_replace("?", "", $afb); $afb = str_replace("&", "%26", $afb); $afb = str_replace(":", "%20-", $afb); |
Dit werkt op zich goed. Heel goed zelfs, alleen bij de ' gaat het fout. Hieronder een voorbeeld van wat er gebeurd wanneer een afbeelding met een ' erin geopend wordt. Als de link geopend wordt is er in de titelbalk te zien dat hij een \ voor de ' zet. Die \ kan ik niet plaatsen, want ik heb die nergens toegewezen. Hier de link met het probleem: http://www.godjira.net/co...image=Luigi%27s%20Mansion . Ook is het probleem te zien bij de eigenschappen van de afbeelding. Ook daarin staat diezelfde \ weer. Heel vreemd.
Hieronder staat de code van image.php en de code van de originele pagina gamecube.php:
image.php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| <?php if (isset($_GET["type"])){ $type = $_GET["type"]; } else { $type = "geen"; }if (isset($_GET["image"])){ $image = $_GET["image"]; } else { $image = "geen"; } ?> <html> <head> <style type='text/css'> body { background-image: url('images/<?php echo $type ?>.jpg'); background- repeat: no-repeat; background-position: center center; background-attachment: fixed } </style> <link rel='stylesheet' type='text/css' href='main.css'> <?php $afb = str_replace("'", "%27", $image); $afb = str_replace("?", "", $afb); $afb = str_replace("&", "%26", $afb); $afb = str_replace(":", "%20-", $afb); echo "<title>" . $afb . "</title>"; ?> </head> <body> <?php echo "<center>[img]'images/"[/img]</center>"; echo "<center><br><br><a href='javascript:history.back(1)'><< Terug</a></center>"; ?> </body> </html> |
gamecube.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
| <?php include ("sqlconnect.php"); $db = mysql_connect($db_hostname,$db_user,$db_password); mysql_select_db($db_database); $type = "gamecube"; ?> <html> <head> <title>Gamecube Collectie</title> <style type='text/css'> body { background-image: url('images/<?php echo $type ?>.jpg'); background- repeat: no-repeat; background-position: center center; background-attachment: fixed } </style> <link rel='stylesheet' type='text/css' href='main.css'> </head> <body> <center><table width='100%'> <tr> <td class='head'><a class='top' href='gamecube.php? order=Titel'><b>Titel</b></a></a></td> <td class='head'><a class='top' href='gamecube.php? order=Ontwikkelaar'><b>Ontwikkelaar</b></a></td> <td class='head'><a class='top' href='gamecube.php? order=Uitgever'><b>Uitgever</b></a></td> <td class='head'><a class='top' href='gamecube.php? order=Jaar'><b>Jaar</b></a></td> <td class='head'><a class='top' href='gamecube.php? order=Discs'><b>Discs</b></a></td> <td class='head'><a class='top' href='gamecube.php?order=Player%27s Choice'><b>Player's Choice</b></a></td> <td class='head'><a class='top' href='gamecube.php? order=Blocks'><b>Blocks</b></a></td> </tr> <tr> <td> </td> </tr> <?php if (isset($_GET["order"])){ $order = $_GET["order"]; } else { $order = "Titel"; } $sqlread = mysql_query("SELECT * FROM `gamecube` ORDER BY `" . $order . "`"); // Count rows $count = mysql_query("SELECT COUNT(*) AS Total FROM `gamecube`"); while ($data = mysql_fetch_assoc($count)) { $number = $data["Total"]; } while ($data = mysql_fetch_assoc($sqlread)) { $titel = $data["Titel"]; $ontwikkelaar = $data["Ontwikkelaar"]; $uitgever = $data["Uitgever"]; $jaar = $data["Jaar"]; $discs = $data["Discs"]; $player = $data["Player's Choice"]; $blocks = $data["Blocks"]; $afb = str_replace("'", "%27", $titel); $afb = str_replace("?", "", $afb); $afb = str_replace("&", "%26", $afb); $afb = str_replace(":", "%20-", $afb); echo "<tr><td><a href='image.php?type=" . $type . "&image=" . $afb . "' title='Bekijk de afbeelding van " . $titel . ".'>" . $titel . "</a></td><td>" . $ontwikkelaar . "</td><td>" . $uitgever . "</td><td>" . $jaar . "</td><td>" . $discs . "</td><td>" . $player . "</td><td>" . $blocks . "</td><td>"; } echo "<tr><td> </td></tr><tr><td><b>Totaal: " . $number . "</b></td></tr>"; mysql_close($db); ?> <tr> <td> </td> </tr> </table></center> <center><a href='index.php' title='Ga terug naar de index pagina.'>Index</a> | <a href='dvd.php' title='Bekijk mijn DVD Collectie.'>DVD's</a> | <a href='pc_games.php' title='Bekijk mijn PC Games Collectie.'>PC Games</a> | <a href='pc_software.php' title='Bekijk mijn PC Software Collectie.'>PC Software</a> | <a href='audio.php' title='Bekijk mijn Audio CD Collectie.'>Audio CD's</a></center><br> <center><a href='http://www.godjira.net/' title='Ga terug naar mijn website'>Terug naar de website</a></center> </body> </html> |
Ik kan zelf de fout niet terug vinden. De fout zit namelijk niet bij die str_replace, daar staat die \ namelijk niet gedefinieerd.
Hieronder nog een aantal linkjes naar de pagina's zelf:
http://collection.godjira.net
http://collection.godjira.net/gamecube.php
Het gebeurd ook bij de andere pagina's, dus niet alleen bij de Gamecube site. Het is overigens zo dat iedere collectie site met de plaatjes naar image.php linkt. Het probleem ligt, volgens mij, bij image.php, want daarin gaat het fout. Het meezenden van de variabelen gaat gewoon goed.
[ Voor 46% gewijzigd door Godjira op 02-03-2004 19:24 ]