Avatar billede nwn Nybegynder
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 ?
Avatar billede blackscorpion Nybegynder
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')");
}
Avatar billede blackscorpion Nybegynder
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. :)
Avatar billede nwn Nybegynder
31. marts 2007 - 18:21 #3
Nu når jeg skriver en besked bliver mit navn slet ikke skrevet, heller ikke første gang..
Avatar billede blackscorpion Nybegynder
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')");
}
Avatar billede blackscorpion Nybegynder
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')");
}
Avatar billede nwn Nybegynder
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.
Avatar billede blackscorpion Nybegynder
31. marts 2007 - 18:35 #7
øhhh... hehe,  2 secs. :)
Avatar billede blackscorpion Nybegynder
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.
Avatar billede blackscorpion Nybegynder
31. marts 2007 - 18:40 #9
<?
$db = mysql_connect("host", "bruger", "kode");
mysql_select_db("database", $db);
{
?>

skal den { være der ? :)
Avatar billede nwn Nybegynder
31. marts 2007 - 18:47 #10
Nu viser den ikke navn første gang, men navn hvis jeg skriver flere beskeder :b ?
Avatar billede blackscorpion Nybegynder
31. marts 2007 - 18:48 #11
£@!¤#"¤%#4$£@$£@$£!"!¤!?!?#"#!"?¤#"@!?!
Avatar billede blackscorpion Nybegynder
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'>";
Avatar billede nwn Nybegynder
31. marts 2007 - 18:53 #13
Nu viser den slet ik navn nogle af gangene
Avatar billede blackscorpion Nybegynder
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.
Avatar billede nwn Nybegynder
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");
?>
Avatar billede blackscorpion Nybegynder
31. marts 2007 - 19:00 #16
sjovt.. kan nada få frem på skærmen, når jeg tester.. altså af beskederne.
Avatar billede blackscorpion Nybegynder
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.
Avatar billede nwn Nybegynder
31. marts 2007 - 19:03 #18
Okay (:
Avatar billede blackscorpion Nybegynder
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
Avatar billede blackscorpion Nybegynder
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");
?>
Avatar billede blackscorpion Nybegynder
31. marts 2007 - 19:12 #21
som du nok kan se, har jeg ingen af mine tidligere forslag med.
Avatar billede blackscorpion Nybegynder
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.
Avatar billede blackscorpion Nybegynder
31. marts 2007 - 19:15 #23
og fjern lige: <?php echo $_SESSION['navn']; ?> i chat.php i toppen under <body>
Avatar billede nwn Nybegynder
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 (: ?
Avatar billede blackscorpion Nybegynder
31. marts 2007 - 19:20 #25
selvfølgelig. :D
Avatar billede blackscorpion Nybegynder
31. marts 2007 - 19:22 #26
Takker for point. :)
Avatar billede nwn Nybegynder
31. marts 2007 - 19:30 #27
Var så lidt (:
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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