Avatar billede nwn Nybegynder
24. april 2007 - 14:54 Der er 31 kommentarer og
1 løsning

Man kan ikke læse de modtagede beskeder

Jeg har flere bruger system, som indeholder et besked system til alle brugerne.

Hvis man modtager en besked, kan man se den i ens indbakke, men hvis man klikker på beskeden får mand denne fejl meddelse:


Parse error: syntax error, unexpected T_STRING in /customers/xhero.dk/xhero.dk/httpd.www/Test/laes_besked.php on line 17

Her er koden
-----------------------------------------------
<?php
session_start();

mysql_connect('host', 'bruger', 'kode');
mysql_select_db("xhero_dk");

function laesbesked() {

    $id = $_GET['id'];
    $modtager = $_SESSION['user'];
    if (!id || !$modtager) {
    header('Location: index.php');
      exit;
    }
$id = $_GET['id'];
    $modtager = $_SESSION['user'];
    $sql = mysql_query("SELECT * FROM `post` WHERE `modtager` = '$modtager' AND `id` = '$id'") or die mysql_error());
    $row = mysql_fetch_array($sql);

    echo "<table cellspacing=\"0\" border=\"0\">\n";
    echo "<tr><td bgcolor=\"#FFFFFF\">Afsender:</td><td>$row[afsender]</td></tr><br>";
    echo "<tr><td bgcolor=\"#FFFFFF\">Emne:</td><td>$row[emne]</td></tr><br>";
    echo "<tr><td bgcolor=\"#FFFFFF\">Dato:</td><td>$row[dato]</td></tr><br>";
    echo "</table><br><br>";

    // Behandel afsender
    $afsender = $row["afsender"];
    $afsender = stripslashes($afsender);
    $afsender = htmlspecialchars($afsender);

    // Behandl emne
    $emne = $row["emne"];
    $emne = stripslashes($emne);
    $emne = htmlspecialchars($emne);

    // Behandl besked før udskrift
    $besked = $row["besked"];
    $besked = stripslashes($besked);
    $besked = htmlspecialchars($besked); // Deaktiver html
    $besked = nl2br($besked); // Aktiver linieskift

    // Tillad phpBB tags
    $besked = str_replace("", "<b>", $besked);
    $besked = str_replace("
", "</b>", $besked);
    $besked = str_replace("", "<u>", $besked);
    $besked = str_replace("
", "</u>", $besked);
    $besked = str_replace("", "<i>", $besked);
    $besked = str_replace("
", "</i>", $besked);

    echo $besked; // Udskriv besked

    echo "<a href=\"slet_besked.php?id=$id\">Slet</a> - <a href=\"ny_besked.php?modtager=$afsender&emne=Re: {$emne}\">Besvar</a>";

    mysql_query("UPDATE `post` SET `laest` = 'ja' WHERE `id` = $id");

    }

echo "<!DOCTYPE html PUBLIC \"\">
<html>
<head>
    <title>Xhero</title>
<link rel=\"stylesheet\" href=\"indbakke.css\" type=\"text/css\">
<meta name=\"Generator\" content=\"Stone's WebWriter 4\">
</head>
<body>
<center>

<div style=\"margin-top:60px;\">

<table class=\"main\">&nbsp;&nbsp;<img src=\"images/header.png\">
        <tr>
            <td width=\"700\" height=\"25\" class=\"top-background\"></td></tr>
        <tr>
            <td width=\"700\" height=\"14\" class=\"menu\">
              <a href=\"index.php\" target=\"_self\">Link1</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link2</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link3</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link4</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link5</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link6</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link7</a>&nbsp;&nbsp;|&nbsp;</td></tr>
        <tr>
            <td width=\"700\" height=\"375\" class=\"background\">
              <table align=\"left\"><tr>
              <td width=\"143\" style=\"background-color: white;\"><br><center><b>Community</b><br><br><a href=\"?mode=indbakke\"><font color=\"#000000\">Indbakke</font></a><br><a href=\"?mode=brugerliste\"><font color=\"#000000\">Brugere</font></a><br><a href=\"?mode=logout\"><font color=\"#000000\">Logud</font></a><br><br><br><br><br><br><br><b>Reklame</b><br><br><!-- Kode start -->
<a href=\"http://ref.newbie.dk/reftop.php?refuser=electrical\"><img border=\"0\" alt=\"www.newbie.dk\" src=\"http://www.newbie.dk/topref.php?picid=125x125/125x125-statisk.gif\" /></a>
<!-- Kode slut --></td><td width=\"300\" style=\"background-color: white;\" valign=\"top\"><br>";
if($_SESSION['login'] == 'true'){
$user = $_SESSION[data];
laesbesked($user);
} else {
?>
<html>
<head>
<script language="JavaScript">
alert('Denne funktion kræver at du er logget ind!');
window.location="index.php";
</script>
</head>
</html>
<?php
}
?>
-----------------------------------------------

Det drejer sig om denne linie

$sql = mysql_query("SELECT * FROM `post` WHERE `modtager` = '$modtager' AND `id` = '$id'") or die mysql_error());

som er linie 17. Har tjekket den igennem flere gange, og kan ikke se nogle fejl. Håber i kan hjælpe...
Avatar billede kinderaeg Nybegynder
24. april 2007 - 15:02 #1
Der er en ) for meget til sidst
Avatar billede nwn Nybegynder
24. april 2007 - 15:56 #2
Det tror jeg nu ikke.

