<?php

include ("admin/db.php");









$sql = "SELECT * FROM `posts` ORDER by postid DESC";

$query = mysql_query( $sql )
or die( mysql_error() );

// Controleren of er resultaten zijn:
if( mysql_num_rows( $query ) == 0 ){ echo "De tabel is leeg.";
}else
{
// While maken
while(
$uitvoer = mysql_fetch_assoc( $query ) )
{
$jaar = substr($uitvoer['datum'], 0 , 4); //deze klopt wel
$maand = substr($uitvoer['datum'], 5 , 2); //de 5 twijfel ik moet of 5 of 6 zijn
$dag = substr($uitvoer['datum'], 8 , 2); //ook twijfel moet 7,8 of 9 zijn...
$tijd= substr($uitvoer['datum'], 11);

echo


'postid: ' . $uitvoer['postid']
. '<br/>'
. 'auteur: ' . $uitvoer['auteur']
. '<br/>'
. 'titel: ' . $uitvoer['titel']
. '<br/>'
. 'datum: '
. $dag, '-', $maand, '-', $jaar, ' op ', $tijd
. '<br/>'
. 'bericht: ' . htmlspecialchars_decode($uitvoer['bericht'])
. '<br/><br/>' ;
}
if($_SESSION['id'])
{
echo "<p><a href=\"bericht.php\">wijzig bericht</p>";

}
}
?>

De code hierboven is een gedeelte van me script.
De bedoeling is wanneer je ben ingelogd de posts volledig ziet weergegeven en dat je ook de link ziet van wijzig bericht ziet per post

De gebruiker die niet is ingelogd moet de volledig post zien, maar niet edit link.

Hoe doe ik dit precies
want ik weet dat je na een echo geen if statement kan plaats vinden.
Nu werkt het wel...alleen onderin de pagina staat nu alleen "wijzig bericht" ik wil als ik inlog dat ik het per post zie.
mysql_real_escape_string() gebruik je om de data te beveiligen tegen quotes, htmlspecialchars() gebruik je om speciale karakters naar HTML entities te converteren. Dat zijn dus 2 totaal verschillende zaken die niets met elkaar te maken hebben. Het ene kan dus onmogelijk beter zijn dan het andere.

Een kop koffie is tenslotte ook niet beter of slechter dan een pannenkoek.
Juist, zoals ik nu al meerdere malen heb aangegeven.

Tip: zoek zelf eens op php.net de werking van deze functies op. Het lijkt mij in ieder geval dat je geen idee hebt wat deze functies nu precies doen...

edit: Frank geeft je de uitleg al
ik snap wat ze beide doen
maar ik had het om een andere reden gedaan
wanneer $bericht = htmlspecialchars($_POST["bericht"]);
gebruik
en op index laat weergeven als
echo 'bericht: ' . htmlspecialchars_decode($uitvoer['bericht']) . '<br/>';

ik kan dan in nieuw_post .php
gewoon dit doen als berichtje

<a href="http://www.nu.nl">blaat</a>


op de index pagina krijg ik een goede link naar de pagina nu.nl



wanneer ik mysqlrealescape gebruik
en het volgende invul

<a href="http://www.nu.nl">blaat</a>


na het verzenden veranderd de url naar dit


  <a href=\"http://www.nu.nl\">nu.nl</a> 


als gevolg:
me url link wordt : file://%22http://www.nu.nl///%22
foutmelding dus....
Wellicht dat magic_quotes_gpc aanstaat?
<?php
echo get_magic_quotes_gpc();
?>
Blanche schreef op 23.10.2007 15:24
Wellicht dat magic_quotes_gpc aanstaat?
<?php
echo get_magic_quotes_gpc();
?>


hmm die staat op 1
had het bij me php.ini veranderd naar off
ik moet zeker hiervoor een scriptje schrijven
zodat ik het localhost en op server uit moet zetten
maar als die uitstaan dan word de url dus wel goed doorgegeven
magic_quotes_gpc zorgt ervoor dat speciale tekens in door de gebruiker verstuurde waarden automatisch geescaped worden, hetzelfde wat je met mysql_real_escape_string() probeert te bereiken.

Echter omdat het al door magic_quotes_gpc gebeurt is, is het gebruik van mysql_real_escape_string dubbelop. Om er zeker van te zijn dat je altijd goed zit, zou je het volgende scriptje kunnen gebruiken:
<?php
$var;
if(!get_magic_quotes_gpc())
{
$var = mysql_real_escape_string($var);
}
?>
Waarbij $var de te beveiligen variabele voorstelt.

Persoonlijk zou ik magic_quotes_gpc lekker uitzetten en zelf voor je beveiliging zorgen. Dit kan door de volgende regel in een .htaccess bestandje in de root te plaatsen:

php_flag magic_quotes_gpc off

Reageren