Beste Mensen,

Ik ben momenteel bezig om mijn scripts te beveiligen tegen SQL injection en dit is is allemaal vrij nieuw voor mij, echter krijg ik telkens een fatal error en ik zie niet direct waar de fout zit. Ik krijg de volgende melding.

Fatal error: Call to undefined function mres() in /var/www/vhosts/7/125190/webspace/httpdocs/mijndomein.nl/modules/account/activate-account.php on line 17

Line 17 is hieronder afgebeeld:

<?php
$check_sql = "SELECT id, serial FROM companion WHERE id=". intval($_GET['id']) ." AND serial='". mres($_GET['serial']) ."' ";
?>

Hoop dat iemand mij hiermee verder kan helpen.

Greetz
Peter
Ik denk dat je met mres mysql_real_escape_string bedoeld?
want de functie mres bestaat niet tenzij je hem zelf hebt gemaakt.
Ik kreeg van een forumlid wel een voorbeeld alleen weet niet precies hoe ik dit moet toepassen in mijn script.

<?php
function mres($string)
{
return mysql_real_escape_string($string);
}
?>

En ik wist niet dat het mres en intval nodig is met mysql_real_escape_string

Greetz
Peter
En staat die functie ook in het script?
De functie die ik gekregen zoals hieronder staat nog niet in het script want denk namelijk niet dat ik dit zo copy/paste in me script kan zetten zonder in mijn script aanpassingen te maken.

<?php
function mres($string)
{
return mysql_real_escape_string($string);
}
?>

Het script waar het in moet komen staat hieronder afgebeeld:

<?php

// Get the needed data
if(isset($_GET['id']) && isset($_GET['serial'])){

// Check Db for existance
$check_sql = "SELECT id, serial FROM companion WHERE id=". intval($_GET['id']) ." AND serial='". mres($_GET['serial']) ."' ";
$check_result = $mysqli -> query($check_sql);

$row_cnt = $check_result->num_rows;

if($row_cnt==true){

$sql = "UPDATE companion SET active='1' WHERE id='". intval($_GET['id']) ."'";
$result = $mysqli -> query($sql);

print('Uw account is geactiveerd');
} else {
print ('Verkeerde activatie gegevens, controleer de url in uw activatie mail.');
}
} else {
print('Er is iets niet goed gegaan neem contact op met de webmaster');
}

?>

Het volledig beveiligen van een script is voor mij vrij nieuw heb veel voorbeelden op php.net gezien en op andere sites maar op de 1 of andere manier wil ik het maar niet begrijpen.

Peter Overdam op 17/11/2012 12:26:16

De functie die ik gekregen zoals hieronder staat nog niet in het script want denk namelijk niet dat ik dit zo copy/paste in me script kan zetten zonder in mijn script aanpassingen te maken.

Als het niet in het script staat, dan is het toch niet zo raar dat je een melding krijgt?

Zoek op internet: er is met Google heel veel te vinden. En van zelf doen/zoeken leer je het meest.

Dus waarom niet proberen (zorg voor een goede backup)?
@Obelix en Idefix
Je moet eens weten hoe vaak ik scripts heb bekeken en heb uitgeprobeerd maar op de 1 of andere manier lukt het mij niet. Daarbij komt nog eens kijken dat ik ontzettend moeilijk leer. Ik heb PHP geleerd van iemand die dacht dat ie het kon en heb vele op de fouten manier geleerd waar ik via dit forum ben achter gekomen.

Op php.net (http://php.net/manual/en/function.mysql-real-escape-string.php) wordt ik niet veel wijzer met de scripts die daar worden getoont. En op de nieuwe manier via php.net (http://www.php.net/manual/en/mysqli.real-escape-string.php) raak ik het spoor helemaal bijster.

dat het MYSQL_REAL_ESCAPE_STRING in het script moet staan dat snap ik nog wel maar mijn vraag is meer hoe ik het in het script toepas. Moet ik het gewoon in het script pleuren en $string vervangen (in mijn geval) door $check_sql of iets anders.......

Greetz
Peter
Het is sowieso niet handig om een function te schrijven voor een function.
Je gaat toch ook niet met 2 hamers een spijker proberen in een plank te slaan. :)

<?php
 $check_sql = "SELECT id, 
                      serial 
                      FROM companion 
                      WHERE 
                      id = '". intval($_GET['id']) ."' 
                      AND 
                      serial = '". mysqli_real_escape_string($_GET['serial']) ."' "; 
?>
Hij kan naar alle waarschijnlijkheid een van de 2 $_GET[''] items niet vinden.

- Controleer of ze worden mee gegeven.
- Controleer of ze goed binnen komen.
- Controleer of ze de correcte waarde bevatten.

kijk anders een door dit bovenaan de pagina te zetten:
<?php
echo var_dump($_GET);
?>
@Marco
Bedankt voor het voorbeeld zal hier ff mee aan de slag gaan. Wat betreft die function die kreeg ik via een forumlid en wist niet hoe ik dit moest gebruiken kreeg alleen te horen dat het makkelijker was.

Ik ga er vanmiddag even lekker mee stoeien en hou jullie op de hoogte ervan.

Greetz
Peter
@Bart v B,

Heb je ooit is in een framework/classes gekeken ?!? (denk het niet, en anders niet echt goed waarscheinlijk)

want daar worden/kunnen ook functies door andere functies en in functies aangeroepen worden en gebruikt worden.
En Classes nemen andere classes hun eigenschappen over en functies.

En nee dat is niet 1 spijker met 2 hamers slaan!

Reageren