Jeg får stadig samme fejl:

Parse error: syntax error, unexpected T_STRING in /customers/xhero.dk/xhero.dk/httpd.www/Test/laes_besked.php on line 17
Avatar billede kinderaeg Nybegynder
24. april 2007 - 16:08 #3
Ah, en anden mulighed er jo, at du mangler en (, og det gør du, efter "die" ;)

$sql = mysql_query("SELECT * FROM `post` WHERE `modtager` = '$modtager' AND `id` = '$id'") or die(mysql_error());
Avatar billede nwn Nybegynder
24. april 2007 - 16:15 #4
Doh, det havde jeg ikke set :b

Men nu får jeg denne fejlmeddelse:

Warning: Cannot modify header information - headers already sent by (output started at /customers/xhero.dk/xhero.dk/httpd.www/Test/laes_besked.php:87) in /customers/xhero.dk/xhero.dk/httpd.www/Test/laes_besked.php on line 12
Avatar billede kinderaeg Nybegynder
24. april 2007 - 16:20 #5
Det er fordi du prøver at "skifte side" efter du har skrevet noget til siden. Sideskift skal altid foregå før der sendes noget til browseren. Du kan evt flytte dit tjek uden for din funktion, du skal da bare lige huske, at variabler der er defineret uden for en funktion enten skal med som parametre eller defineres som globale i funktionen, for at kunne anvendes.
Avatar billede nwn Nybegynder
24. april 2007 - 16:25 #6
Jeg har nu fjernet det der side skift. Men nu viser den ingenting? Kun mit design.. der er intet tekst.
Avatar billede kinderaeg Nybegynder
25. april 2007 - 08:55 #7
Nej, hvis du ellers var gået i sideskiftet, er det jo fordi $id eller $modtager er blank, så hvis du kun har fjernet header-angivelsen, afslutter du jo bare bagefter, eller får vel ikke noget ud af din forespørgsel, når de to variabler ikke er udfyldt?!?

Desuden, hvorfor sender du $_SESSION["user"] med i dit funktionskald, når din funktion ikke har parametre?
Avatar billede nwn Nybegynder
25. april 2007 - 18:18 #8
Jeg er ikke helt med på hvad du mener...
Avatar billede kinderaeg Nybegynder
26. april 2007 - 08:56 #9
Hvis du bare har slettet header-request'et, så koden ser ud som nedenstående:

function laesbesked() {
  $id = $_GET['id'];
  $modtager = $_SESSION['user'];
  if (!id || !$modtager) {
    exit;
  }

afsluttes koden jo bare, hvis $id eller $modtaget ikke er sat. Eller har du slettet hele if-sætningen? Du kan evt poste din kode igen ;)
Avatar billede nwn Nybegynder
26. april 2007 - 14:55 #10
Okay, jeg vælger at lade den der header location blive. Min kode ser sådan ud
-----------------------------------------------------------------------------
<?php
session_start();

mysql_connect('host', 'bruger', 'kode');
mysql_select_db("xhero_dk");

