Avatar billede supersquirrel Nybegynder
24. juli 2006 - 16:08 Der er 1 kommentar og
1 løsning

Fejl i forum :S

<?
if(isset($_GET[slet])) {
    include("db.php");
    mysql_query("DELETE FROM forum_kommentar WHERE id='$_GET[slet]'");
}
?>
<br>
<?
?>
<br>
<?
if(isset($_POST[emne])) {
    $dato = date("d-m-y H:i:s");
    $ip = $_SERVER['REMOTE_ADDR'];
    mysql_query("INSERT INTO forum(id, tekst, brugernavn, navn, dato, ip) values(0, '$_POST[tekst]', '$_SESSION[brugernavn]', '$_POST[emne]', '$dato', '$ip')");
    $link = mysql_query("SELECT * FROM forum ORDER BY id DESC limit 1");
    while($row = mysql_fetch_array($link)) {
    $id = $row[id];
    }
print "<script>location.href='$PHP_SELF?ticket=$id';</script>";
}
if(isset($_GET[ticket])) {
if(isset($_POST[tekst])) {
    $dato = date("d-m-y H:i:s");
    $ip = $_SERVER['REMOTE_ADDR'];
    mysql_query("INSERT INTO forum_kommentar(id, tekst, brugernavn, forum, dato, ip) values(0, '$_POST[tekst]', '$_SESSION[brugernavn]', '$_GET[ticket]', '$dato', '$ip')");
    print "<script>location.href='$PHP_SELF?ticket=$_GET[ticket]';</script>";
}
$trad = 0;
$link = mysql_query("SELECT * FROM forum_kommentar WHERE forum='$_GET[ticket]' ORDER BY id DESC");
while($row = mysql_fetch_array($link)) {
    ?>
    <table align="center" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="400" id="AutoNumber1">
    <tr>
    <td bgcolor="#FEE358">
    Brugernavn: <?=$row[brugernavn]?> - Dato: <?=$row[dato]?>
    <?
    $query = mysql_query("SELECT * FROM admin WHERE admin='$_SESSION[brugernavn]' AND funktion='Slet kommentare i forum' AND rettighed='1'") or die(mysql_error());
    while ($admin = mysql_fetch_array($query)) {
    ?>
    <a href="<?=$PHP_SELF?>?slet=<?=$row[id]?>&ticket=<?=$_GET[ticket]?>">[Slet]</a>
    <?
    }
    ?>
    </td>
    </tr>
    <tr>
    <td>
    <?
    $text = htmlspecialchars($row[tekst], ENT_QUOTES);
    $text = str_replace("\n","<br>",$text);
    ?>

    <?
    $erstatning = 'myggebalsam';
    $query_rsOrdfilter_ord = "SELECT * FROM ordfilter";
    $rsOrdfilter_ord = mysql_query($query_rsOrdfilter_ord) or die(mysql_error());
    $totalRows_rsOrdfilter_ord = mysql_num_rows($rsOrdfilter_ord);
    while ($row_rsOrdfilter_ord = mysql_fetch_assoc($rsOrdfilter_ord))
    {
    $replace_ord = $erstatning;
    $regpattern = "/\b".$row_rsOrdfilter_ord['ord']."\b/i";
    $text = preg_replace($regpattern, $replace_ord, $text);
}
      echo $text;

      ?>
    </td>
    </tr>
    </table>
    <br>
    <?
    $trad = $trad + 1;
    ?>
<?
}
?>
<table align="center" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="400" id="AutoNumber1">
<tr>
<td bgcolor="#FEE358">
Der skrevet <?=$trad?> kommentare,
<?
$trad = $trad + 1;
?>
og du kan lave kommentar nummer <?=$trad?>.
</td>
</tr>
<tr>
<td>
<form action="<?=$PHP_SELF?>?ticket=<?=$_GET[ticket]?>" method="POST">
<?
if (session_is_registered("brugernavn") AND ("kodeord")) {
?>
<textarea rows="10" name="tekst" style="width: 100%; background-color:#FCED9F" cols="20">Tekst</textarea><br>
<input type="submit" value="Tilføj">
<?
}else{
?>
Du skal være logget ind for at kunne diskutere med i dette emne!<br>
<textarea rows="10" name="tekst" style="width: 100%; background-color:#FCED9F" cols="20" disabled="disabled">Tekst</textarea><br>
<input type="submit" value="Tilføj" disabled="disabled">
<?
}
?>
</form>
</td>
</tr>
</table>
<br>
<?
}else{
?>
<table align="center" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="400" id="AutoNumber1">
<tr>
<td bgcolor="#FEE358">
Opret dit eget emne
</td>
</tr>
<tr>
<td>
<form action="<?=$PHP_SELF?>" method="POST">
<?
if (session_is_registered("brugernavn") AND ("kodeord")) {
?>
<input type="text" maxlength="40" name="emne" value="Emne" style="width: 100%; background-color:#FCED9F"><br>
<textarea rows="10" name="tekst" style="width: 100%; background-color:#FCED9F" cols="20">Tekst</textarea><br>
<input type="submit" value="Tilføj">
<?
}else{
?>
Du skal være logget ind for at kunne oprette et emne!<br>
<input type="text" maxlength="40" name="emne" value="Emne" style="width: 100%; background-color:#FCED9F" disabled="disabled"><br>
<textarea rows="10" name="tekst" style="width: 100%; background-color:#FCED9F" cols="20" disabled="disabled">Tekst</textarea><br>
<input type="submit" value="Tilføj" disabled="disabled">
<?
}
?>
</form>
</td>
</tr>
</table>
<br>
<?
}
?>


Der er vidst nok fejl i den fil der. Fejlen er at den ikke opretter forummet, men bare går ind på en af de topics der allerede er oprettet.
Avatar billede Slettet bruger
25. juli 2006 - 22:33 #1
Der er adskillige fejl i koden.

En fejl er i denne linie, som jeg lige har set to steder i koden:

if (session_is_registered("brugernavn") AND ("kodeord"))

Derudover er din kode et vidtåbent sikkerhedshul. Du bør lave bare en lille smule kontrol af hvad variablerne indeholder inden du smider dem i databasen.

Men mere relevant for dit nuværende problem er nok selve din query. Er id-feltet et autooptalt felt? Hvis ja, så fjern det fra din INSERT (og naturligvis også 0-værdien. Hvis det ikke er nok, så prøv at sætte den til at vise fejlbeskeder fra MySQL:

mysql_query("INSERT INTO forum(tekst, brugernavn, navn, dato, ip) values('$_POST[tekst]', '$_SESSION[brugernavn]', '$_POST[emne]', '$dato', '$ip')") or die(mysql_error());
Avatar billede Slettet bruger
25. juli 2006 - 22:34 #2
Forresten bør du kontrollere for gyldig login, når scriptet modtager en formular og ikke kun når den skal vises.
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