url input controlleren in database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Dennis  van DUin

Dennis van DUin

31/10/2014 17:55:47
Quote Anchor link
Beste mensen,

Ik ben bezig met een klein systeempje wat ik vroeger wel eens vaker heb geschreven. Maar ik heb heel lang niks gedaan en nu kom ik er helemaal niet meer uit. Voor mijn gevoel is het ontzettend simpel maar wil het niet lukken. Ik heb een url met als variable code. Deze variable moet iets mee gebeuren:

--> De url wordt ingevoerd
--> De code word eraan gezet als: http://controle.nl/Codes/controle.php?code=100.php
--> De code is hierbij dus 100 deze ontvang ik in php met
$codeinput = $_GET['code'];

--> Nu moet ik in mijn mysql database kijken of deze code daarin staat.
--> Zo ja dan moet hij deze code verwijderen en een 1 terugsturen en het aantal punten dat achter deze code staat terug sturen. [mijn tabel bestaat uit: my_codes --> tabel codes --> variables zijn: code, punten. Een voorbeeldje is dus code
Afbeelding
--> Bij ja stuurt hij dus terug: 1/punten (liefst met de / er tussen)

--> Zo nee da moet hij een 0 terug sturen.

Nu heb ik het gevoel dat ik gewoon iets makkelijks mis maar ik kom helemaal niet verder dan de code uit de url halen. Heb heel veel met mysql geprobeerd maar niks werkt...

Iemand een idee hoe ik dit kan maken? Oplossen?

Groeten,
Dennis
Gewijzigd op 31/10/2014 18:30:40 door Dennis van DUin
 
PHP hulp

PHP hulp

24/12/2024 20:25:02
 
Frank Nietbelangrijk

Frank Nietbelangrijk

31/10/2014 18:32:35
Quote Anchor link
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
<?php

function useCode($link, $code)
{

    $result = mysqli_query($link, "SELECT * FROM tabel WHERE code=" . $code) . " LIMIT 1";

    if($result && $row = mysqli_fetch_assoc($result))
    {

        mysqli_query($link, "DELETE FROM tabel WHERE id=" . $row['id']);
        return $row['id']
    }


    return FALSE;
}


$punten = getCode($link, 166453);
echo $punten;

?>


Zoiets denk ik
Gewijzigd op 31/10/2014 18:35:21 door Frank Nietbelangrijk
 
Dennis  van DUin

Dennis van DUin

31/10/2014 18:39:29
Quote Anchor link
Hoi,

bedankt voor uw reactie, ik heb de code nu als dit:

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
<?php

$host
= "localhost";
$username = "pelistar";
$password = "";
$database = "my_pelistar";
$codeinput = $_GET['code'];              

$link = mysql_connect($host,$username,$password) or die(mysql_error());
mysql_select_db($database,$link) or die(mysql_error()." [".$database."]");


function
useCode($link, $codeinput)
{

    $result = mysqli_query($link, "SELECT * FROM codes WHERE code=" . $codeinput) . " LIMIT 1";

    if($result && $row = mysqli_fetch_assoc($result))
    {

        mysqli_query($link, "DELETE FROM codes WHERE id=" . $row['id']);
        return $row['id']
    }


    return FALSE;
}


$punten = getCode($link, 166453);
echo $punten;

?>


Maar hij geeft me deze error: Parse error: syntax error, unexpected '}' in /membri/pelistar/Codes/codesalien.php on line 24

Dit is in jou gedeelte van de code dat hij hij het sluitings teken niet kent? Enig idee?
Gewijzigd op 31/10/2014 18:42:55 door Dennis van DUin
 
- Ariën  -
Beheerder

- Ariën -

31/10/2014 18:45:16
Quote Anchor link
Lijn 20 mist een ;

Verder is SQL-injection mogelijk omdat je $_GET niet filtert met mysql_real_escape_string()
Gewijzigd op 31/10/2014 18:46:17 door - Ariën -
 
Randy vsf

Randy vsf

31/10/2014 18:45:51
Quote Anchor link
achter return $row['id'] moet een ;
 
Dennis  van DUin

Dennis van DUin

31/10/2014 18:49:32
Quote Anchor link
Ohh god dat had ik zelf ook wel mogen zien zeg.... Sorry mensen stom van me.

Krijf nu dit:

Fatal error: Call to undefined function getCode() in /membri/pelistar/Codes/codesalien.php on line 28

Kan iemand mij daarmee helpen?

SQL injectie is inderdaad mogelijk? bedoel je dat er codes in de database gezet kunnen worden want met dit beveiligen heb nog helemaal geen ervaring. Het enige wat ik wil doen is controlleren of de ingevoerde code (dmv de url in de database staat) en zo ja het juiste aantal punten terug sturen. Ik wil graag leren dus als iemand wat uitleg zou willen typen ben ik gelukkig!
Gewijzigd op 31/10/2014 18:52:42 door Dennis van DUin
 
- Ariën  -
Beheerder

- Ariën -

31/10/2014 18:53:25
Quote Anchor link
De functie getCode() bestaat niet, Kijk eens goed welke functie je nu WEL aangemaakt hebt. ;-)