function laesbesked() {
    $id = $_GET['id'];
    $user = $_SESSION[data];
    $modtager = $_SESSION['user'];
    if (!id || !$modtager) {
    header('Location: index.php');
      exit;
    }
    $sql = mysql_query("SELECT * FROM `post` WHERE `modtager` = '$modtager' AND `id` = '$id'") or die(mysql_error());
    $row = mysql_fetch_array($sql);

    echo "<table cellspacing=\"0\" border=\"0\">\n";
    echo "<tr><td bgcolor=\"#FFFFFF\">Afsender:</td><td>$row[afsender]</td></tr><br>";
    echo "<tr><td bgcolor=\"#FFFFFF\">Emne:</td><td>$row[emne]</td></tr><br>";
    echo "<tr><td bgcolor=\"#FFFFFF\">Dato:</td><td>$row[dato]</td></tr><br>";
    echo "</table><br><br>";

    // Behandel afsender
    $afsender = $row["afsender"];
    $afsender = stripslashes($afsender);
    $afsender = htmlspecialchars($afsender);

    // Behandl emne
    $emne = $row["emne"];
    $emne = stripslashes($emne);
    $emne = htmlspecialchars($emne);

    // Behandl besked før udskrift
    $besked = $row["besked"];
    $besked = stripslashes($besked);
    $besked = htmlspecialchars($besked); // Deaktiver html
    $besked = nl2br($besked); // Aktiver linieskift

    // Tillad phpBB tags
    $besked = str_replace("", "<b>", $besked);
    $besked = str_replace("
", "</b>", $besked);
    $besked = str_replace("", "<u>", $besked);
    $besked = str_replace("
", "</u>", $besked);
    $besked = str_replace("", "<i>", $besked);
    $besked = str_replace("
", "</i>", $besked);

    echo $besked; // Udskriv besked

    echo "<a href=\"slet_besked.php?id=$id\">Slet</a> - <a href=\"ny_besked.php?modtager=$afsender&emne=Re: {$emne}\">Besvar</a>";

    mysql_query("UPDATE `post` SET `laest` = 'ja' WHERE `id` = $id");

    }

echo "<!DOCTYPE html PUBLIC \"\">
<html>
<head>
    <title>Xhero</title>
<link rel=\"stylesheet\" href=\"indbakke.css\" type=\"text/css\">
<meta name=\"Generator\" content=\"Stone's WebWriter 4\">
</head>
<body>
<center>

<div style=\"margin-top:60px;\">

<table class=\"main\">&nbsp;&nbsp;<img src=\"images/header.png\">
        <tr>
            <td width=\"700\" height=\"25\" class=\"top-background\"></td></tr>
        <tr>
            <td width=\"700\" height=\"14\" class=\"menu\">
              <a href=\"index.php\" target=\"_self\">Link1</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link2</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link3</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link4</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link5</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link6</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link7</a>&nbsp;&nbsp;|&nbsp;</td></tr>
        <tr>
            <td width=\"700\" height=\"375\" class=\"background\">
              <table align=\"left\"><tr>
              <td width=\"143\" style=\"background-color: white;\"><br><center><b>Community</b><br><br><a href=\"?mode=indbakke\"><font color=\"#000000\">Indbakke</font></a><br><a href=\"?mode=brugerliste\"><font color=\"#000000\">Brugere</font></a><br><a href=\"?mode=logout\"><font color=\"#000000\">Logud</font></a><br><br><br><br><br><br><br><b>Reklame</b><br><br><!-- Kode start -->
<a href=\"http://ref.newbie.dk/reftop.php?refuser=electrical\"><img border=\"0\" alt=\"www.newbie.dk\" src=\"http://www.newbie.dk/topref.php?picid=125x125/125x125-statisk.gif\" /></a>
<!-- Kode slut --></td><td width=\"300\" style=\"background-color: white;\" valign=\"top\"><br>";
if($_SESSION['login'] == 'true'){
$user = $_SESSION[data];
laesbesked($user);
} else {
?>
<html>
<head>
<script language="JavaScript">
alert('Denne funktion kræver at du er logget ind!');
window.location="index.php";
</script>
</head>
</html>
<?php
}
?>
----------------------------------------------------

Hvad skal jeg så gøre præcist?

Fejlmeddelsen: Warning: Cannot modify header information - headers already sent by (output started at /customers/xhero.dk/xhero.dk/httpd.www/Test/laes_besked.php:87) in /customers/xhero.dk/xhero.dk/httpd.www/Test/laes_besked.php on line 12
Avatar billede kinderaeg Nybegynder
26. april 2007 - 15:06 #11
Noget i den her stil (jeg har flyttet din forespørgsel på variablerne $_GET["id"] og $_SESSION["data"] uden for din funktion):

<?php
session_start();

if (empty($_GET['id']) || empty($_SESSION[data])) {
  header('Location: index.php');
  exit;
}

mysql_connect('host', 'bruger', 'kode');
mysql_select_db("xhero_dk");

function laesbesked() {
  $id = $_GET['id'];
  $user = $_SESSION[data];
  $modtager = $_SESSION['user'];

  $sql = mysql_query("SELECT * FROM `post` WHERE `modtager` = '$modtager' AND `id` = '$id'") or die(mysql_error());
  $row = mysql_fetch_array($sql);

  echo "<table cellspacing=\"0\" border=\"0\">\n";
  echo "<tr><td bgcolor=\"#FFFFFF\">Afsender:</td><td>$row[afsender]</td></tr><br>";
  echo "<tr><td bgcolor=\"#FFFFFF\">Emne:</td><td>$row[emne]</td></tr><br>";
  echo "<tr><td bgcolor=\"#FFFFFF\">Dato:</td><td>$row[dato]</td></tr><br>";
  echo "</table><br><br>";

  // Behandel afsender
  $afsender = $row["afsender"];
  $afsender = stripslashes($afsender);
  $afsender = htmlspecialchars($afsender);

  // Behandl emne
  $emne = $row["emne"];
  $emne = stripslashes($emne);
  $emne = htmlspecialchars($emne);

  // Behandl besked før udskrift
  $besked = $row["besked"];
  $besked = stripslashes($besked);
  $besked = htmlspecialchars($besked); // Deaktiver html
  $besked = nl2br($besked); // Aktiver linieskift

  // Tillad phpBB tags
  $besked = str_replace("", "<b>", $besked);
  $besked = str_replace("
", "</b>", $besked);
  $besked = str_replace("", "<u>", $besked);
  $besked = str_replace("
", "</u>", $besked);
  $besked = str_replace("", "<i>", $besked);
  $besked = str_replace("
", "</i>", $besked);

  echo $besked; // Udskriv besked

  echo "<a href=\"slet_besked.php?id=$id\">Slet</a> - <a href=\"ny_besked.php?modtager=$afsender&emne=Re: {$emne}\">Besvar</a>";

  mysql_query("UPDATE `post` SET `laest` = 'ja' WHERE `id` = $id");

}

echo "<!DOCTYPE html PUBLIC \"\">
<html>
<head>
    <title>Xhero</title>
<link rel=\"stylesheet\" href=\"indbakke.css\" type=\"text/css\">
<meta name=\"Generator\" content=\"Stone's WebWriter 4\">
</head>
<body>
<center>

<div style=\"margin-top:60px;\">

<table class=\"main\">&nbsp;&nbsp;<img src=\"images/header.png\">
        <tr>
            <td width=\"700\" height=\"25\" class=\"top-background\"></td></tr>
        <tr>
            <td width=\"700\" height=\"14\" class=\"menu\">
              <a href=\"index.php\" target=\"_self\">Link1</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link2</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link3</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link4</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link5</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link6</a>&nbsp;&nbsp;|&nbsp;
              <a href=\"index.php\" target=\"_self\">Link7</a>&nbsp;&nbsp;|&nbsp;</td></tr>
        <tr>
            <td width=\"700\" height=\"375\" class=\"background\">
              <table align=\"left\"><tr>
              <td width=\"143\" style=\"background-color: white;\"><br><center><b>Community</b><br><br><a href=\"?mode=indbakke\"><font color=\"#000000\">Indbakke</font></a><br><a href=\"?mode=brugerliste\"><font color=\"#000000\">Brugere</font></a><br><a href=\"?mode=logout\"><font color=\"#000000\">Logud</font></a><br><br><br><br><br><br><br><b>Reklame</b><br><br><!-- Kode start -->
<a href=\"http://ref.newbie.dk/reftop.php?refuser=electrical\"><img border=\"0\" alt=\"www.newbie.dk\" src=\"http://www.newbie.dk/topref.php?picid=125x125/125x125-statisk.gif\" /></a>
<!-- Kode slut --></td><td width=\"300\" style=\"background-color: white;\" valign=\"top\"><br>";
if($_SESSION['login'] == 'true'){
$user = $_SESSION[data];
laesbesked($user);
} else {
?>
<html>
<head>
<script language="JavaScript">
alert('Denne funktion kræver at du er logget ind!');
window.location="index.php";
</script>
</head>
</html>
<?php
}
?>
Avatar billede nwn Nybegynder
26. april 2007 - 18:03 #12
Okay, men der står intet ud for afsender osv?

Og beskeden vises heller ik ?
Avatar billede kinderaeg Nybegynder
27. april 2007 - 08:53 #13
Der er vel slet ikke noget der hedder afsender??
Prøv at slette variablen du sender med dit funktionskald, når du ikke har parametre på din funktion ;)

laesbesked($user); ændres til laesbesked();

Og forsøg så noget debugging, for at se hvor det går galt.
Avatar billede nwn Nybegynder
30. april 2007 - 17:27 #14
Hmm det virker stadig ikke.

Men ja, den kan ikke vise afsender.

Jeg har prøvet at echo id, user og modtager, og den viser kun id og modtager...
Avatar billede kinderaeg Nybegynder
01. maj 2007 - 09:04 #15
Der mangler plinger i din forespørgsel til user:

$user = $_SESSION['data'];
Avatar billede nwn Nybegynder
02. maj 2007 - 16:58 #16
Plinger ??

Jeg er ikke lige verdens mester til php

Kunne du uddybe dig ?
Avatar billede kinderaeg Nybegynder
03. maj 2007 - 08:53 #17
Plinger (') skal bruges for at definere en tekststreng, og de manglede i din key-definition i session-array'et. Du kan alternativt bruge anførselstegn.
Avatar billede nwn Nybegynder
03. maj 2007 - 17:33 #18
Hov undskyld...

Den udskriver id og user fint, men ikke modtager..
Avatar billede kinderaeg Nybegynder
07. maj 2007 - 08:53 #19
Prøv evt at udskrive hele dit session-objekt:

print_r($_SESSION);

og se hvilke værdier der ligger deri
Avatar billede nwn Nybegynder
07. maj 2007 - 22:17 #20
Får resultatet: (Array);
Avatar billede kinderaeg Nybegynder
08. maj 2007 - 09:11 #21
Så bruger du vel bare print; print_r skal udskrive en rekursiv liste over elementet, altså fortælle hvad et array indeholder?!?
Avatar billede nwn Nybegynder
08. maj 2007 - 21:01 #22
Var kommet til at smide det ind i echo.

Men her er resultatet: Array ( [login] => true [data] => admin )
Avatar billede kinderaeg Nybegynder
09. maj 2007 - 09:01 #23
Som ses, findes der ingen user-key, så du skal nok kigge, der hvor du mener du sætter den ind.
Avatar billede nwn Nybegynder
15. maj 2007 - 18:24 #24
Jeg kan ikke se nogle fejl ?
Avatar billede kinderaeg Nybegynder
15. maj 2007 - 22:14 #25
Og jeg kan ikke se den kode, hvor du sætter data ind i dit session-objekt. Jeg kunne forestille mig at du gør det under noget login, men de eneste keys du får sat noget ind for er 'login' og 'data', 'user' mangler. Så der hvor du tror du sætter data ind i $_SESSION['user'], har du tilsyneladende en fejl.
Avatar billede nwn Nybegynder
17. maj 2007 - 23:05 #26
Den er da rigtig ?

$user = $_SESSION['data'];
Avatar billede kinderaeg Nybegynder
18. maj 2007 - 11:40 #27
Det er jo ikke der hvor du sætter noget ind i din session, du trækker noget ud af den der. Du kan ikke trække noget ud af din session, som du aldrig har lagt ind i den. Tjek der hvor du sætter $_SESSION['data']
Avatar billede nwn Nybegynder
05. juni 2007 - 22:01 #28
:S
Avatar billede kinderaeg Nybegynder
06. juni 2007 - 09:01 #29
Hvad skal det sige? Du må ha' et sted hvor du sætter data ind i din session (eg. $_SESSION['user'] = "Det der skal stå";), eller rettere, det lader til at du tror du har et sted, hvor du sætter data ind, men enten findes stedet ikke ellers kommer du aldrig derhen i eksekveringen af din kode. Jeg vil tro den del ($_SESSION['user']) bliver sat, i forbindelse med at din bruger logger på systemet, så du kan jo starte med at kigge der?!?
Avatar billede nwn Nybegynder
06. juni 2007 - 21:57 #30
Ja, den bliver sat der hvor man logger på..
Avatar billede kinderaeg Nybegynder
07. juni 2007 - 08:53 #31
Ja det gør den jo så ikke. Som du selv har fremvist indeholder dit session-array kun to keys (login og data), så det er der du skal lede, for at finde fejlen
Avatar billede nwn Nybegynder
08. september 2007 - 12:01 #32
Lukker
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