Er was een sql fout, die is nu opgelost.
Daarom heb ik de title en zo veranderd.


Hoi ik heb een script gescreven met een sql fout en een php fout :)
Ja waar hoort dit topic dan in:)
Maar ik ben op het forum gekomen omdat hier veel profs zijn.




<?php
include("safe.php");
include("config.php");
if ( isset( $_POST['submit']  )  )//controleerd als er op submit is geklikt:
{

mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_db);

    $query = " SELECT
                id,
                status,
                wachtwoord,
                actief
                geld
                FROM
                gebruikers
                WHERE
                id = '" . $_SESSION['user_id'] . "'
                AND
                status  = '" . $_SESSION['user_status'] . "'
                "; 
    $result = mysql_query( $query );
    $rij    = $rij = mysql_fetch_object($result);
    $dbpass = $dbpass = htmlspecialchars($rij->geld);
if("Carlo" == ($_POST['aa'])) {
echo 'Vraag 1 heeft u goed!';
printf('<br>uw opgegeven andwoord: %s', $_POST['aa']);

$geld = $dbpass + 10;

 $sql = "UPDATE gebruikers SET geld + 10  WHERE id='".$_SESSION['user_id']."'";
     $query = mysql_query($sql);

echo "<br> u heeft '.$geld.' op uw rekening staan";
}else{
echo " andwoord 1 is niet goed!";
}

if("Demi" ==($_POST['ab'])) {
echo 'Vraag 2 heeft u goed!';
printf('<br>uw opgegeven andwoord: %s', $_POST['aa']);

$geld = $dbpass + 10;

 $sql = "UPDATE gebruikers SET geld +10  WHERE id='".$_SESSION['user_id']."'";
     $query = mysql_query($sql);

echo "<br> u heeft '.$geld.' op uw rekening staan";
}else{
echo " andwoord 2 is niet goed!";
}


}else{//dit zorgt ervoor

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="nl" xml:lang="nl">
  <head>

    <meta http-equiv="Content-Language" content="nl" />
    <link rel="stylesheet" type="text/css" href="../style.css" />
    <title><?= $sitenaam ?> - Vragen</title>
  </head>
  <body>

<!--Hier kan je aan gaan werken demi!---!>

<form action="test.php" method="post" name="vragen"/>
Vraag 1:<br>

Ga op de site opzoek naar de gene waar je terecht kan als je problemen hebt met het inloggen.<br>
Wie is dat (schrijf de naam met hoofdletter)
<br><input type=text  name=aa><br>
<br>
 Vraag 2:<br>
Ga op de sit opzoek naar de gene waar je terecht kan als de lagout niet goed is.<br>
Wie is dat (schrijf de naam met een hoofdletter)
<br><input type=text  name=ab><br>
<br>
Vraag 3:<br>
Hoeveel personen hebben aan de site mee geholpen?<br>
 Schrijf dat hier op (inclusief *** en ***)
<br><input type=text name=ac><br>
<br>
Vraag 4:<br>
Hoeveel Speelgeld krijg je in het begin van het spel?<br>
 (exclussief bonissen)<br>
<input type=text name=ab><br>
<input type=submit valeu=Verzenden! name=submit>
</form>



<!---Hier niet meer werken demi---!>
<?php
//mysql close
}
?>
<!--Hier kan je weer werken--!>
</body>
</html>


---php fout---

Als eerste controleerd hij als ik carlo heb ingevult.
Maar als tweede moet hij controleren als je demi hebt ingevult, dat doet hij niet. hoe kan ik dat weer oplossen??

dat heb ik ook geprobeerd, de andere doe ik het ook zo en die doen het goed.

Het lijkt wel dat = het zelfde doet als ==.
ps. hoe vind je me scriptje, is ie niet onveilig?

als ik nu goed me script bekijk, zie ik aan de kleurtjes dat er een paar fouten zitten.
Ik gebruik bv. de hele tijd $dva
en spellings fouten zitten erin.

Dan zie ik dat ik $_SESSION niet controleer.
en dat geld ook voor $_POST.
Hier kan een hacker niet makkelijk SQL injecion toe passen.

Hij kan html gebruiken
En hij kan xss gebr..
- Je controleert niet op je $_SESSION variabelen in je query;
- Waarom mysql_fetch_object?? Een resultset is geen object;
- Waarom htmlspecialchars gebruiken over velden waar probably een int uit komt?
- Gebruik if($_SERVER['REQUEST_METHOD'] == "POST") voor controle op een submit i.p.v. if(isset($_POST['submit']));
- Niet overzichtelijk ingesprongen en dus geen overzichtelijk script;
- Ik wed dat er wel wat HTML errors in zitten, dus niet xHTML valid;
- Waarom quotes om cijfers?
- Ontzettend veel spellingsfouten. Kijk eens goed naar je Nederlands!
- Onzorgvuldig gebruik van ' en ";
- In je queries hoeven getallen óók niet omringt te worden door quotes. Als je veldtypen op int staan, wil het zo al! Is overigens nog een keer een extra beveiliging, bij invoering van een string zal de query dan erroren (geen quotes om de string is een unexpected error);
- Ik zou ook iets zorgvuldiger zijn in je variabelenamen. $sql is een query, en $query is een resultset. Dat doe je alleen aan het begin goed. Zo zijn er wel meerdere variabelen waar je iets duidelijk zou kunnen zijn. Ik doe het bijv. altijd zo:
<?php
$iGetal = 99;
$sZin = 'Hoi, dit is PHPhulp.nl';
$bVeld = false;
$aLijst = array('Hoi', 'Doei', 'Welkom', 'Tot ziens');
?>
Snap je het principe van de kleine i, s, b en a? (resp. integer, string, boolean en array.)

Ik hoop dat je serieus naar deze kritieken gaat kijken en er alleen het positieve van in ziet. Ik heb deze kritieken genoteerd om jouw te helpen je script te verbeteren, onthoud dat ;-).
carlo schreef op 16.03.2009 21:52
...Het lijkt wel dat = het zelfde doet als ==....


dat iets zo lijkt betekend nog niet dat het zo is
Klaasjan Boven schreef op 16.03.2009 22:44
[quote='carlo schreef op 16.03.2009 21:52']...Het lijkt wel dat = het zelfde doet als ==....


dat iets zo lijkt betekend nog niet dat het zo is[/quote]

Weet ik, maar met mij scripje lijkt dat wel

@jezper

bedankt ik weet nu wat ik moet verbeteren.

over het overzicht, daarom heb ik ook instellingen gemaakt

maar nederlands is niet m'n sterkste vak.

Ik zal er aan werken

Reageren