Avatar billede andreas13_fam Nybegynder
12. februar 2009 - 12:59 Der er 17 kommentarer og
1 løsning

Søge form problem & og ikke &

jeg har et søge <form> som er ret stor så i en forkortet version ser det sådan ud.
<form method="get" action="index.php">
  <input name="search" type="text" />
  <input name="Bruger" type="text" />
  <input type="submit" value=" Søg " />
</form>
Når man så trykke på søg ser det sådan ud fx
index.php?search=TEST&Bruger=TEST
Men det giver en del problemer og jeg tror at det ville blive løst hvis jeg kunne få & erstattet med &amp; fx
index.php?search=TEST&amp;Bruger=TEST
Avatar billede olebole Juniormester
12. februar 2009 - 13:26 #1
<ole>

Du fortæller ikke noget om karakteren af problemerne - og selv min ellers ret så saftspændte fantasi kan ikke levere gennembrud med hensyn til, hvad '&amp;' skulle kunne gøre for dig  =)

/mvh
</bole>
Avatar billede olebole Juniormester
12. februar 2009 - 13:27 #2
- og det ville være en seriøs fejl, hvis der i adresselinjen kommer til at stå:
    index.php?search=TEST&amp;Bruger=TEST
Avatar billede andreas13_fam Nybegynder
12. februar 2009 - 13:59 #3
#2 - det kan der være noget om :D
Problemet ligger i at ud fra adresselinjen laves et link fx
<a href="index.php?search=TEST&Bruger=TEST&amp;side=2">Side 2</a>
Der er muligt at man via PHP kan erstatte alle & med &amp; men hvordan man undgår at der kommer til at stå
<a href="index.php?search=TEST&amp;amp;Bruger=TEST&amp;side=2">Side 2</a>
er det jeg lejer med lige nu.
Avatar billede olebole Juniormester
12. februar 2009 - 14:12 #4
Du bruger da bare variablerne fra query-strengen. Hvis du bare møger hele requesten videre, har du jo heller ikke noget tjek på, hvad den indeholder. Nu kender jeg ikke din applikation, men det lyder skidt  =)
Avatar billede andreas13_fam Nybegynder
12. februar 2009 - 15:35 #5
Ja men min query-strengen er ret komplex, og der er derfor ikke rigtigt muligt. Jeg tror dog ikke det kan blive noget seriøst skidt sådan som jeg har lænkt mig, efter som alle tegn fjernes inden det bliver sendt til MySQL efterspørgelsen.
Avatar billede olebole Juniormester
12. februar 2009 - 16:08 #6
Du kunne vel gøre sådan:
    $query = explode("&", $query);
    $query = implode("&amp;", $query);
    print "<a href='".$query."'>Link</a>";
Avatar billede olebole Juniormester
12. februar 2009 - 16:09 #7
Det er i hvetfald det simpleste, jeg lige umiddelbart kan komme i tanker om  =)
Avatar billede andreas13_fam Nybegynder
12. februar 2009 - 16:18 #8
Jeg er bange for at jeg ikke kan slippe af sted med noget simpelt, i midt tilfælde. Kan du se om der er noget galt i dette.
if (isset($_GET['udvid']))
{
    if($_GET['udvid'] == "nej")
    {
    $url = "search=".$_GET['search']."&amp;bio=".$_GET['bio']."&amp;udvid=nej";
    }
    elseif($_GET['udvid'] == "ja")
    {
    $url = "search=".$_GET['search']."&amp;bio=".$_GET['bio']."&amp;udvid=ja&amp;Bruger=".$_GET['Bruger']."&amp;Oprindelse=".$_GET['Oprindelse'];
    }
}
Avatar billede andreas13_fam Nybegynder
12. februar 2009 - 16:19 #9
Det valider nemlig rigtigt :D
Men findes der også noget der hedder PHP infektion
Avatar billede olebole Juniormester
12. februar 2009 - 22:25 #10
Det er i princippet godt nok, men om det er sikkert (nok), kan jeg intet sige om, da jeg ikke aner, hvordan og til hvad det skal bruges  =)
Avatar billede andreas13_fam Nybegynder
12. februar 2009 - 22:49 #11
Her er hvordan det bliver brugt
echo '<a href="index.php?'.$url.'&amp;side=2">Link</a>';
Hvis du tænker på MySQL infektion så er jeg i gang med at læse om det. Men det er en jungle for en nybegynder. Så lige pt har jeg bare et script der fjerne de fleste tegn.
Avatar billede olebole Juniormester
12. februar 2009 - 23:32 #12
SQL-injection er kun én del af sikkerhedsovervejelserne, man bør gøre sig. Men hvad SQML-injection angår, så burde du absolut tjekke mysqli og prepared statements ud, hvis din server understøtter det:
    http://dk2.php.net/manual/en/book.mysqli.php

Begynd evt. med eksemplerne her:
    http://dk2.php.net/manual/en/mysqli-stmt.prepare.php

Det er idag den eneste rigtige måde at bruge MySQL på under PHP  ;o)
Avatar billede erikjacobsen Ekspert
13. februar 2009 - 12:00 #13
Eller PDO, Ole. Mais c'est la même chose.

Andreas: Glem alt om at sætte &amp; ind selv. Byg din querystring op med &-ere som du gerne vil have dem til at se ud. Og så når du skal skrive den i et HTML-dokument, så skal du som med alle andre strenge, i hvert fald dem, der indeholder HTML-giftige tegn, bruge funktionen htmlentities - eller tilsvarende. Intet mystisk i det, kun godt gammeldags håndværk. Dvs.

  $bum = "index.php?hej=sa&med=dig";
  print "<a href=\"" . htmlentities($bum). "\">Bum</a>";
Avatar billede olebole Juniormester
13. februar 2009 - 12:41 #14
Erik >> Jaja ... eller PDO, men jeg er jo til absolutterne!  ;D
Avatar billede andreas13_fam Nybegynder
14. februar 2009 - 12:05 #15
hmmm, jeg kender ikke lige PHP slangsproget hvem er absolutterne.
Når men vil du (olobole) ligge et svar!
Avatar billede olebole Juniormester
14. februar 2009 - 15:45 #16
Det var bare en intern joke  =)
Avatar billede erikjacobsen Ekspert
14. februar 2009 - 15:56 #17
Det svarer lidt til at Ole er fundamentalist i forhold til det skrevne ord, fx hos w3c.  ;)
Avatar billede olebole Juniormester
14. februar 2009 - 16:28 #18
Nej, det er nu ikke lige dét, det svarer til  =)
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