Pagina ID beveiligen

Status
Niet open voor verdere reacties.

maikel1

Nieuwe gebruiker
Lid geworden
12 okt 2010
Berichten
4
Halo,

Als eerst mijn excuus voor de titel ik zou namelijk niet weten hoe ik dit zou moeten noemen.

Sinds kort ben ik weer begonnen met wat scriptwerk. Nu ben ik bezig met het inbouwen van een nieuwssysteem in me site. Werkt allemaal vrij aardig maar nu ben ik dus op een probleem gekomen waar ik zelf niet zoveel mee kan, en ik hoop jullie wel.

Ik heb namelijk als ik een nieuws bericht apart open om bijvoorbeeld een reactie toe te kunnen voegen een apart pagina script zodat je dus komt bij '?actie=reacties&nieuwsid=1'. Ook dit werkt allemaal goed alleen nu is mijn probleem dat als ik een willekeurig nummer invoer bijvoorbeeld '?actie=reacties&nieuwsid=99' Dat hij dan ook gewoon de pagina weergeeft maar dan is er geen bericht maar kan je dus wel een reactie plaatsen.

Mij vraag luid dus weet iemand hoe ik dit op kan lossen?
 
Controleren of het bericht met dat ID bestaat (bij de database query waarin je het bericht ophaalt controleren of er 1 rij terugkomt, dan bestaat ie) en als ie niet bestaat de "geef reactie" pagina niet tonen.

Als je volledige error reporting aanzet krijg je waarschijnlijk ook notices op zo'n pagina dat er DB fouten zijn:
PHP:
error_reporting( E_ALL )
 
En hoe zet ik dit dan in me script?

Want nu heb ik dus op de pagina ook de error staan maar wat ik wil hebben is dat er een bericht komt te staan dat het ID niet bestaat. want nu staat er na de error eigenlijk ook nog gewoon de normale pagina
 
De boel in de een if blok hangen.

PHP:
if ( $id_exists ) {
// pagina hier
}
else {
// error hier
}
 
Als ik dit in het script zet krijg ik een error van de regel waar de 'if ( $NieuwsID_exists ) {' staat. En nu krijg ik dus bij alle pagina's te zien dan het ID niet gevonden is

PHP:
<?php

    include ('admin/config.php');
    include ('header.php');

#
error_reporting(E_ALL);
#
ini_set('display_errors', '1');

// Gets ophalen
if (isset($_GET['actie'])) {
    
    if (isset($_GET['nieuwsid'])) {
        
        if(is_numeric($_GET['nieuwsid'])){
            $nieuwsid = mysql_real_escape_string(htmlspecialchars($_GET['nieuwsid']));
            }else{
            exit ("De door u opgegeven waarden word niet geaccepteerd!");
        }
        $actie = mysql_real_escape_string(htmlspecialchars($_GET['actie']));

// Actie - Reacties
if ( $NieuwsID_exists ) {
// pagina hier
    if ($actie === "reacties"){
            $query4 = "SELECT NieuwsTitel, NieuwsDatum, NieuwsBericht FROM nieuws WHERE NieuwsID = '$nieuwsid'";
            $result4 = mysql_query($query4) or die(mysql_error());
            while ($row4 = mysql_fetch_array($result4))
            {
                $NieuwsTitel = $row4['NieuwsTitel'];
                $NieuwsDatum = $row4['NieuwsDatum'];
                $NieuwsBericht = stripslashes($row4['NieuwsBericht']);
            }
            $NieuwsDatum = datumomzetten($NieuwsDatum);
            Echo "<h3>$NieuwsTitel - $NieuwsDatum</h3>
            $NieuwsBericht
            
            ";
            $query3 = "SELECT * FROM reacties WHERE NieuwsID = '$nieuwsid' ORDER BY ReactieID DESC";
            $result3 = mysql_query($query3) or die(mysql_error());
            while ($row3 = mysql_fetch_array($result3))
            {
                $ReactieNaam = $row3['ReactieNaam'];
                $ReactieTijd = $row3['ReactieTijd'];
                $ReactieDatum = $row3['ReactieDatum'];
                $ReactieBericht = $row3['ReactieBericht'];
                $ReactieID = $row3['ReactieID'];
                $ReactieDatum = datumomzetten($ReactieDatum);
                $uren = substr($ReactieTijd,0,2);
                $minuten = substr($ReactieTijd,3,2);
                $ReactieTijd = "$uren:$minuten";
                echo "<hr>[$ReactieID] Reactie geplaats door <b>$ReactieNaam</b> op $ReactieDatum om $ReactieTijd<br>$ReactieBericht";
            }
            reageren($nieuwsid);
        }
}
else {
echo "nieuws ID bestaat niet";
}
    
// Acties - Reactie toevoegen
        if ($actie === "reactietoevoegen"){
            $ReactieNaam = mysql_real_escape_string(nl2br(htmlspecialchars(eregi_replace('[^ ]{255,}', '...', trim($_POST['Naam'])))));
            $ReactieBericht = mysql_real_escape_string(nl2br(htmlspecialchars(eregi_replace('[^ ]{255,}', '...', trim($_POST['Bericht'])))));
            $ReactieDatum = date("y-m-d");
            $ReactieTijd = date("H:i:s");
            $ReactieIp = $_SERVER['REMOTE_ADDR'];
                    $ReactieBericht = preg_replace("/\[b\](.+?)\[\/b\]/is",'<b>\1</b>', $ReactieBericht);
                    $ReactieBericht = preg_replace("/\[i\](.+?)\[\/i\]/is",'<i>\1</i>', $ReactieBericht);
                    $ReactieBericht = preg_replace("/\[u\](.+?)\[\/u\]/is",'<u>\1</u>', $ReactieBericht);
                    $ReactieBericht = eregi_replace("\\[markeer=([^\\[]*)\\]([^\\[]*)\\[/markeer\\]","<font style=\"background-color:\\1 \">\\2</font>",$ReactieBericht);
                    $ReactieBericht = eregi_replace("\\[img]([^\\[]*)\\[/img\\]","<img src=\"\\1\">",$ReactieBericht);
                    $ReactieBericht = eregi_replace("\\[kleur=([^\\[]*)\\]([^\\[]*)\\[/kleur\\]","<font color=\"\\1\">\\2</font>",$ReactieBericht);
                    $ReactieBericht = eregi_replace("\\[url=([^\\[]*)\\]([^\\[]*)\\[/url\\]","<a href=\"\\1\" target=_blank>\\2</a>",$ReactieBericht);
            
            if (empty($ReactieNaam)) {
                echo "U heeft geen naam ingevuld, ga <a href=\"javascript:history.back()\">terug</a> en probeer het opnieuw!";
                exit;
            }
            
            if (empty($ReactieBericht)) {
                echo "U heeft geen bericht ingevuld, ga <a href=\"javascript:history.back()\">terug</a> en probeer het opnieuw!";
                exit;
            }
            mysql_query("INSERT INTO reacties (NieuwsID,ReactieNaam,ReactieTijd,ReactieDatum,ReactieBericht,ReactieIp) VALUES('$nieuwsid','$ReactieNaam','$ReactieTijd','$ReactieDatum','$ReactieBericht','$ReactieIp')") or die(mysql_error());
            header("Location: nieuws.php?actie=reacties&nieuwsid=$nieuwsid");
            exit;
        }
    }
}

