Avatar billede magsie Nybegynder
10. november 2005 - 09:16 Der er 9 kommentarer og
1 løsning

PHP_SELF problem med mellemrum i adresse linien

bruger

...
foreach($photo_categories as $key => $subarray)
  {
    echo "|$key|\n";
    foreach($subarray as $type)

echo"<a href=".$_SERVER[PHP_SELF]."?PageID=photos&Country=".$key."&Sub=".$type.">" .$type. "</a>";


i MySQL databasen ligger $type ex 'new york' - altsaa med mellemrum

benytter
    $PageID = $_GET['PageID'];
    $Country = $_GET['Country'];
    $Sub = $_GET['Sub'];
til at hente info fra adresse linien

udvaelger hvilke billeder der skal vises med
WHERE country='$Country' AND sub='$Sub'

har ikke problmer naar der ikke er mellemrum men naar der er saa virker det ikke.

- mit sp. er hvordan jeg kan loese problemet uden at skulle aendre hele databasen (slettet mellemrum).
Avatar billede bromer Nybegynder
10. november 2005 - 09:18 #1
Har du prøvet at printe den SQL sætning, hvor det går galt fordi du har et mellemrum? Det kan være fordi dit mellemrum er blevet lavet til %20 i url'en.
Avatar billede magsie Nybegynder
10. november 2005 - 09:21 #2
linket 'new orleans' ser ud som foelgende:
<a href=index.php?PageID=photos&Country=usa&Sub=new orleans>new orleans</a>

og i adresse baren naar jeg kilkker bliver den saa:
index.php?PageID=photos&Country=usa&Sub=new

altsaa skriver den kun delen foer mellemrummet...

giver det mening?
Avatar billede bromer Nybegynder
10. november 2005 - 09:29 #3
Det er fordi du ikke har quotes om dine ting. Det skal du altid huske. Lav denne linje:

<a href=index.php?PageID=photos&Country=usa&Sub=new orleans>new orleans</a>

om til

<a href="index.php?PageID=photos&Country=usa&Sub=new orleans">new orleans</a>
Avatar billede magsie Nybegynder
10. november 2005 - 09:32 #4
godt set ;) en saa lille ting - smid et svar og faa som fortjent
Avatar billede bromer Nybegynder
10. november 2005 - 09:34 #5
tak tak
Avatar billede muddi Praktikant
10. november 2005 - 15:43 #6
Husk at bruge addslashes() på nedenstående linier!

$PageID = $_GET['PageID'];
$Country = $_GET['Country'];
$Sub = $_GET['Sub'];

Du vil nødig have nogen til at lave rod i din db ;)
Avatar billede stich Nybegynder
11. november 2005 - 03:12 #7
"Husk at bruge addslashes()" ... "Du vil nødig have nogen til at lave rod i din db ;)"
Det afhjælper addslashes ikke nødvendigvis. Man bør bruge en *ordentlig* metode til det, som fx PHPs mysql_real_escape_string(). (at addslashes rent faktisk forhindrer SQL-injection i MySQL (v. 4.x ihf.) er så en anden sag; det er reelt en forkert måde at gøre det på).
Avatar billede magsie Nybegynder
12. november 2005 - 05:59 #8
takker - men ikke helt med

skal jeg paa siden med
<a href='".$_SERVER[PHP_SELF]."?PageID=photos&Country=".$key."&Sub=".$type."'>" .$type. "</a>

ha foelgende
$PageID = addslashes($_GET['PageID']);
$Country = addslashes($_GET['Country']);
$Sub = addslashes($_GET['Sub']);


og saa paa siden hvor jeg benytter variablene ha foelgende
$PageID = stripslashes($PageID);
$Country = stripslashes($Country);
$Sub = stripslashes($Sub);

eller hvorledes skal de benyttes?

(hvis et svar kraever point saa sig til saa opretter jeg det som et selvstaendigt sp.)
Avatar billede muddi Praktikant
12. november 2005 - 15:22 #9
Pyt med points ;)

du bør som stich siger bruge funktionen mysql_real_escape_string() fremfor addslashes() på dine variable.

Du skal bruge mysql_real_escape_string() efter du har brugt mysql_connect(), og inden du bruger mysql_query().

Du behøver ikke at strippe dem igen, da MySQL selv sørger for den del :)

$PageID = mysql_real_escape_string($_GET['PageID']);
$Country = mysql_real_escape_string($_GET['Country']);
$Sub = mysql_real_escape_string($_GET['Sub']);

prøv evt. at søge på google efter SQL Injection... der findes mange interessante artikler om emnet.
Avatar billede magsie Nybegynder
12. november 2005 - 22:32 #10
tak - den broker sig ikke - om det holder maa jeg blot stole paa da jeg ikke har testet med skadelig kode! ;)

tak herfra
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester