Door
Peter Overdam
op 17-11-2012 11:36
gewijzigd op 17-11-2012 18:06
4.627 views
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']) ."' ";
?>
@Marco
Heb mijn script veranderd en krijg de volgende foutmelding
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /var/www/vhosts/7/125190/webspace/httpdocs/mijndomein.nl/modules/account/activate-account.php on line 16
Verkeerde activatie gegevens, controleer de url in uw activatie mail.
Jij gaf ook op dat ik het volgende bovenaan mijn script moest plaatsen
<?php
echo var_dump($_GET);
?>
Maar zoiets had ik al erin zitten alleen in een iets andere vorm
Ja die foutmelding komt niet door mijn kleine stukje code...
Je hebt waarschijnlijk het stukje van Bart v B gepakt en geplakt...
(ja die functie/code die je erin hebt staan is eigenlijk hetzelfde als die van mij. en zo te zien krijg je een mooi resultaat binnen in de array die ik zie..)
probeer het anders eens zo:
<?php
$mysqli->real_escape_string($waarde_moet_hier);
?>
@Marco.
Had inderdaad stukje code van Bart gepakt leek net of het bij jou bericht hoorde.
Maar ik geef het op ik snap er kennelijk geen *** van en ga er ook zeker niet uitkomen ik zie gewoon niet waar alles hoort en hoe alles werkt in ieder geval bedankt voor alle hulp.
Plaats je complete volledige recente code eens we zijn hier om je te helpen (en nee niet om alles voor te doen voor je!) maar we kunnen en willen je zeker helpen!
@Marco
Oh ik wil ook niet dat alles voor mij gedaan wordt ik heb daar juist een bloed hekel aan maar iemand heeft mij op de verkeerde manier PHP geleerd beetje op ze jan boeren fluitje en daar kom ik nu telkens achter als een script niet naar behoren werkt en aangezien ik al moeilijk leer is het dubbel zo moeilijk voor mij
// 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 = '". mysqli_real_escape_string($_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');
}
?>
Wat moet ik doen op dit nu correct en veilig te laten werken.
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /var/www/vhosts/7/125190/webspace/httpdocs/mijndomein.nl/modules/account/activate-account.php on line 12
Verkeerde activatie gegevens, controleer de url in uw activatie mail.
probeer het eens zo:
(het kan nog een heel stukje beter en eventueel uitgebreider maar eerst maar eens kijken of dit werkt en kijken of je het eventueel snapt)
<?php
// Get the needed data
if( isset($_GET['id']) && isset($_GET['serial']) ):
if ( is_numeric($_GET['id']) && !is_null($_GET['id']) && (int)$_GET['id'] && !empty($_GET['id']) && !is_null($_GET['serial']) && !empty($_GET['serial']) && is_string($_GET['serial']) ):
// contoleer de serial...
$serial_data = $mysqli->real_escape_string($_GET['serial']);
// Check Db for existance
$check_sql = 'select id, serial from companion where id = '. (int)$_GET['id'] .' and serial = '.$serial_data.' limit 1';
$check_result = $mysqli->query($check_sql);
$row_cnt = $check_result->num_rows;
if( $row_cnt == 1 ):
$sql = 'update companion set active = 1 where id = '.(int)$_GET['id'].' limit 1';
$result = $mysqli->query($sql);
if ( $mysqli->affected_rows() == 1 ):
echo 'Uw account is geactiveerd';
else: // else als er niks is bijgewerkt in de database...
echo 'Er ging is verkeerd tijdens het updata van de database, probeer het opnieuw a.u.b';
endif;
else: // else als er iets verkeerds is met de activatie serial...
echo 'Verkeerde activatie gegevens, controleer de url in uw activatie mail.';
endif;
else: // else if het id en/of de serial zijn niet correct...
echo 'Een van de mee gegeven data is incorrect, controlleer uw invoer!.';
endif;
else: // else als er geen id of serial gevonden word...
echo 'Er is iets niet goed gegaan neem contact op met de webmaster';
endif;
Notice: Trying to get property of non-object in /var/www/vhosts/7/125190/webspace/httpdocs/mijndomein.nl/modules/account/activate-account.php on line 18
Verkeerde activatie gegevens, controleer de url in uw activatie mail.