21. maj 2002 - 20:16
Der er
70 kommentarer og 1 løsning
Opdatering af html side
Jeg har et lille problem. Jeg har lave en side, hvor folk skal kunne logge ind. Dette gør jeg vha en cookie.Mit problem består af to ting: 1. Jeg kan ikke få slettet cookien igen.. 2. Jeg skal have opdateret en side, der ligger i en anden frame end den der skal kalde opdateringen Håber nogen kan hjælpe!
Annonceindlæg fra Infor
Jeg bruger dette til at oprette cookien: if($myrow = mysql_fetch_array($result)){ setcookie ("cookie_nick", $nick,time()+99999); setcookie ("cookie_pass", $pass,time()+99999); header("Location: main.html"); exit; } og dette script til at fjerne den: <SCRIPT> function DelCookie(sName, sValue) { document.cookie = sName + "=" + escape(sValue) + "; expires=Fri, 31 Dec 1998 23:59:59 GMT;"; } </SCRIPT> Jeg har forsøgt location.reload det virker ikke..!? Kan jeg "kaste" en reload på en frame..f.eks.: mainFrame.reload(); ???
parent.mainFrame.location.reload(true);
<div align="center"> <p align="center"><fieldset> <legend> Login: </legend> <form name='login' method='post' action='members.php' target='mainFrame'> <br> <label for="t1">Nickname:</label> <INPUT TYPE=TEXT NAME='nick' size='10' MAXLENGTH='10'> <br> <label for="t2">Password:</label> <INPUT TYPE=PASSWORD NAME='pass' size='10' MAXLENGTH='10'> <br> <br> <INPUT TYPE=submit value='login' id="submit"> </FORM></fieldset> </div> hvordan implementerer jeg den?..den skal sættes ind i ovenstående kode!?
Hvorfor lægger du ikke bare cookiescriptetover i login framen???
Ved ikke helt hvad du mener? Det jeg vil er, at jeg øverst på siden vil have at der står: 'logged in as: nickname' Jeg kan godt få lagt cookien og få logget brugeren ind..jeg skal bare have opdateret den frame hvori det står! :)
Du kan i din members.php skrive noget alá det her: <? if($jegERLoggetInd){ ?> <script> parent.mainFrame.location.reload(true); </script> <? } ?>
Så skal du selvfølgelig tjekke om cookien er sat i toppen der. ?> if($minCookieErSat){ echo("<input type='text' value='$minCookiesVærdi'>") }else{ echo("<input type='text' value='Ikke logget ind'>") }
hmm..den reloader ikke!?..jeg har sat den til at opdatere parent.mainFrame... og også tjekket for om cookien er sat! Det kan godt være det er mig der er dum..men jeg kan ikke få det til at virke!
Har du flere framesets??? Hvordan ser dit frameset ud? Og tjeck evt om du når dertil hvor den registrere dit login med en simpel if($jegERLoggetInd){ echo("hej du"); } Det er lidt svært at gætte sig frem til opbygningen af dine filer. /Nikolaj
Jeg har 4 frames..to øverst og to nederst...den jeg vil have opdateret er den øverst til højre..
siden er:
www.codename42.dk
Er du sikker på at du så ikke skal bruge: parent.rightFrame.location.reload(true); /Nikolaj
Det skal jeg.. :)..det har jeg også gjordt!...det var en fejl jeg skrev længere oppe :)
læser du cookiens værdi i den fil også?
hmm...jeg er lidt en newbie i php..hvordan læser jeg værdien..er det ikke bare '$cookieværdi' ???
I den nye PHP bruger man: echo $HTTP_COOKIE_VARS["minCookie"];
det virkede ikke?.. Jeg tror bare, at jeg finder på en anden løsning..det vil ikke rigtig virke for mig.. Tusind tak for hjælpen :)
Jeg vil gerne hjælpe dig, men du bliver nødt til at vise mig din PHP kode så.
if($nick){ $db = mysql_connect("localhost", "login", "password"); mysql_select_db("DBnavn",$db); $sql = "SELECT pass FROM users WHERE userName='$nick' AND pass='$pass'"; $result = mysql_query($sql,$db); if($myrow = mysql_fetch_array($result)){ setcookie ("cookie_nick", $nick,time()+99999); setcookie ("cookie_pass", $pass,time()+99999); //echo "you have just logged in!"; if($cookie_nick){ ?> <script> parent.rightFrame.location.reload(true); </script> <?php } header("Location: home.php"); exit; } Dette er koden, hvorfra framen skal opdateres.. Herunder er koden fra den frame der skal opdateres: if($cookie_nick){ echo $HTTP_COOKIE_VARS["cookie_nick"]; } else{ echo "Guest"; }
hehe sidder stadigt og roder lidt med det, men jeg spekulerede på om du ikke bare kunne lave den her i rightFrame.php if(!isset($navn)){ echo ("ikke logget ind"); }else{ echo ("Velkommen $navn"); } Og så i stedet for at reloade siden så bruge : parent.rightFrame.location.href="TOCright.php?navn=<? $navn ?>" /Nikolaj
Det virkede ikke!? Nu kan den godt vise om man er guest eller logget ind..man skal bare trykke F5 for at den opdaterer!?.
Der står i PHP manualen at siden skal reloades først. prøv så i stedet med: if(!isset($navn)){ echo ("ikke logget ind"); }else{ if(!isset($yepDu){ header($PHP_SELF); $yepDu = "yep"; } echo ("Velkommen $navn"); } Jeg roder lidt rundt nu, men håber du forstår. /Nikolaj
Den der $yepDu = "yep"; hvad er hhv.. yepDu og yep? ..Det er pænt af dig at bruge så meget tid på det :)
Kan man ikke bare reloade hele framesettet? header("Location: alleframes.php");
hmm..måske..det har jeg ikke tænkt på!
Som du kan se har jeg hentet PHP ekspertisen ind. Min kære onkel Sukos skal nu bevise hvad han kan. *LOL*
Så du min dreng! Nu ikke gøre nar!
Og jeg skal sgutte bevise någettt. Bare hjælpe hvis jeg kan! Og du skal jo altid hjælpes, nikolajdu!!!!! :o)
Nu opdatere den siden...problemet er bare, at hele siden bliver åbnet inde i mainFrameen? :)
Jeg brugte iøvrigt ikke header("location:
www.sidenavn.dk" ); da den ikke duede men header("location: index.html");
Det er vel en target? base target=mainframe
Du skal bruge http:// i din header!
Det gør det samme..den åbner hele siden i mainFram..jeg skal have reloaded hele mit fameset! :)
Hvis du vil kan du se det selv..
Siden hedder:
www.codename42.dk gå ind under members og log ind med:
login: draagdnul
pass: korn4ever
Så prøv min version igen (den der næsten virkede) og brug: top.frames["rightFrame"].location.reload(true);
Hvorfor bruger du en target i formaction
hmm, jeg skal godt nok opdatere for at se siden, og kan ikke få lov at logge ud.
Du mener: if($cookie_nick){ ?> <SCRIPT> top.frames["rightFrame"].location.reload(true); </SCRIPT> <?php } i members.php (den der kalder opdateringen) og: if(!isset($cookie_nick)){ echo "Guest"; } else{ echo "$cookie_nick"; } I rightFrame ikke?... Når jeg gør det kommer der en hvid side frem i mainFrame og rightFrame bliver ikke opdateret?
Men jeg forstår ikke helt, jeg ville da bruge ren php til at sætte og slette cookies? Hvorfor javascript?
nemlig!..jeg kan ikke få fjernet cookien heller..men det er et helt andet problem! :) hvad mener du med 'target i formaction'?
Det må jo være if(isset($cookie_nick))
Så prøver vi med et sidste lille forslag. parent.parent.rightFrame.location.reload(true); altså 2 parent.
Jeg har forsøgt javascript da jeg ikke kunne få det til at virke i php..jeg er ikke så meget inde i php endnu..det er den første side jeg laver med php :)
hmm.. parent.parent.rightFrame.location.reload(true); gør det samme..hvid skærm i mainFrame??.. Jeg må indrømme at jeg ikke rigtigt fatter hvad der er galt!!
JEg er ikke go' (heller ikke) til det javascript, men for nu at gøre det lidt mere kringlet: Du har et frameset, med topppen og mainframe. Toppen vises hele tiden. mainframe laver du så et nyt frameset til. På den måde er det en og samme fil du hele tiden skal refere til. Er du med på hvad jeg mener? Altså et frameset som består af toppen, og dernæst et nyt frameset til at definere main og right. Det ville nok gøre det lidt nemmere. Og sæt hellere de cookies med php. Det gi'r bedre mulighed for at kryptere passwordet.
Jeg tror godt jeg ved hvad du mener..men er det ikke sådan jeg allerede har det..her er mit frameset: <frameset rows="123,*" frameborder="NO" framespacing="0" cols="*"> <frameset cols="*,215" frameborder="NO"framespacing="0" rows="*"> <frame name="topFrame" scrolling="NO" noresize src="TOC.php"> <frame name="rightFrame" scrolling="NO" noresize src="TOCright.php"> </frameset> <frameset cols="*,314" frameborder="NO" framespacing="0" rows="*"> <frame name="mainFrame" src="home.php"> <frame name="rightFrame1" scrolling="AUTO" noresize src="news.php"> </frameset> </frameset>
hmm, det vedjeg ikke om det? Er der nogen af de filer som er et nyt frameset?
og du har HELT ret i det med cookien..jeg skal bare lige have læst lidt om hvordan man gør :)..men det er heldigvis ikke af så stor betydning endnu da både spillet og siden er på prealpha stadiet :)
nej..de er almindelige php filer uden frameset eller noget andet! :)
Tror nu heller ikke dit definering a framesettet er korrekt? Kan din side se så'n ud: TOP ________________________ | | MAIN | RIGHT | |
Hvis nu den kan det, så laver du et "indexframeset" med top.php og bund.php Top.php viser toppen. bund.php er et nyt frameset hvor main og right bliver defineret.
Det er meninge, at den skal se sådan ud: topFrame | rightFrame ----------------------- mainFrame | rightFrame1
ahh...det vil jeg lige prøve!
Og forresten er sessions bedre/nemmere end cookies. cookien er "overlegen" på den måde at den bliver lagt på brugerens comp, og kan derfor hentes igen på et senere tidspunkt. Hvorimod med sessions, så er der "lukket" når brugeren lukker browseren ned.
ok!..tusind tak for hjælpen begge to :) Jeg vil rode videre med det..finder nok en løsning på et tidspunkt! :) Hvis i vil have nogle point så bare post et svar..i har fortjent dem!!
ok, jeg vil også sove lidt snart :)
Hov jeg deler med onkel i morgen. Håber du finder en løsning :)
ja..gør det..jeg fik vist givet dig alle pointene..det var ikke med vilje! :) Det gør jeg..jeg bliver nok bare nød til at sætte mig mere ind i php og så ordne det hele via det :)..
Mjaaa. Er lidt bange for jeg ikke helt har haft hovedet med mig her, men ser jeg lyset så skriver jeg tilbage.
Nikolajdu se lyset???????? det er da højest lyset fra morgensolen når han bliver smidt ud af morgen-værtshuset! :o))))))
Jeg har fået løst problemet..jeg rodede lidt med opsætningen af mine frames og ændrede nogle småting i mine scripts så virkede det ligepludselig :)
Vi tilbyder markedets bedste kurser inden for webudvikling