Avatar billede hmm10 Nybegynder
15. april 2003 - 13:53 Der er 24 kommentarer og
1 løsning

Undgå tekst i adressebar

Hej

Jeg har en del knapper med forskellige værdier (alm. <a><img></a> knapper). Disse forskellige værdier skal så indsættes i en MyQSL sætning der henter alle de værdier der har de ønskede værdier..

Det jeg gerne vil er at undgå den ønskede værdi i adressebaren, men hvordan? Det hele forgår på idenx.php?id=1, så id=1 skal være der..

Jeg benytter pt. php, men har på fornemmelsen at jeg skal have fat i noget javascript..
Avatar billede avminarm Juniormester
15. april 2003 - 14:00 #1
idenx.php - sjovt navn ;o)

Man kan lave noget apache hejs - se evt. på www.mbn.dk - ellers er det ikke lige til at lave i PHP - en måde at omgå det på kan være at lave en meget lille top-frame som er konstant, meeeen så skal man jo bruge frames ;o(
Avatar billede hmm10 Nybegynder
15. april 2003 - 14:00 #2
Jeg sætter gerne flere points til. Der kunne jo være mig, der har overset noget..
Avatar billede hmm10 Nybegynder
15. april 2003 - 14:04 #3
avminarm >> :) så det først nu.. index.php mener jeg.. jammen dog. Jeg kan ikke finde noget umeldbart på www.mbn.dk, men jeg kan se din pointe.. Jeg kan ikke lide den løsning..

Andre der har en forslag med evt. javascripts ?
Avatar billede fsconsult.dk Nybegynder
15. april 2003 - 14:07 #4
Javascript vil kunne løse dit problem (hvis jeg har forstået dig rigtigt).

Du tilføjer et <form method="post"> element, samt et hidden felt til den valgte værdi. Dit <a> element skal så kalde et javascript som ændrer værdien på det hidden felt, og laver submit af formen.

(håber ikke det var alt for utydeligt)
Avatar billede hmm10 Nybegynder
15. april 2003 - 14:09 #5
Jeg har evt. et forslag selv nu.. men ved ikke om man kan gøre det..

klikkes på knap '1' sætte denne værdi:
  $klikpåknap = '1';

if($klikpåknap = ''){
  echo 'Der er ikke trykket på nogen knap!';
}else{
  echo 'klikpåknap = ' . $klikpåknap .;
};
Avatar billede hmm10 Nybegynder
15. april 2003 - 14:12 #6
fsconsult.dk >> Lidt, det vil da give værdien fra hiddenfeltet i adressebaren.. eller? Kan du ikke give et eksempel?
Avatar billede fsconsult.dk Nybegynder
15. april 2003 - 14:13 #7
Når man i formen benytter POST fremfor GET, vil værdierne blive overført udenom adresselinien.

Iøvrigt kan du ikke i javascript ændre på php variable, da php scriptet og javascriptet afvikles på hhv. serveren og i browseren.
Avatar billede hmm10 Nybegynder
15. april 2003 - 14:17 #8
fsconsult.dk >> ok. :)
Det havde jeg også tænkt en del på om man kunne og ej.. det kan man så ikke.
Avatar billede avminarm Juniormester
15. april 2003 - 14:18 #9
på mbn.dk er der noget her: http://mbn.dk/PHP/fakebib/
Avatar billede hmm10 Nybegynder
15. april 2003 - 14:22 #10
avminarm >> takker for linket. Men jeg kan ikke bruge den metode umeldbart..
Avatar billede hmm10 Nybegynder
15. april 2003 - 14:28 #11
Nogle ideer til hvordan en værdi kan strikkes sammen?

<img Onclik="location:href='index.php?id=<? echo $id; ?>';XXXXXX" title="Knap 1">

XXXXXX = et eller andet der gør at $klikpaaknap = '1'..
Avatar billede fsconsult.dk Nybegynder
15. april 2003 - 14:29 #12
<script language="JavaScript" type="text/javascript">
    function selectItem( sItem ) {
        document.forms[0].elements["item"].value = sItem;
        document.forms[0].submit();
    }
