hallo allemaal,
ik heb net een pagina gemaakt, en ik zie dan op de pagina bovenaan alle gegevens in een database, en onderin een formulier om een waarde (gereageerd) te veranderen.
dit is mijn code die ik nu heb:


<?php
if ($_POST['uid'])
{
$con = mysql_connect("sql210.byethost17.com","b17_5632309","PASS");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("b17_5632309_aanmelden", $con);

mysql_query("UPDATE contacts SET gereageerd = '$_POST["gereageerd"]'
WHERE id = '$_POST["uid"]'");

mysql_close($con);
}
?>

<html>
<head>
<center><h1>BBQ aanmeldingen</h1></center>
</head>
<body>
<center><b><title>BBQ aanmeldingen</title></b></center><br>
</body>
</html>

<?php
mysql_connect("sql210.byethost17.com", "b17_5632309", "PASS") or die(mysql_error());
mysql_select_db("b17_5632309_aanmelden") or die(mysql_error());

$result = mysql_query("SELECT * FROM `contacts` LIMIT 0, 30 ");   
 
while($row = mysql_fetch_assoc($result)){
   echo "<b>Aanmelding nummer:</b> ".$row['id']. ", <b>Naam:</b> ".$row['name']
       .", <b>Email:</b> ".$row['email'].", <b>huisnummer</b> ".$row['huisnr']
       .", <b>Opmerkingen:</b> ".$row['comment']." <b>geactiveerd:</b> ".$row['gereageerd']."<br/> <br/>";
}
?>

<html>
<body>
<center><title><b>activeren:</b></title></center><br> <br>

<form action="view.php" method="post">
aanmeldings nummer: <input type="text" name="uid" /><br>
geactiveerd? (ja/nee): <input type="text" name=gereageerd" /><br>
<input type="submit" />
</form>


als ik mijn pagina open, zie ik niks, gewoon een lege pagina (ik laat het formulier naar dezelfde pagina gaan als hij al is... (view.php))
wat kan ik doen om dit te fixen?
ik wil dus dit:

ik open de pagina en zie alle gegevens in de database, en een leeg formulier met daarin de optie om de id en een ja/nee vraag in te vullen.
als ik dan op verstuur klik moet de pagina opnieuw laden en de gegevens in de database veranderen (dus: gereageerd veranderen wanneer de id dezelfde is als ingevuld.) maar het lukt maar niet, kan iemand me helpen?
eigenlijk werkt het formulier en het weergeven van de info goed, alleen de database updaten werkt niet... dus vanaf regel 17 klopt het.
kijk eens naar de kleurtjes op regel 12/13 Verander de " naar ' in je $_POST[''] velden, Als je dan daarme bezig bent kun je ze meteen buiten de quotes halen en beveiligen tegen sql injection.

mysql_close is niet nodig. :p
Mark Coenen op 25/06/2010 20:44:57

kijk eens naar de kleurtjes op regel 12/13 Verander de " naar ' in je $_POST[''] velden, Als je dan daarme bezig bent kun je ze meteen buiten de quotes halen en beveiligen tegen sql injection.

mysql_close is niet nodig. :p


dus wat moet de code dan worden? want ik snap het niet helemaal :S

en qua sql injection, ik denk niet dat ik zo snel slachtoffer wordt, want de site wordt gebruikt door mij en een van de organisatoren van de BBQ...
Ik zie net dat je 2 keer verbinding maakt naar je database, nergens voor nodig 1 keer is genoeg.

Kijk eens op

http://www.phptuts.nl/view/41/



<?php
mysql_query("UPDATE contacts SET gereageerd = '".mysql_real_escape_string($_POST['gereageerd'])."'
WHERE id = '".mysql_real_escape_string($_POST['uid'])."'");
?>
- Controle en validatie is niet correct
- Je beschermt je niet tegen SQL Injectie


<?php
if (   $_SERVER['REQUEST_METHOD'] == 'POST'
    && isset($_POST['uid']) && ctype_digit($_POST['uid'])
    && isset($_POST['gereageerd'] && trim($_POST['gereageerd']) != '') {

    $sql = "UPDATE contacts 
            SET    gereageerd = '".mysql_real_escape_string($_POST['gereageerd'])."'
            WHERE  id         = ".mysql_real_escape_string($_POST['uid']);
            
    if (!$result = mysql_query($sql)) {
    	echo mysql_error().'<br />'.$sql;
    }
}    
?>

Cas eliens op 25/06/2010 20:48:49

en qua sql injection, ik denk niet dat ik zo snel slachtoffer wordt, want de site wordt gebruikt door mij en een van de organisatoren van de BBQ...


REGEL nummer 1 bij programmeren: Vertrouw geen enkele input van wie dan ook.
oh ook... zal ik aan denken!

ok de site doet het weer, maar als ik nu iets invul zie ik het niet veranderen in de database, komt dit misschien omdat ik verbind met een verkort .tk domein?
ok heb net geupdate, nu iets anders en de pagina is weer blank...
nieuwe code:


<?php
mysql_connect("sql210.byethost17.com", "b17_5632309", "PASS") or die(mysql_error());
mysql_select_db("b17_5632309_aanmelden") or die(mysql_error());
?>

<?php
if (   $_SERVER['REQUEST_METHOD'] == 'POST'
    && isset($_POST['uid']) && ctype_digit($_POST['uid'])
    && isset($_POST['gereageerd'] && trim($_POST['gereageerd']) != '') {

    $sql = "UPDATE contacts 
            SET    gereageerd = '".mysql_real_escape_string($_POST['gereageerd'])."'
            WHERE  id         = ".mysql_real_escape_string($_POST['uid']);
            
    if (!$result = mysql_query($sql)) {
        echo mysql_error().'<br />'.$sql;
    }
}    
?>

<html>
<head>
<center><h1>BBQ aanmeldingen</h1></center>
</head>
<body>
<center><b><title>BBQ aanmeldingen</title></b></center><br>
</body>
</html>

<?php
$result = mysql_query("SELECT * FROM `contacts` LIMIT 0, 30 ");   
 
while($row = mysql_fetch_assoc($result)){
   echo "<b>Aanmelding nummer:</b> ".$row['id']. ", <b>Naam:</b> ".$row['name']
       .", <b>Email:</b> ".$row['email'].", <b>huisnummer</b> ".$row['huisnr']
       .", <b>Opmerkingen:</b> ".$row['comment']." <b>geactiveerd:</b> ".$row['gereageerd']."<br/> <br/>";
}
?>

<html>
<body>
<center><title><b>activeren:</b></title></center><br> <br>

<form action="view.php" method="post">
aanmeldings nummer: <input type="text" name="uid" /><br>
geactiveerd? (ja/nee): <input type="text" name=gereageerd" /><br>
<input type="submit" />
</form>



EDIT: even passwoord eruit gefilterd...

Reageren