En ja, met SQL Injection kan iedereen rotzooi in je query gooien met de gevolgen van den, zoals verwijderen van records of aanpassen etc...
Gewijzigd op 31/10/2014 18:53:40 door - Ariën -
 
Dennis  van DUin

Dennis van DUin

31/10/2014 18:58:38
Quote Anchor link
- Aar - op 31/10/2014 18:53:25:
De functie getCode() bestaat niet, Kijk eens goed welke functie je nu WEL aangemaakt hebt. ;-)

En ja, met SQL Injection kan iedereen rotzooi in je query gooien met de gevolgen van den, zoals verwijderen van records of aanpassen etc...


Bedankt voor je reactie. Ik heb het opgezocht en zit er over te lezen om dat te beveiligen weer iets geleerd.

Ik snap net wat je bedoelt over een functie aanmaken. Ik heb een database gemaakt, daar enkele codes ingevuld en nu probeer ik te controleren of ze erin staan. Ik heb het idee dat ik dit de vorige keer anders heb gedaan... Maar ik hoop er zo met hulp uit te komen?
 
- Ariën  -
Beheerder

- Ariën -

31/10/2014 19:01:02
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function useCode($link, $codeinput) {
// doe iets
}

$punten = getCode($link, 166453);
?>

Je maakt een functie aan met de naam useCode, maar je roept hem dan aan met getCode. Dan is het vrij logisch dat hij 'undefined' is.
Gewijzigd op 31/10/2014 19:01:58 door - Ariën -
 
Dennis  van DUin

Dennis van DUin

31/10/2014 19:06:20
Quote Anchor link
Je hebt helemaal gelijk:

maar nu heb ik deze code:
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
<?php

$host
= "localhost";
$username = "pelistar";
$password = "";
$database = "my_pelistar";
$codeinput = $_GET['code'];              

$link = mysql_connect($host,$username,$password) or die(mysql_error());
mysql_select_db($database,$link) or die(mysql_error()." [".$database."]");


function
useCode($link, $codeinput)
{

    $result = mysqli_query($link, "SELECT * FROM codes WHERE code=" . mysql_real_escape_string($codeinput)) . " LIMIT 1";

    if($result && $row = mysqli_fetch_assoc($result));
    {

        mysqli_query($link, "DELETE FROM codes WHERE id=" . $row['id']);
        return $row['id'];
    }


    return FALSE;
}


$punten = useCode($link, $codeinput);
echo $punten;

?>


En vul ik de link dus in zoals het moet:
http://pelistar.altervista.org/Codes/codesalien.php?code=12345

waarbij de code 12345 in de mysql database staat als

code: punten:
12345 50

Maar de echo zet niks neer... En hij word ook niet uit de database gehaald... Weet jij hoe dat komt? Ik gebruik nu de code van jullie en een deel weet ik daarvan maar niet waarom ik niks terug krijg. Er staat duidelijk een echo?
 
- Ariën  -
Beheerder

- Ariën -

31/10/2014 19:13:25
Quote Anchor link
Gebruik geen MySQL en MySQLi-functies door elkaar!
Gewijzigd op 31/10/2014 19:13:39 door - Ariën -
 
Dennis  van DUin

Dennis van DUin

31/10/2014 19:15:49
Quote Anchor link
- Aar - op 31/10/2014 19:13:25:
Gebruik geen MySQL en MySQLi-functies door elkaar!


Nu word het steeds vreemder. Ik heb het allemaal veranderd maar met een I en nu krijg ik wel een reactie... De naam van mijn database my_pelistar. Dat wordt er als echo gegeven. Maar ik zou graag het aantal punten willen krijgen wat er achter de code staat. En als de code niet klopt moet hij als resultaat een 0 teruggeven... Hij geeft nu namelijk zelfs zonder invoer van iets de naam van mijn database weer... Sorry als ik vragerig overkom misschien wel heel erg noob maar heb het heel graag nodig... Dan heb ik alles werkend voor dit projectje!

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
<?php