</script>

<form method="POST" action="/dinurl">
<input type="hidden" name="action" value="">

<a href="java script:selectItem(47);">Hello World!</a>

</form>
Avatar billede fsconsult.dk Nybegynder
15. april 2003 - 14:31 #13
ups, <input type="hidden" name="action" value=""> skal selvfølgelig være <input type="hidden" name="item" value="">
Avatar billede hmm10 Nybegynder
15. april 2003 - 14:35 #14
Hmm, hvilken værdi kommer der frem og hvor står den?
Avatar billede fsconsult.dk Nybegynder
15. april 2003 - 14:37 #15
I det tilfælde, når du samme resultat tilbage, som hvis du skrev /dinurl?item=47

dvs. hent "item" på samme måde som du henter "id" fra URI'en (afhænger lidt af PHP version/opsætning)
Avatar billede hmm10 Nybegynder
15. april 2003 - 14:44 #16
halløj! takker fsconsult.dk.. det virker..
Hvor var det enkelt nu hvor jeg ser det.. smid lige nogle svar..
Avatar billede fsconsult.dk Nybegynder
15. april 2003 - 14:48 #17
du får formentlig en php variabel der hedder $item, hvis du som jeg benytter register_globals (hvad man ikke burde)
Avatar billede hmm10 Nybegynder
15. april 2003 - 14:55 #18
:) Burde man ikke, hvorfor?

Når sidens opdateres kommer der en alert() box frem og spørg om man vil sende oplysningerne igen.. Kan denne alert() ikke undgås, dvs. at browseren trykker 'ok'?
Avatar billede fsconsult.dk Nybegynder
15. april 2003 - 14:59 #19
Det er er potentiel sikkerhedsrisiko. min undskyldning er at mine sites er udviklet da man ikke havde andre muligheder, og at jeg ikke har haft tid til at konvertere dem .. endnu!

Den advarsel får man altid når man benytte POST i sine forms, og man så laver refresh af siden.
Avatar billede hmm10 Nybegynder
15. april 2003 - 15:02 #20
fsconsult.dk >> Jeg er ikke med nu. Er det ulovlogt eller hvad? Det virker jo..
Avatar billede fsconsult.dk Nybegynder
15. april 2003 - 15:05 #21
Nej, det er ikke ulovligt, men det gør at folk har en mulighed for at sende data i URL'en, som kan få dine php scripts til at opføre sig forkerte, fordi disse data automatisk bliver lavet om til php variable.

Det er langt pænere og mere sikkert at hente sine variable explicit, men det er ganske frivilligt hvilken metode man vælger.
Medmindre man kører på en PHP server hvor register_globals er slået fra (det er den default på nye php installationer), så har man ikke så meget valg :-)
Avatar billede hmm10 Nybegynder
15. april 2003 - 15:09 #22
tja, jeg kan godt se det. skrives der i adressebaren ?id=1&item=123456789 bliver værdien 123456789. Men systemet kan jo tjelkke om 123456789 eksistere eller ej i mysql. Hvis den ikke eksistere vises en http404 side istedet.. tager jeg fejl eller?
Avatar billede fsconsult.dk Nybegynder
15. april 2003 - 15:12 #23
ja, men du kan også bruge ?id=1&item=123456789&user=root

hvor variablen "user" vil blive overskrevet med "root", hvilket kan give underlige reaktioner hvis du benytter "user" til bruger-identificering eller lign.
Avatar billede hmm10 Nybegynder
15. april 2003 - 15:20 #24
bruger-identificering? systemet er ikke et bruger system..
Avatar billede fsconsult.dk Nybegynder
15. april 2003 - 15:22 #25
kunne være en variabel du bruger til at logge dig på database, mailserver eller andet med. var kun ment som et eksempel på hvordan det potentielt kan misbruges..
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