// Functie - Datum omzetten
function datumomzetten($datum){
    $jaar = substr($datum,0,4);
    $maand = substr($datum,5,2);
    $dag = substr($datum,8,2);
    $maand_array = array("januari", "februari", "maart", "april","mei", "juni", "juli", "augustus", "september","oktober", "november", "december");
    $maand = $maand_array[$maand - 1];
    $datum = "$dag $maand $jaar";
    return $datum;
}

// Functie - Reageren invulvenster
function reageren($nieuwsid)
{
    ?>
    <script language='Javascript'>
    function tekstvak(tekst) {
        document.form.Bericht.value = document.form.Bericht.value + tekst
    }
    </script>
    <form name="form" method="post" action="<?php echo "nieuws.php?actie=reactietoevoegen&amp;nieuwsid=$nieuwsid"; ?>">
    <table border="0" cellspacing="0" cellpadding="5">
    <tr>
    <td valign="top" width="150">Uw naam:</td>
    <td><input type="text" name="Naam"></td>
    </tr>
    <tr>
    <td valign="top">Uw bericht:</td>
    <td><textarea name="Bericht" rows="6" cols="45"></textarea></td>
    </tr>
    <tr>
    <td align=left><input type="submit" value="versturen"></td>
    <td align=right>
    <a href='javascript:tekstvak("[b][/b]")'><img src="afbeeldingen/post_button_bold.gif" width="25" height="24" border="0" alt="Dikgedrukt"></a>
    <a href='javascript:tekstvak("[i][/i]")'><img src="afbeeldingen/post_button_italic.gif" width="25" height="24" border="0" alt="Schuingedrukt"></a>
    <a href='javascript:tekstvak("[u][/u]")'><img src="afbeeldingen/post_button_underline.gif" width="25" height="24" border="0" alt="Onderstreept"></a>
    <a href='javascript:tekstvak("[kleur=red][/kleur]")'><img src="afbeeldingen/post_button_textcolor.gif" width="25" height="24" border="0" alt="Tekstkleur"></a>
    <a href='javascript:tekstvak("[markeer=red][/markeer]")'><img src="afbeeldingen/post_button_bgcolor.gif" width="25" height="24" border="0" alt="Achtergrondkleur"></a>
    <a href='javascript:tekstvak("[url= ][/url]")'><img src="afbeeldingen/post_button_hyperlink.gif" width="25" height="24" border="0" alt="Hyperlink"></a>
    <a href='javascript:tekstvak("[img][/img]")'><img src="afbeeldingen/post_button_image.gif" width="25" height="24" border="0" alt="Afbeelding"></a>
    </td>
    </tr>
    </table>
    </form>
    <?php
}