$host
= "localhost";
$username = "pelistar";
$password = "";
$database = "my_pelistar";
$codeinput = $_GET['code'];              

$link = mysqli_connect($host,$username,$password) or die(mysqli_error());
mysqli_select_db($database,$link) or die(mysqli_error()." [".$database."]");


function
useCode($link, $codeinput)
{

    $result = mysqli_query($link, "SELECT * FROM codes WHERE code=" . mysqli_real_escape_string($codeinput)) . " LIMIT 1";

    if($result && $row = mysqli_fetch_assoc($result));
    {

        mysqli_query($link, "DELETE FROM codes WHERE id=" . $row['id']);
        return $row['id'];
    }


    return FALSE;
}


$punten = useCode($link, $codeinput);
echo $punten;

?>
Gewijzigd op 31/10/2014 19:16:49 door Dennis van DUin
 
- Ariën  -
Beheerder

- Ariën -

31/10/2014 19:21:43
Quote Anchor link
Tja, op regel 10 wordt die naam inderdaad tussen bracket-tekens aangegeven, waarom zou je dat eigenlijk willen tonen?
Anyway, je connectie mislukt ergens. Dus ga dat eens na met: mysqli_connect_error()
 
Frank Nietbelangrijk

Frank Nietbelangrijk

31/10/2014 19:23:07
Quote Anchor link
Ik had niet getest zeker? ;-)
 
Dennis  van DUin

Dennis van DUin

31/10/2014 19:31:42
Quote Anchor link
- Aar - op 31/10/2014 19:21:43:
Tja, op regel 10 wordt die naam inderdaad tussen bracket-tekens aangegeven, waarom zou je dat eigenlijk willen tonen?
Anyway, je connectie mislukt ergens. Dus ga dat eens na met: mysqli_connect_error()



dan krijg ik het volgende: Parse error: syntax error, unexpected T_FUNCTION in /membri/pelistar/Codes/codesalien.php on line 15

Bij de volgende code:
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

$host
= "localhost";
$username = "pelistar";
$password = "";
$database = "my_pelistar";
$codeinput = $_GET['code'];              

$link = mysqli_connect($host,$username,$password) or die(mysqli_error());
mysqli_select_db($database,$link) or die(mysqli_error());

mysqli_connect_error()

function
useCode($link,$codeinput)
{

    $result = mysqli_query($link, "SELECT * FROM codes WHERE code=" . mysqli_real_escape_string($codeinput)) . " LIMIT 1";

    if($result && $row = mysqli_fetch_assoc($result));
    {

        mysqli_query($link, "DELETE FROM codes WHERE id=" . $row['id']);
        return $row['id'];
    }


    return FALSE;
}


$punten = useCode($link, $codeinput);
echo $punten;

?>
Gewijzigd op 31/10/2014 19:34:35 door Dennis van DUin
 
- Ariën  -
Beheerder

- Ariën -

31/10/2014 19:36:42
Quote Anchor link
Is het niet verstandig om eerst even een basis-tutorials over PHP te zoeken en door te nemen, zodat je weet wat je allemaal doet?

Zomaar een functie neerplaatsen gaat niet echt lukken, nee. Verder heeft mysqli_connect() een mooie parameter waarin je de databasenaam kan aangeven, dus mysqli_select_db() is niet nodig. Verder kan je dan met mysqli_connect_error() in die die()-functie een eventuele foutmelding tonen m.b.t. je connectie.

Maar gezien die missende parameter gok ik erop dat de connectie dan wel goed zal zijn.
Gewijzigd op 31/10/2014 19:37:50 door - Ariën -
 
Dennis  van DUin

Dennis van DUin

31/10/2014 19:41:47
Quote Anchor link
- Aar - op 31/10/2014 19:36:42:
Is het niet verstandig om eerst even een basis-tutorials over PHP te zoeken en door te nemen, zodat je weet wat je allemaal doet?

Zomaar een functie neerplaatsen gaat niet echt lukken, nee. Verder heeft mysqli_connect() een mooie parameter waarin je de databasenaam kan aangeven, dus mysqli_select_db() is niet nodig. Verder kan je dan met mysqli_connect_error() in die die()-functie een eventuele foutmelding tonen m.b.t. je connectie.

Maar gezien die missende parameter gok ik erop dat de connectie dan wel goed zal zijn.


Ik snap inderdaad wat je bedoeld om er wat meer over te lezen. Ik ben ook zeker bereid om er meer over te gaan leren en er mee bezig te zijn. Maar dit systeem probeer ik werkend te krijgen zodat een van mijn vrienden verder kan gaan met een game. Vandaar dat ik de hulp zoek van mensen die het zeker goed kunnen maken. Ik heb namelijk dit al eens voor elkaar gekregen lang geleden. Maar toen kende ik helemaal de functies van mysqli en function niet. Dat was meer gewoon connectie met de database, kijken of de variable uit de url overeen komt met iets in de tabel. Zoja de waarde die op die rij staat terug sturen en als dat niet gebeurd dan moet je een 0 terug sturen... Vandaar dat ik hoop dat iemand mij daarmee kan helpen? En daar dan uitleg bij kan geven zodat ik dat goed door kan nemen in bekijken.
 
- Ariën  -
Beheerder

- Ariën -

31/10/2014 19:43:28
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$link = mysqli_connect($host,$username,$password,$database) or die(mysqli_connect_error());

die()-functies gebruiken is niet de beste manier, want een script moet ook niet gedwongen stoppen, maar ik gebruik het even om het simpel te houden.
Gewijzigd op 31/10/2014 19:44:34 door - Ariën -
 
Dennis  van DUin

Dennis van DUin

31/10/2014 19:47:00
Quote Anchor link
- Aar - op 31/10/2014 19:43:28:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$link = mysqli_connect($host,$username,$password,$database) or die(mysqli_connect_error());

die()-functies gebruiken is niet de beste manier, want een script moet ook niet gedwongen stoppen, maar ik gebruik het even om het simpel te houden.


Dit heb ik nu als code gebruikt bij link maar er komt geen melding meer maar ook geen reactie vanuit mijn database... Dit is een screen van de database:

Afbeelding

Dit de code nu:
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
<?php

$host
= "localhost";
$username = "pelistar";
$password = "";
$database = "my_pelistar";
$codeinput = $_GET['code'];              

$link = mysqli_connect($host,$username,$password,$database) or die(mysqli_connect_error());

function
useCode($link,$codeinput)
{

    $result = mysqli_query($link, "SELECT * FROM codes WHERE code=" . mysqli_real_escape_string($codeinput)) . " LIMIT 1";

    if($result && $row = mysqli_fetch_assoc($result));
    {

        mysqli_query($link, "DELETE FROM codes WHERE id=" . $row['id']);
        return $row['id'];
    }


    return FALSE;
}


$punten = useCode($link, $codeinput);
echo $punten;

?>
 
- Ariën  -
Beheerder

- Ariën -

31/10/2014 19:51:17
Quote Anchor link
Dan moet je even kijken naar mysqli_query, daar mist ook foutafhandeling met mysqli_error($link). Ook de mysqli_real_escape_string() functie mist een $link, en heeft dus twee argumenten nodig.
Gewijzigd op 31/10/2014 19:52:04 door - Ariën -
 
Dennis  van DUin

Dennis van DUin

31/10/2014 20:02:27
Quote Anchor link
Wat ik wil vragen is de codes bestaan allemaal uit cijfers. Is dit niet erg met de string? Want normaal zijn cijfers integers?

Verder kan je me iets meer uitleg geven? Ik heb je link gevolgd maar daar staat ook een optie zonder $link

Ik krijg nu deze Error met dit als code:
Catchable fatal error: Object of class mysqli_result could not be converted to string in /membri/pelistar/Codes/codesalien.php on line 13

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
<?php

$host
= "localhost";
$username = "pelistar";
$password = "";
$database = "my_pelistar";
$codeinput = $_GET['code'];              

$link = mysqli_connect($host,$username,$password,$database) or die(mysqli_connect_error());

function
useCode($link,$codeinput)
{

    $result = mysqli_query($link, "SELECT * FROM codes WHERE code=" . mysqli_real_escape_string($link,$codeinput)) . " LIMIT 1"or die(mysqli_connect_error());;

    if($result && $row = mysqli_fetch_assoc($result));
    {

        mysqli_query($link, "DELETE FROM codes WHERE id=" . $row['id']);
        return $row['id'];
    }


    return FALSE;
}


$punten = useCode($link, $codeinput);
echo $punten;

?>


Dit is de link die ik volg: http://pelistar.altervista.org/Codes/codesalien.php?code=12345
 

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.