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
affected_rows moet zonder de haakjes.
Maar waarom heb je mijn advies niet gewoon opgevolgd, de fout was duidelijk: serial is een varchar en de waarde moet dus tussen ''
@Ger
Ik had jou tweede antwoord niet gezien had denk ik eroverheen gelezen en zag hem nu pas dus jij zegt de () na affected_rows weghalen!

Als ik jou () weghaal en jou tweede antwoord van line 15 toepas dan krijg ik het volgende

Array
(
[page] => account-activeren
[id] => 90
[serial] => I7GcDnFiHEMhJd043OAgBP6akpNClKmeoL9f1jb285
)
object(stdClass)#4 (2) {
["id"]=>
string(2) "90"
["serial"]=>
string(42) "I7GcDnFiHEMhJd043OAgBP6akpNClKmeoL9f1jb285"
}
object(mysqli_result)#2 (5) {
["current_field"]=>
int(0)
["field_count"]=>
int(2)
["lengths"]=>
NULL
["num_rows"]=>
int(1)
["type"]=>
int(0)
}
Er ging is verkeerd tijdens het updata van de database, probeer het opnieuw

Lees Ger zijn comment nog eens na:


<?php
$check_result = $mysqli->query("select id, serial from companion where id = ". intval($_GET['id']) . " and serial = '".$serial_data. "'");
?>



<?php
 $sql = "UPDATE companion SET active = 1 WHERE id = '".(int)$_GET['id']."'";
?>
@Bart
Als jij op "" doelt dat heb ik al geprobeerd ik hoop meer eigenlijk dat me server in de fik vliegt.
Begin een beetje gefrusteerd te raken hier met al die ERRORS voor me neus.

Er is zoveel in het script veranderd en aangepast dat ik hem nauwelijks nog begrijp en weet echt niet waar ik zoeken moet voor een fout.
Peter, ga terug naar het script van Marco (16:04) op de vorige pagina.
Vervang daarvan regel 15 door de code die Bart quote (de bovenste).

PS.
'Goed' bezig Marco
@Ger & @ Marco.

Heb nu Marco's script van de vorige pagina weer teruggeplaatst heb line 15 vervangen door:

<?php
$check_result = $mysqli->query("select id, serial from companion where id = ". intval($_GET['id']) . " and serial = '".$serial_data. "'");
?>

En krijg daarna weer een foutmelding

Array
(
[page] => account-activeren
[id] => 90
[serial] => I7GcDnFiHEMhJd043OAgBP6akpNClKmeoL9f1jb285
)
object(stdClass)#4 (2) {
["id"]=>
string(2) "90"
["serial"]=>
string(42) "I7GcDnFiHEMhJd043OAgBP6akpNClKmeoL9f1jb285"
}
object(mysqli_result)#2 (5) {
["current_field"]=>
int(0)
["field_count"]=>
int(2)
["lengths"]=>
NULL
["num_rows"]=>
int(1)
["type"]=>
int(0)
}

Fatal error: Call to undefined method mysqli::affected_rows() in /var/www/vhosts/7/125190/webspace/httpdocs/mijndomein.nl/modules/account/activate-account.php on line 34
Damm dat ga je niet menen heb ik daar overheen gekeken jo..

Thnx Ger.. (schaamte dat ik daar overheen kijk)

<?php

// dit stukje weg halen of uit zetten als je hem online/'live' zet...
echo '<pre>'.print_r($_GET, true).'<pre>';
error_reporting(E_ALL);
ini_set('display_errors', 1);

// 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_result = $mysqli->query("select id, serial from companion where id = ". intval($_GET['id']) . " and serial = '".$serial_data. "'");

// echo '<pre>';
// echo var_dump(check_result);
// echo '</pre>';

if( $check_result ):

$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 update 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;

?>
Marco PHPJunky op 17/11/2012 20:32:54

Damm dat ga je niet menen heb ik daar overheen gekeken jo..

Thnx Ger.. (schaamte dat ik daar overheen kijk)

<?php
// dit stukje weg halen of uit zetten als je hem online/'live' zet...
echo '<pre>'.print_r($_GET, true).'<pre>';
error_reporting(E_ALL);
ini_set('display_errors', 1);

// 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_result = $mysqli->query("select id, serial from companion where id = ". intval($_GET['id']) . " and serial = '".$serial_data. "' limit 1"); if( $check_result ):

// echo '<pre>';
// echo var_dump(check_result);
// echo '</pre>';

if( $check_result ):

$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;

?>


Hey Marco dit script hierboven bevat een fout dit geeft hij al aan in Dreamweaver en als ik hem toch upload en uitprobeer dan doet hij helemaal niks zelfs geen foutmelding.

is aangepast in het script hierboven...
@Marco
Krijg geen foutmelding meer, maar krijg wel de melding dat bij het updaten iets verkeerd is gegaan

Array
(
[page] => account-activeren
[id] => 90
[serial] => I7GcDnFiHEMhJd043OAgBP6akpNClKmeoL9f1jb285
)
Er ging is verkeerd tijdens het updata van de database, probeer het opnieuw

Url is goed en de database gegevens kloppen ook.

Greetz
Peter

Reageren