Fatal error na toepassen intval & mres

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Pagina: 1 2 3 volgende »

Peter Overdam

Peter Overdam

17/11/2012 11:36:25
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?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
Gewijzigd op 17/11/2012 18:06:22 door Peter Overdam
 
PHP hulp

PHP hulp

22/11/2024 15:08:44
 
Bo Ter Ham

Bo Ter Ham

17/11/2012 11:39:27
Quote Anchor link
Ik denk dat je met mres mysql_real_escape_string bedoeld?
want de functie mres bestaat niet tenzij je hem zelf hebt gemaakt.
 
Peter Overdam

Peter Overdam

17/11/2012 12:13:22
Quote Anchor link
Ik kreeg van een forumlid wel een voorbeeld alleen weet niet precies hoe ik dit moet toepassen in mijn script.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?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
 
Obelix Idefix

Obelix Idefix

17/11/2012 12:20:23
Quote Anchor link
En staat die functie ook in het script?
 
Peter Overdam

Peter Overdam

17/11/2012 12:26:16
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
function mres($string)
 {

 return mysql_real_escape_string($string);
 }

?>


Het script waar het in moet komen staat hieronder afgebeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?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.
 
Obelix Idefix

Obelix Idefix

17/11/2012 12:50:16
Quote Anchor link
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)?
 
Peter Overdam

Peter Overdam

17/11/2012 13:35:02
Quote Anchor link
@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
 
Bart V B

Bart V B

17/11/2012 13:47:15
Quote Anchor link
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. :)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
 $check_sql
= "SELECT id,
                      serial
                      FROM companion
                      WHERE
                      id = '"
. intval($_GET['id']) ."'
                      AND
                      serial = '"
. mysqli_real_escape_string($_GET['serial']) ."' ";
?>
 
Marco PHPJunky

Marco PHPJunky

17/11/2012 13:53:12
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo var_dump($_GET);
?>
 
Peter Overdam

Peter Overdam

17/11/2012 13:59:29
Quote Anchor link
@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
 
Marco PHPJunky

Marco PHPJunky

17/11/2012 14:06:21
Quote Anchor link
@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!
Gewijzigd op 17/11/2012 14:14:28 door Marco PHPJunky
 
Obelix Idefix

Obelix Idefix

17/11/2012 14:41:28
Quote Anchor link
Die functie kun je eenvoudig (bovenin) copy/paste in je script.
 
Peter Overdam

Peter Overdam

17/11/2012 14:47:50
Quote Anchor link
@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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo var_dump($_GET);
?>


Maar zoiets had ik al erin zitten alleen in een iets andere vorm

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<pre>'.print_r($_GET, true).'<pre>';
?>


En ik krijg de volgende waardes gewoon er netjes uit

Array
(
[page] => account-activeren
[id] => 88
[serial] => G37bh9HnAB6daclONEkCeM84JKop1P5jiIFmD20Lgf
)
Gewijzigd op 17/11/2012 18:06:56 door Peter Overdam
 
Marco PHPJunky

Marco PHPJunky

17/11/2012 14:59:58
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$mysqli
->real_escape_string($waarde_moet_hier);
?>
 
Peter Overdam

Peter Overdam

17/11/2012 15:11:24
Quote Anchor link
@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.

Greetz
Peter
 
Marco PHPJunky

Marco PHPJunky

17/11/2012 15:21:55
Quote Anchor link
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!
Gewijzigd op 17/11/2012 15:22:27 door Marco PHPJunky
 
Peter Overdam

Peter Overdam

17/11/2012 15:25:20
Quote Anchor link
@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

Mijn script ziet er als volgt uit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
    
    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'])){
    
     // 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.
 
Marco PHPJunky

Marco PHPJunky

17/11/2012 15:30:22
Quote Anchor link
Zou je misschien je huidige melding / foutmelding erbij kunnen zetten...
zodat we/ik kan zijn waar het eventueel nog fout gaat...
 
Peter Overdam

Peter Overdam

17/11/2012 15:34:40
Quote Anchor link
@Marco

Het volgende krijg ik te zien:

Array
(
[page] => account-activeren
[id] => 88
[serial] => G37bh9HnAB6daclONEkCeM84JKop1P5jiIFmD20Lgf
)

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.
Gewijzigd op 17/11/2012 18:07:39 door Peter Overdam
 
Marco PHPJunky

Marco PHPJunky

17/11/2012 15:50:41
Quote Anchor link
@ Peter,

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)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
    
    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 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;


?>


Greets
Gewijzigd op 17/11/2012 15:53:42 door Marco PHPJunky
 
Peter Overdam

Peter Overdam

17/11/2012 15:55:28
Quote Anchor link
@Marco
Krijg de volgende fout melding

Array
(
[page] => account-activeren
[id] => 88
[serial] => G37bh9HnAB6daclONEkCeM84JKop1P5jiIFmD20Lgf
)

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.
Gewijzigd op 17/11/2012 18:07:19 door Peter Overdam
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.