Avatar billede illuzion Nybegynder
08. april 2007 - 18:00 Der er 3 kommentarer og
1 løsning

SQL fejl, når jeg prøver at kalde en side vha PHP og Mod.rewrite

Jeg er igang med at udvikle en ny undersektion til en af mine sider. Til at programmere siden har jeg brugt PHP, og mySql som database. For at gøre links mere søgevenlige har jeg brugt mod.rewrite.

Jeg står bare i det problem at når jeg prøver at kalde en side vha en enkelt id (f.ex: http://media.dild.net/videos), så kommer den frem med denne fejl "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1".
Men når jeg derimod kalder en side med flere id'er (f.ex: http://media.dild.net/video/5), så virker det helt som det skal.

Min kode som henter siderne:

<?php
$main="frontpage.php";
$content=$id.".php";
if(!$id){
include($main);
}elseif (file_exists($content)){
include($content);
}
else include("404.php");
?>


Min htaccess fil (mod.rewrite):

RewriteEngine on
RewriteRule ^/?([0-9A-Za-z]+)$ index.php?id=$1
RewriteRule ^/?([0-9A-Za-z]+)/([0-9]+)$ index.php?id=$1&idx=$2 [L]

Jeg håber der sidder et klogt hoved derude, som kan være mig behjælpelig - hvis i skal have flere infomationer siger i endelig til :).
Avatar billede illuzion Nybegynder
08. april 2007 - 19:49 #1
Jeg er vedhjælp af et andet forum kommet frem til, at min løsning nok er at slå register globals fra, og hente mine id'er vedhjælp af $_get. Men jeg har endnu ikke fundet ud af den rette løsning på dette endnu. Så hvis nogle kan komme med et bud, ville det være kanont ;).
Avatar billede erikjacobsen Ekspert
08. april 2007 - 19:54 #2
1) Ja, det er bedre at bruge $_GET - det vil altid virke. Men det er ikke fejlen
2) Et sted bruger du $idx i noget SQL, men den har ikke nogen værdi i det tilfælde, der giver fejl
3) Du lægger ikke det her på nettet, vel? For du skal vide at der mindst 2 alvorlige sikkerhedsprobler. a) Inkludere en fil men et navn hentet fra URL-en b) brug af en variabel fra URL-en i en SQL-sætning uden check. Begge dele gør dit site åbent for angreb fra onde personer ;)
Avatar billede illuzion Nybegynder
08. april 2007 - 19:55 #3
Fantastisk, fik selv klaret den.
Har ændret koden til dette:
<?php
$main="frontpage.php";
$content=$_GET['id'].".php";
if(!$_GET['id']){
include($main);
}elseif (file_exists($content)){
include($content);
}
else include("404.php");
?>
Avatar billede illuzion Nybegynder
08. april 2007 - 19:55 #4
:)
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