31. marts 2007 - 17:09
Der er
26 kommentarer og 1 løsning
Problemer med sessions til chat
Hej Jeg er ikke lige, den bedste til sessions. Jeg har lavet en lille slags chat, hvor man skriver et valgfrit navn. Når man har gjort det kan man så skrive beskeder. Ved den første besked man skriver kommer der til at stå (valgt-navn): (besked). Men så hvis man skriver flere beskeder, så kommer der til at stå : (besked). Så den tager ikke navnet med, udover første gang. "Chatten" består af 3 filer: index.php ----------------------- <?php session_start(); $_SESSION["navn"] = $_GET["navn"]; ?> <center> <br><br><br><br><br><br><br> <FORM METHOD=POST ACTION=chat.php> <INPUT TYPE=hidden NAME=skriv VALUE=1> <FONT face=verdana size=1><b><u>Chat</u><br><br><br>Skriv dit chat navn<br> <INPUT TYPE=TEXT NAME=navn style=" background-color: #FFFFFF; border-style: solid; border-width: 1px; font-family: verdana, arial, sans-serif; font-size: 10px; color: #000000; padding: 0px;"><br> <INPUT TYPE=SUBMIT VALUE=Start style=" background-color: #FFFFFF; border-style: solid; border-width: 1px; font-family: verdana, arial, sans-serif; font-size: 10px; color: #000000; padding: 0px;"> <FORM> ------------------------------ chat.php ------------------------------ <? $db = mysql_connect("host", "bruger", "kode"); mysql_select_db("database", $db); { ?> <html> <head> <title>Xhero Chat</title> </head> <body><center> <br><center><br><br><br><br><table border='1' style='border-collapse: collapse' bordercolor='#000000' width='500' height='300'><tr> <td width='100%' height='100%' valign='top'> <? $foresp = mysql_query("SELECT navn, besked FROM bog ORDER BY nr DESC"); while($data = mysql_fetch_array($foresp)){ echo "<FONT face=verdana size=1><b>"; echo $data["navn"]; echo ":</b>"; echo " "; echo nl2br($data["besked"]); echo "<br />"; } ?> </td></tr></table> <FORM METHOD=POST ACTION=skriv.php> <?php $navn = $_POST[navn]; echo "<input type='hidden' name='navn' value='$navn'>"; { ?> <INPUT TYPE=hidden NAME=skriv VALUE=1> <input type'text' name='besked' size='88' style=' background-color: #ffffff; border-style: solid; border-width: 1px; font-family: verdana, arial, sans-serif; font-size: 10px; color: #000000; padding: 0px;'> <INPUT TYPE=submit VALUE='Send' style=' background-color: #ffffff; border-style: solid; border-width: 1px; font-family: verdana, arial, sans-serif; font-size: 10px; color: #000000; padding: 0px;'> </FORM> </BODY> </HTML> <?php }} ?> --------------------------------- skriv.php --------------------------------- <? $db = mysql_connect("host", "bruger", "kode"); mysql_select_db("database", $db); if ($_POST["skriv"]){ $navn = $_POST["navn"]; $besked = $_POST["besked"]; if(!get_magic_quotes_gpc()){ $navn = addslashes($navn); $besked = addslashes($besked); } mysql_query("INSERT INTO bog (navn, besked) VALUES ('$navn', '$besked')"); } header("location:chat.php"); ?> ------------------------------ Håber nogle kan hjælpe ?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
31. marts 2007 - 17:49
#1
session_start(); if ($_POST["skriv"]){ $navn = $_SESSION["navn"]; $besked = $_POST["besked"]; if(!get_magic_quotes_gpc()){ $navn = addslashes($navn); $besked = addslashes($besked); } mysql_query("INSERT INTO bog (navn, besked) VALUES ('$navn', '$besked')"); }
31. marts 2007 - 17:51
#2
og et RIGTIGT godt råd... sæt limit på. feks: $foresp = mysql_query("SELECT navn, besked FROM bog ORDER BY nr DESC LIMIT 50"); Sådan at chatten ikke "vokser" efterhånden som der kommer flere og flere beskeder. :) Limit 50 viser de sidste 50 posts. :)
31. marts 2007 - 18:21
#3
Nu når jeg skriver en besked bliver mit navn slet ikke skrevet, heller ikke første gang..
31. marts 2007 - 18:30
#4
prøv dette: if ($_POST["skriv"]){ if(trim(isset($_POST['navn']))) { $navn = $_POST['navn']; } else { session_start(); $navn = $_SESSION["navn"]; } $besked = $_POST["besked"]; if(!get_magic_quotes_gpc()){ $navn = addslashes($navn); $besked = addslashes($besked); } mysql_query("INSERT INTO bog (navn, besked) VALUES ('$navn', '$besked')"); }
31. marts 2007 - 18:31
#5
sådan her: if ($_POST["skriv"]){ if(trim(isset($_POST['navn']))) { $navn = $_POST['navn']; } else { session_start(); $navn = $_SESSION["navn"]; } $besked = $_POST["besked"]; if(!get_magic_quotes_gpc()){ if(trim(isset($_POST['navn']))) { $navn = addslashes($navn); } else { session_start(); $navn = addslashes($_SESSION["navn"]); } $besked = addslashes($besked); } mysql_query("INSERT INTO bog (navn, besked) VALUES ('$navn', '$besked')"); }
31. marts 2007 - 18:33
#6
Nu virker det første gang man skriver noget, men hvis man skriver flere beskeder, viser den ikke navnet. Ligesom det jeg postede istarten.
31. marts 2007 - 18:35
#7
øhhh... hehe, 2 secs. :)
31. marts 2007 - 18:39
#8
i chat.php smider du dette ind i toppen: session_start(); under denne linie (eller over, må du selv om): <INPUT TYPE=submit VALUE='Send' style=' background-color: #ffffff; border-style: solid; border-width: 1px; font-family: verdana, arial, sans-serif; font-size: 10px; color: #000000; padding: 0px;'> smider du dette ind: <input type="hidden" name="navn" value="<?php echo $_SESSION['navn']; ?>"> og se om det hjælper på det.
31. marts 2007 - 18:40
#9
<? $db = mysql_connect("host", "bruger", "kode"); mysql_select_db("database", $db); { ?> skal den { være der ? :)
31. marts 2007 - 18:47
#10
Nu viser den ikke navn første gang, men navn hvis jeg skriver flere beskeder :b ?
31. marts 2007 - 18:48
#11
£@!¤#"¤%#4$£@$£@$£!"!¤!?!?#"#!"?¤#"@!?!
31. marts 2007 - 18:51
#12
prøv lige at fjerne den input type="hidden" name="navn" value="<?php echo $_SESSION['navn']; ?>"> som du smed ind før og ændrer: <FORM METHOD=POST ACTION=skriv.php> <?php $navn = $_POST[navn]; echo "<input type='hidden' name='navn' value='$navn'>"; til: <FORM METHOD=POST ACTION=skriv.php> <?php $navn = $_SESSION[navn]; echo "<input type='hidden' name='navn' value='$navn'>";
31. marts 2007 - 18:53
#13
Nu viser den slet ik navn nogle af gangene
31. marts 2007 - 18:54
#14
post lige ALT hvad du har, så jeg kan lave en kopi på min egen server og finde problemet der, lidt nemmere.
31. marts 2007 - 18:58
#15
index.php ------------------------- <?php session_start(); $_SESSION["navn"] = $_GET["navn"]; ?> <center> <br><br><br><br><br><br><br> <FORM METHOD=POST ACTION=chat.php> <INPUT TYPE=hidden NAME=skriv VALUE=1> <FONT face=verdana size=1><b><u>Chat</u><br><br><br>Skriv dit chat navn<br> <INPUT TYPE=TEXT NAME=navn style=" background-color: #FFFFFF; border-style: solid; border-width: 1px; font-family: verdana, arial, sans-serif; font-size: 10px; color: #000000; padding: 0px;"><br> <INPUT TYPE=SUBMIT VALUE=Start style=" background-color: #FFFFFF; border-style: solid; border-width: 1px; font-family: verdana, arial, sans-serif; font-size: 10px; color: #000000; padding: 0px;"> <FORM> ------------------------- chat.php ------------------------ <? session_start(); $db = mysql_connect("host", "bruger", "kode"); mysql_select_db("database", $db); { ?> <html> <head> <title>Xhero Chat</title> <meta name="Generator" content="Stone's WebWriter 4"> </head> <body><center> <br><center><br><br><br><br><table border='1' style='border-collapse: collapse' bordercolor='#000000' width='500' height='300'><tr> <td width='100%' height='100%' valign='top'> <? $foresp = mysql_query("SELECT navn, besked FROM bog ORDER BY nr DESC LIMIT 24"); while($data = mysql_fetch_array($foresp)){ echo "<FONT face=verdana size=1><b>"; echo $data["navn"]; echo ":</b>"; echo " "; echo nl2br($data["besked"]); echo "<br />"; } ?> </td></tr></table> <FORM METHOD=POST ACTION=skriv.php> <?php $navn = $_SESSION[navn]; echo "<input type='hidden' name='navn' value='$navn'>"; { ?> <INPUT TYPE=hidden NAME=skriv VALUE=1> <input type'text' name='besked' size='88' style=' background-color: #ffffff; border-style: solid; border-width: 1px; font-family: verdana, arial, sans-serif; font-size: 10px; color: #000000; padding: 0px;'> <INPUT TYPE=submit VALUE='Send' style=' background-color: #ffffff; border-style: solid; border-width: 1px; font-family: verdana, arial, sans-serif; font-size: 10px; color: #000000; padding: 0px;'> </FORM> </BODY> </HTML> <?php }} ?> ----------------------- skriv.php ----------------------- <? $db = mysql_connect("host, "bruger", "kode"); mysql_select_db("database", $db); if ($_POST["skriv"]){ if(trim(isset($_POST['navn']))) { $navn = $_POST['navn']; } else { session_start(); $navn = $_SESSION["navn"]; } $besked = $_POST["besked"]; if(!get_magic_quotes_gpc()){ $navn = addslashes($navn); $besked = addslashes($besked); } mysql_query("INSERT INTO bog (navn, besked) VALUES ('$navn', '$besked')"); } header("location:chat.php"); ?>
31. marts 2007 - 19:00
#16
sjovt.. kan nada få frem på skærmen, når jeg tester.. altså af beskederne.
31. marts 2007 - 19:01
#17
nåårh det er fordi du har kaldt id for nummer. :D giv mig lidt.. 5-10 mins eller noget.
31. marts 2007 - 19:03
#18
Okay (:
31. marts 2007 - 19:09
#19
Sådan! mente fandme også nok lol Det er fordi i toppen af chat.php der overskriver du $_SESSION['navn'] = $_POST['navn']; men den findes jo ikke når du smider brugeren tilbage til chatten, dvs. at den bliver slettet. poster lige din kode, så du bare kan kopiere den ind
31. marts 2007 - 19:11
#20
index.php : <center> <br><br><br><br><br><br><br> <FORM METHOD=POST ACTION=chat.php> <INPUT TYPE=hidden NAME=skriv VALUE=1> <FONT face=verdana size=1><b><u>Chat</u><br><br><br>Skriv dit chat navn<br> <INPUT TYPE=TEXT NAME=navn style=" background-color: #FFFFFF; border-style: solid; border-width: 1px; font-family: verdana, arial, sans-serif; font-size: 10px; color: #000000; padding: 0px;"><br> <INPUT TYPE=SUBMIT VALUE=Start style=" background-color: #FFFFFF; border-style: solid; border-width: 1px; font-family: verdana, arial, sans-serif; font-size: 10px; color: #000000; padding: 0px;"> <FORM> ---------------------------------------- chat.php: <?php $db = mysql_connect("host", "bruger", "kode"); mysql_select_db("database", $db); session_start(); if(trim(isset($_POST['navn']))) { $_SESSION['navn'] = $_POST['navn']; } ?> <html> <head> <title>Xhero Chat</title> </head> <body> <?php echo $_SESSION['navn']; ?> <center> <br><center><br><br><br><br><table border='1' style='border-collapse: collapse' bordercolor='#000000' width='500' height='300'><tr> <td width='100%' height='100%' valign='top'> <?php $foresp = mysql_query("SELECT * FROM bog ORDER BY nr DESC"); while($content = mysql_fetch_array($foresp)){ extract($content); echo "<FONT face=verdana size=1><b>"; echo $navn; echo ":</b>"; echo " "; echo $besked; echo "<br />"; } ?> </td></tr></table> <FORM METHOD="POST" ACTION="skriv.php"> <?php $navn = $_SESSION['navn']; echo "<input type='hidden' name='navn' value='$navn'>"; ?> <INPUT TYPE=hidden NAME=skriv VALUE=1> <input type'text' name='besked' size='88' style=' background-color: #ffffff; border-style: solid; border-width: 1px; font-family: verdana, arial, sans-serif; font-size: 10px; color: #000000; padding: 0px;'> <INPUT TYPE=submit VALUE='Send' style=' background-color: #ffffff; border-style: solid; border-width: 1px; font-family: verdana, arial, sans-serif; font-size: 10px; color: #000000; padding: 0px;'> </FORM> </BODY> </HTML> ---------------------------- skriv.php: <?php $db = mysql_connect("host", "bruger", "kode"); mysql_select_db("database", $db); if ($_POST["skriv"]){ $navn = $_POST["navn"]; $besked = $_POST["besked"]; if(!get_magic_quotes_gpc()){ $navn = addslashes($navn); $besked = addslashes($besked); } mysql_query("INSERT INTO bog (navn, besked) VALUES ('$navn', '$besked')"); } header("location:chat.php"); ?>
31. marts 2007 - 19:12
#21
som du nok kan se, har jeg ingen af mine tidligere forslag med.
31. marts 2007 - 19:14
#22
$foresp = mysql_query("SELECT navn, besked FROM bog ORDER BY nr DESC limit 24"); så udvider chatten sig ikke.
31. marts 2007 - 19:15
#23
og fjern lige: <?php echo $_SESSION['navn']; ?> i chat.php i toppen under <body>
31. marts 2007 - 19:19
#24
Ja, det kom jeg også lige i tanke om (: Det virker perfekt nu, tusind tak!!! Smider du et svar (: ?
31. marts 2007 - 19:20
#25
selvfølgelig. :D
31. marts 2007 - 19:22
#26
Takker for point. :)
31. marts 2007 - 19:30
#27
Var så lidt (:
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.