// Functie - Nieuws
function nieuws($aantal, $categorie)
{
    $query = "SELECT * FROM nieuws LEFT JOIN gebruikers ON nieuws.NieuwsPosterID = gebruikers.GebruikersID WHERE NieuwsCAT = '$categorie' ORDER BY NieuwsID DESC limit $aantal";
    $result = mysql_query($query) or die(mysql_error());
    
    if (mysql_num_rows($result)>0)
    {
        while ($row = mysql_fetch_array($result))
        {
            $NieuwsID = $row['NieuwsID'];
            $NieuwsDatum = $row['NieuwsDatum'];
            $NieuwsTitel = stripslashes($row['NieuwsTitel']);
            $NieuwsBericht = stripslashes($row['NieuwsBericht']);
            $NieuwsBronNaam = $row['NieuwsBronNaam'];
                if(empty($NieuwsBronNaam)){
                    $NieuwsBronNaam = "Bronisleeg";
                    }
            $NieuwsBronUrl =$row['NieuwsBronUrl'];
                    if(empty($NieuwsBronUrl)){
                    $NieuwsBronUrl = "http://bron.nl";
                    }
            $GebruikersNaam = $row['GebruikersNaam'];
            $GebruikersEmail = $row['GebruikersEmail'];
            $GebruikersEmail = str_replace("@", "$", $GebruikersEmail);
            $GebruikersNaam = "<a href=\"afbeeldingen/txtnaarafbeelding.php?txt=$GebruikersEmail\" onclick=\"window.open('afbeeldingen/txtnaarafbeelding.php?txt=$GebruikersEmail','popup','width=300,height=25,scrollbars=no,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=50,top=0'); return false\">$GebruikersNaam</a>";
            $NieuwsDatum = datumomzetten($NieuwsDatum);
            $query3 = "SELECT * FROM reacties WHERE NieuwsID = '$NieuwsID'";
            $result3 = mysql_query($query3) or die(mysql_error());
            $AantalReacties = mysql_num_rows($result3);
            switch ($AantalReacties) {
                case 0:
                $AantalReacties = "Er zijn geen reacties! Klik <a href=\"nieuws.php?actie=reacties&amp;nieuwsid=$NieuwsID\" onclick=\"window.open('nieuws.php?actie=reacties&amp;nieuwsid=$NieuwsID','popup','width=550,height=600,scrollbars=yes,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=50,top=0'); return false\">hier</a> om als eerste een reactie toe te voegen!";
                break;
                case 1:
                $AantalReacties = "Er is één reactie! Klik <a href=\"nieuws.php?actie=reacties&amp;nieuwsid=$NieuwsID\" onclick=\"window.open('nieuws.php?actie=reacties&amp;nieuwsid=$NieuwsID','popup','width=550,height=600,scrollbars=yes,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=50,top=0'); return false\">hier</a> om deze te lezen of een reactie toe te voegen.";
                break;
                case ($AantalReacties >= 2):
                $AantalReacties = "Er zijn $AantalReacties reacties! Klik <a href=\"nieuws.php?actie=reacties&amp;nieuwsid=$NieuwsID\" onclick=\"window.open('nieuws.php?actie=reacties&amp;nieuwsid=$NieuwsID','popup','width=550,height=600,scrollbars=yes,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=50,top=0'); return false\">hier</a> om ze te lezen en een reactie toe te voegen.";
                break;
            }
            ?>
            <table width="100%" border="1" cellspacing="0" cellpadding="5">
            <tr>
            <td><?php echo "<a href=\"nieuws.php?actie=reacties&amp;nieuwsid=$NieuwsID\"><b>$NieuwsTitel</b></a>"; ?></td>
            </tr>
            <tr>
            <td><?php echo "$NieuwsBericht"; ?></td>
            </tr>
            <tr>
            <td>Gepost door: <?php echo "$GebruikersNaam"; ?> op <?php echo "$NieuwsDatum"; ?>. <?php echo "$AantalReacties"; ?></td>
            </tr>
            <tr>
            <td>Bron: <a href="<?php echo "$NieuwsBronUrl"; ?>" target="_blank"><?php echo "$NieuwsBronNaam"; ?></a></td>
            </tr>
            </table>
            <br>
            <?php
        }
        }else{
        echo "Er zijn geen nieuwsberichten gevonden";
    }
}
?>

Misschien kan je wat beter zien wat ik zou moeten aanpassen met het script erbij.
 
$NieuwsID_exists is gewoon een lege variabele bij jou, je moet er wel eerst true/false inzetten, afhankelijk van of het wel of niet bestaat ;)

Standaard is ie namelijk "false" en dus gaat ie altijd in het onderste blok.
 
Oké, maar mijn kennis gaat niet zover dat ik nu weet wat ik hier dus aan zou moeten doen of wat ik er nu dus bij zou moeten zetten om dit aan te passen..

op dit moment snap ik er namelijk even helemaal niks meer van:confused:

Edit//

Heb het al opgelost! In ieder geval toch bedankt voor de moeite
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan