Toon posts:

er verschijnt zomaar '1' in een script

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0Henk 'm!

  • SupremeRick
  • Registratie: Mei 2010
  • Laatst online: 05-06 07:52
Hey Tweakers,

eerste keer dat ik hier actief ga als programmeur van php, en ik heb een raar probleem.

ik heb dus een script gemaakt om menu's te fetchen vanuit een database. en daar probeer ik "widgets" bij in te bouwen door gewoon een url in de database te includen en dan te echoen.
maar.. telkens als ik dat script maak dan zet ie een '1' onder het tabelletje van de include, en ik kan er niet achter komen waarmee dit te maken heeft, dus ik denk ik vraag het hier even.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#not logged in 
if(!$_SESSION['account']){
    $sql = "SELECT * FROM menu WHERE side='1' AND online='0' ORDER BY menu, volgorde";
    $res = mysql_query($sql) or die(mysql_error());
}
#logged in
if($_SESSION['account']){
    $sql = "SELECT * FROM menu WHERE side='1' AND online='1' ORDER BY menu, volgorde";
    $res = mysql_query($sql) or die(mysql_error());
}
        while($row = mysql_fetch_assoc($res)){ 
            if($row['class'] == 'widget'){
                $var = include('../../includes/widgets/'.$row['url'].'.widget.php');
            } else {
                $var = '<td class="space" align="center"></td>';
            }
            echo(''.$var.'');
        }


dat is een stukje van de code, en het stukje dat de widgets aanroept.

de fout in beeld:


ik hoop dat iemand mij kan helpen :S

oh.. belangrijk.. bij de rest van de menu's spawnt deze 1 niet.. maar de code is wel hetzelfde..

[Voor 3% gewijzigd door SupremeRick op 03-07-2011 20:04]

PC: CPU: i9-10900KF @ 4.8GHZ | GFX: MSI Gaming X GTX1080Ti | RAM: GSKILL TridentZ 4x16GB @ 3600MHz | SSD: 2TB | HDD: 1TB | Mobo: Asus Strix Z470-e | Case: Corsair 500D SE | Cooler: Corsair H150i


Acties:
  • 0Henk 'm!

  • martijnve
  • Registratie: December 2004
  • Laatst online: 16-05 14:37
PHP:
1
$var = include('../../includes/widgets/'.$row['url'].'.widget.php');


Als dit lukt wordt $var 1, daarna echo je var.

[Voor 23% gewijzigd door martijnve op 03-07-2011 20:06]

Mini-ITX GamePC: Core i5 3470 | 16GB DDR3 | GTX 970 4GB | Samsung 830 128GB | Dell u2711 (27", IPS,1440p), 2343BW


Acties:
  • 0Henk 'm!

  • SupremeRick
  • Registratie: Mei 2010
  • Laatst online: 05-06 07:52
hoe bedoel je? die waarde staat er nergens in, ik kan het er in zetten ik heb het erin gehad.. maar dan gebeurd er nog niks. het probleem is dat var niet 1 is..

PC: CPU: i9-10900KF @ 4.8GHZ | GFX: MSI Gaming X GTX1080Ti | RAM: GSKILL TridentZ 4x16GB @ 3600MHz | SSD: 2TB | HDD: 1TB | Mobo: Asus Strix Z470-e | Case: Corsair 500D SE | Cooler: Corsair H150i


Acties:
  • 0Henk 'm!

  • Woet
  • Registratie: Mei 2006
  • Laatst online: 19-10-2022
SupremeRick schreef op zondag 03 juli 2011 @ 20:06:
hoe bedoel je? die waarde staat er nergens in, ik kan het er in zetten ik heb het erin gehad.. maar dan gebeurd er nog niks. het probleem is dat var niet 1 is..
De functie "include" returned true of false of het is gelukt, en jij echo'd de return value van die functie via $var

Acties:
  • 0Henk 'm!

  • martijnve
  • Registratie: December 2004
  • Laatst online: 16-05 14:37
http://php.net/manual/en/function.include.php

Je hoeft include niet toe te kennen aan een variable. Hij doet zn werk vanzelf.
Hij returned een boolean, of het includen gelukt is.

Mini-ITX GamePC: Core i5 3470 | 16GB DDR3 | GTX 970 4GB | Samsung 830 128GB | Dell u2711 (27", IPS,1440p), 2343BW


Acties:
  • 0Henk 'm!

  • SupremeRick
  • Registratie: Mei 2010
  • Laatst online: 05-06 07:52
dank jullie.. fix was dus simepeler als ik dacht weer iets bijgeleerd ;).. nogmaals dank :P

[Voor 83% gewijzigd door SupremeRick op 03-07-2011 20:12]

PC: CPU: i9-10900KF @ 4.8GHZ | GFX: MSI Gaming X GTX1080Ti | RAM: GSKILL TridentZ 4x16GB @ 3600MHz | SSD: 2TB | HDD: 1TB | Mobo: Asus Strix Z470-e | Case: Corsair 500D SE | Cooler: Corsair H150i


Acties:
  • 0Henk 'm!

  • Lizard
  • Registratie: Februari 2000
  • Laatst online: 04-06 18:16
fix is simpel, gewoon de '$var =' in regel 13 weghalen

Acties:
  • 0Henk 'm!

  • marcop23
  • Registratie: December 2009
  • Nu online
Wat wil je bereiken?

Als je de inhoud van het bestand wilt hebben, gebruik je file_get_contents. Als je gewoon dat PHP bestand wil includen, kan je dat $var gewoon weg laten.

Acties:
  • 0Henk 'm!

  • martijnve
  • Registratie: December 2004
  • Laatst online: 16-05 14:37
Lizard schreef op zondag 03 juli 2011 @ 20:11:
fix is simpel, gewoon de '$var =' in regel 13 weghalen
en regel 17 verwijderen en gewoon echo op regel 15 zetten.

[Voor 11% gewijzigd door martijnve op 03-07-2011 20:13]

Mini-ITX GamePC: Core i5 3470 | 16GB DDR3 | GTX 970 4GB | Samsung 830 128GB | Dell u2711 (27", IPS,1440p), 2343BW


Acties:
  • 0Henk 'm!

  • datadevil
  • Registratie: Maart 2001
  • Laatst online: 21:14
en stijlwijs: noem alsjeblieft niet je variable $var maar geef het een zinnige naam....leest later wel zo lekker.
Ik zou ook eens kijken naar een wat andere mysql interface, PDO bv.

Acties:
  • 0Henk 'm!

  • SupremeRick
  • Registratie: Mei 2010
  • Laatst online: 05-06 07:52
dank jullie allemaal..

PC: CPU: i9-10900KF @ 4.8GHZ | GFX: MSI Gaming X GTX1080Ti | RAM: GSKILL TridentZ 4x16GB @ 3600MHz | SSD: 2TB | HDD: 1TB | Mobo: Asus Strix Z470-e | Case: Corsair 500D SE | Cooler: Corsair H150i


Acties:
  • 0Henk 'm!

  • SupremeRick
  • Registratie: Mei 2010
  • Laatst online: 05-06 07:52
datadevil schreef op zondag 03 juli 2011 @ 20:12:
en stijlwijs: noem alsjeblieft niet je variable $var maar geef het een zinnige naam....leest later wel zo lekker.
Ik zou ook eens kijken naar een wat andere mysql interface, PDO bv.
zal ik is doen ;)

PC: CPU: i9-10900KF @ 4.8GHZ | GFX: MSI Gaming X GTX1080Ti | RAM: GSKILL TridentZ 4x16GB @ 3600MHz | SSD: 2TB | HDD: 1TB | Mobo: Asus Strix Z470-e | Case: Corsair 500D SE | Cooler: Corsair H150i


Acties:
  • 0Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 29-01 19:43
Mocht dit in de toekomst nog een keer voorkomen dan moet je gaan kijken welke echo de '1' toont. Wat ik meestal doe is even snel een echo "jeej; o.i.d. er in rammen en dan weet ik of die er voor of er na wordt weer gegeven. Op deze wijze kom je er achter welke echo het doet en dan kun je gaan terug redeneren waarom hij dit doet.

Acties:
  • 0Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
2 tips:

PHP:
1
echo(''.$var.'');


de haakjes hoeven niet, echo is een language contruct (geldt ook voor include). En als je alleen een variabele op t scherm wil zetten hoef je dus alleen dit te doen:

PHP:
1
echo $var;


Die lege strings ervoor en erna zijn totaal overbodig en ook nog eens lelijk :)

Acties:
  • 0Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
En ipv de check of je ingelogd bent had ook een else volstaan, * selecteren is niet netjes, je view is niet netjes gescheiden, en die(mysql_error()) moet je ook al nooit doen. :Y)

[Voor 11% gewijzigd door Voutloos op 04-07-2011 09:55]

{signature}


Acties:
  • 0Henk 'm!

  • datadevil
  • Registratie: Maart 2001
  • Laatst online: 21:14
hehe...je vraagt een brood en je krijgt de bakkerij handleiding _/-\o_

Acties:
  • 0Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 26-05 17:59

drm

f0pc0dert

martijnve:
PHP:
1
$var = include('../../includes/widgets/'.$row['url'].'.widget.php');


Als dit lukt wordt $var 1, daarna echo je var.
Niet per definitie trouwens. Het script kan zelf ook iets anders returnen.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
[ melp.nl | twitter ]


Acties:
  • 0Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Klopt, maar als je dat echt wilt gebruiken moet je )&$^@)&^@# eens lezen wat functies zijn. :P

{signature}


Acties:
  • 0Henk 'm!

  • Joostje123
  • Registratie: September 2010
  • Laatst online: 05-06 10:15
Voutloos schreef op maandag 04 juli 2011 @ 09:54:
En ipv de check of je ingelogd bent had ook een else volstaan, * selecteren is niet netjes, je view is niet netjes gescheiden, en die(mysql_error()) moet je ook al nooit doen. :Y)
Waarom moet je nooit die die mysql_error doen?
Ik doe het ook vaak.
Maar dat moet je gewoon eigenlijk alleen voor testen doen als testen klaar is weghalen ofzo?
Maar waarom is het slecht om erin te laten staan?

Acties:
  • 0Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 03:28

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Joostje123 schreef op maandag 04 juli 2011 @ 23:08:
Maar waarom is het slecht om erin te laten staan?
Omdat die errors buiten jouw controle liggen en die kunnen God-knows-what aan informatie prijs geven waar je niet op zit te wachten. Dat kunnen connectiestrings/wachtwoorden zijn of, wat onschuldiger, tabelnamen en veldnamen etc. en alles daar tussenin.

Overigens: let wel: je vraag waarom je nooit "mysql_error" moet doen. Dat is onzin. Je moet nooit die(mysql_error) doen. De mysql_error functie heb je wel degelijk nodig voor (bijv.) het loggen van de fouten of het achterhalen wat er nou eigenlijk precies fout ging (in een catch blok ofzo). En dat giet je dan in een "gebruiksvriendelijk(er)" jasje naar je gebruiker toe i.p.v. lomp die info gewoon te dumpen en het script af te kappen.

[Voor 33% gewijzigd door RobIII op 04-07-2011 23:21]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


Acties:
  • 0Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
• Normale gebruikers kunnen niets met zo'n botte technische foutmelding
• Kwaadwillende kunnen er misschien wel wat mee
• die() != complete foutafhandeling
• Op tig plekken die() aanroepen is niet netjes
• Als de error niet verklapt welke query het is, kan je er zelf ook geen ruk mee
• Kan nog een tijdje doorgaan, maar moet nu gaan slapen :P

Overigens is de 1e reden misschien wel even zo belangrijk als de 2e. Als je namelijk niet lui errors in beeld pleurt en gewoon wat aardigs toont richting je gebruikers, zit je vanzelf goed op het andere punt. :)

Oh ja, anders edit Rob3 zijn post even richting de mijne. :P

[Voor 28% gewijzigd door Voutloos op 04-07-2011 23:23]

{signature}


Acties:
  • 0Henk 'm!

  • SupremeRick
  • Registratie: Mei 2010
  • Laatst online: 05-06 07:52
Cartman! schreef op maandag 04 juli 2011 @ 09:35:
2 tips:

PHP:
1
echo(''.$var.'');


de haakjes hoeven niet, echo is een language contruct (geldt ook voor include). En als je alleen een variabele op t scherm wil zetten hoef je dus alleen dit te doen:

PHP:
1
echo $var;


Die lege strings ervoor en erna zijn totaal overbodig en ook nog eens lelijk :)
ja dit vond ik ook wel raar eigenlijk, dit heeft een maat van mij mee gemaakt, maar aangezien hij geen tijd had op het moment om mij te helpen ging ik even naar tweakers, maar dit is inderdaad niet zo netjes :P.

het enige wat ik nu nog moet doen is de ruimtes tussen de menu's in orde krijgen. kheb nog geen idee hoe ik dat ga doen, want elke poging mislukt die ik probeer :P maar ikg eef niet op xD

[Voor 12% gewijzigd door SupremeRick op 05-07-2011 12:51]

PC: CPU: i9-10900KF @ 4.8GHZ | GFX: MSI Gaming X GTX1080Ti | RAM: GSKILL TridentZ 4x16GB @ 3600MHz | SSD: 2TB | HDD: 1TB | Mobo: Asus Strix Z470-e | Case: Corsair 500D SE | Cooler: Corsair H150i


Acties:
  • 0Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 29-01 19:43
Je kunt van tabellen gaan overstappen naar div-jes.

Acties:
  • 0Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 03:28

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

4Real schreef op dinsdag 05 juli 2011 @ 14:01:
Je kunt van tabellen gaan overstappen naar div-jes. semantisch correcte elementen waar mogelijk
FTFY ;)
Ongeacht of je nou vindt of een menu in (bijv.) een <ul> of whatever hoort; alles in divjes flikkeren is niet de heilige graal: http://www.rikkertkoppes.com/thoughts/2005/01/11/

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


Acties:
  • 0Henk 'm!

  • SupremeRick
  • Registratie: Mei 2010
  • Laatst online: 05-06 07:52
RobIII schreef op dinsdag 05 juli 2011 @ 14:23:
[...]

FTFY ;)
Ongeacht of je nou vindt of een menu in (bijv.) een <ul> of whatever hoort; alles in divjes flikkeren is niet de heilige graal: http://www.rikkertkoppes.com/thoughts/2005/01/11/
4Real schreef op dinsdag 05 juli 2011 @ 14:01:
Je kunt van tabellen gaan overstappen naar div-jes.
ja.. ik kan wel overstappen maar.. der zit een valkuil in.. dit is bijvoorbeeld de code voor een menu en niet een widget:
PHP:
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
# if not logged in
if(!$_SESSION['account']){
    $sql = "SELECT * FROM menu WHERE side='1' AND online='0' AND language='".$_COOKIE['language']."' ORDER BY menu, volgorde";
    $res = mysql_query($sql) or die(mysql_error());
}
# if logged in
elseif($_SESSION['account']){
    $sql = "SELECT * FROM menu WHERE side='1' AND online='1' AND admin='0' AND vip='0' AND language='".$_COOKIE['language']."' ORDER BY menu, volgorde";
    $res = mysql_query($sql) or die(mysql_error());
}
        echo('<table width="100%" align="center" class="main" cellpadding="0" cellspacing="0">');
        while($row = mysql_fetch_assoc($res)){
            if($row['class'] == 'header'){
                $var = '<td class="head" align="center" background="../../templates/'.$template.'/images/'.$row['img'].'"><font color="'.$row['color'].'"><strong>'.$row['name'].'</strong></font></td>';
            } elseif($row['class'] == 'link'){
                $img = '<img src="../../images/icons/'.$row['img'].'" width="16" height="16">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
                $var = '<td class="link" align="left">'.$img.'<a href="?p='.$row['url'].'"><font color="'.$row['color'].'">'.$row['name'].'</font></a></td>';
            } else {
                $var = '<td class="space" align="center"></td>';
            }
            echo('
                <tr>
                    '.$var.'
                </tr>
            ');
        }
        echo('</table>');

werkt goed, tenminste als alleen maar dit in het bestand staat, ik heb nog zo'n ding erbij staan voor admin en voor een paar andere levels. maar nu krijg ik niet gewilde ruimtes er tussen.

dan zie je nu ook meteen waar die vars oorspronkelijk vandaan kwamen.

als ik hier divjes ga maken dan gaan ze allemaal uit elkaar. dat wil ik niet. ik heb 2 classes onder 1 menu.
menu = 1 in de database en daar selecteerd ie nu op en daarna op de volgorde, in een menu kunnen meerdere headers en meerdere links. en die moeten bij elkaar blijven staan, zodra ik in de database zeg van dit is menu 2 dan moet ie splitsen.

[Voor 8% gewijzigd door SupremeRick op 05-07-2011 15:27]

PC: CPU: i9-10900KF @ 4.8GHZ | GFX: MSI Gaming X GTX1080Ti | RAM: GSKILL TridentZ 4x16GB @ 3600MHz | SSD: 2TB | HDD: 1TB | Mobo: Asus Strix Z470-e | Case: Corsair 500D SE | Cooler: Corsair H150i


Acties:
  • 0Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 03:28

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Ho-ly... Je hebt wel andere problemen voorlopig i.p.v. tables/divs/ul's. Lees je eens in in SQL injection (en escaping in 't algemeen, want wat htmlentities/htmlspecialchars kunnen her-en-der waarschijnlijk ook geen kwaad), laat die "die()" op diverse plekken vallen zoals gezegd en ga in hemelsnaam even fatsoenlijk in functies e.d. werken i.p.v. deze spaghetticode...

[Voor 74% gewijzigd door RobIII op 05-07-2011 15:32]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


Acties:
  • 0Henk 'm!

  • SupremeRick
  • Registratie: Mei 2010
  • Laatst online: 05-06 07:52
RobIII schreef op dinsdag 05 juli 2011 @ 15:27:
Ho-ly... Je hebt wel andere problemen voorlopig i.p.v. tables/divs/ul's. Lees je eens in in SQL injection (en escaping in 't algemeen, want wat htmlentities/htmlspecialchars kunnen her-en-der waarschijnlijk ook geen kwaad), laat die "die()" op diverse plekken vallen zoals gezegd en ga in hemelsnaam even fatsoenlijk in functies e.d. werken i.p.v. deze spaghetticode...
dat zit allemaal in m'n config bestand dat dat niet gaat...die zit bij elka pagina in begrepen en die check elke sql querry of er geinjected word

PC: CPU: i9-10900KF @ 4.8GHZ | GFX: MSI Gaming X GTX1080Ti | RAM: GSKILL TridentZ 4x16GB @ 3600MHz | SSD: 2TB | HDD: 1TB | Mobo: Asus Strix Z470-e | Case: Corsair 500D SE | Cooler: Corsair H150i


Acties:
  • 0Henk 'm!

  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 21:27
PHP:
1
2
$sql = "SELECT * FROM menu WHERE side='1' AND online='1' AND admin='0' AND vip='0' AND language='".$_COOKIE['language']."' ORDER BY menu, volgorde"; 
    $res = mysql_query($sql) or die(mysql_error());

Sorry, maar als iemand dus met zijn cookie gaat knutselen dan ben jij je database kwijt. Er zit hier geen escaping in. Je hebt die query en de regel daaronder voer je hem direct uit. Daarnaast staat ook je error open en bloot in het scherm wat je echt niet wilt.

Acties:
  • 0Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 03:28

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

SupremeRick schreef op dinsdag 05 juli 2011 @ 15:32:
[...]

dat zit allemaal in m'n config bestand dat dat niet gaat...die zit bij elka pagina in begrepen en die check elke sql querry of er geinjected word
Sorry, maar je mist echt serieus een stuk kennis; ik weet niet wat een config bestand hiermee van doen heeft (en waarom een config bestand überhaupt zaken zou doen anders dan configwaardes bevatten) maar als je alle $_SESSION, $_COOKIE etc. daarin gaat zitten wijzigen/escapen ben je echt verkeerd bezig.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


Acties:
  • 0Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 01:13

Firesphere

Yoshis before Hoshis

RobIII schreef op dinsdag 05 juli 2011 @ 15:27:
Ho-ly... Je hebt wel andere problemen voorlopig i.p.v. tables/divs/ul's. Lees je eens in in SQL injection (en escaping in 't algemeen, want wat htmlentities/htmlspecialchars kunnen her-en-der waarschijnlijk ook geen kwaad), laat die "die()" op diverse plekken vallen zoals gezegd en ga in hemelsnaam even fatsoenlijk in functies e.d. werken i.p.v. deze spaghetticode...
Jep, even een simpel voorbeeldje:
Je gebruikt $_COOKIE['language'] in je sql-query-string.
Zonder te escapen (in php simpelweg mysql_real_query_string dacht ik?).

Als ik m'n cookie inlees, de value van 'language' aanpas naar een complete query-string, kan alles uitgelezen worden.

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


Acties:
  • 0Henk 'm!

  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 21:27
Firesphere schreef op dinsdag 05 juli 2011 @ 15:34:
[...]

Jep, even een simpel voorbeeldje:
Je gebruikt $_COOKIE['language'] in je sql-query-string.
Zonder te escapen (in php simpelweg mysql_real_query_string dacht ik?).

Als ik m'n cookie inlees, de value van 'language' aanpas naar een complete query-string, kan alles uitgelezen worden.
lama...

[Voor 4% gewijzigd door MuddyMagical op 05-07-2011 15:35]


Acties:
  • 0Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 03:28

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

MuddyMagical schreef op dinsdag 05 juli 2011 @ 15:34:
PHP:
1
2
$sql = "SELECT * FROM menu WHERE side='1' AND online='1' AND admin='0' AND vip='0' AND language='".$_COOKIE['language']."' ORDER BY menu, volgorde"; 
    $res = mysql_query($sql) or die(mysql_error());

Sorry, maar als iemand dus met zijn cookie gaat knutselen dan ben jij je database kwijt. Er zit hier geen escaping in. Je hebt die query en de regel daaronder voer je hem direct uit. Daarnaast staat ook je error open en bloot in het scherm wat je echt niet wilt.
Wat ik uit deze reply denk te begrijpen is dat 'ie alles 'escaped' a-la:
code:
1
2
foreach ($_COOKIES as $k=>$v)
  $_COOKIES[$k] = mysql_real_escape_string($v);


Alleen is dat een compleet verkeerde manier van escapen (althans: op de verkeerde plaats).

[Voor 5% gewijzigd door RobIII op 05-07-2011 15:37]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


Acties:
  • 0Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Firesphere schreef op dinsdag 05 juli 2011 @ 15:34:
[...]

Jep, even een simpel voorbeeldje:
Je gebruikt $_COOKIE['language'] in je sql-query-string.
Zonder te escapen (in php simpelweg mysql_real_query_string dacht ik?).

Als ik m'n cookie inlees, de value van 'language' aanpas naar een complete query-string, kan alles uitgelezen worden.
Kan die mythe nou eens ophouden te bestaan:
multiple queries are not supported

[Voor 36% gewijzigd door CodeCaster op 05-07-2011 15:40]

https://oneerlijkewoz.nl
I have these thoughts / so often I ought / to replace that slot / with what I once bought / 'cause somebody stole my car radio / and now I just sit in silence


Acties:
  • 0Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 01:13

Firesphere

Yoshis before Hoshis

CodeCaster schreef op dinsdag 05 juli 2011 @ 15:39:
[...]

Kan die mythe nou eens ophouden te bestaan:

[...]
cookie:
'nl' AND {vul hier maar in} AND {vul in = dit} JOIN {gok hier wat}

daarom zei ik, een query-string. Niet een complete query. (hoewel die join nog wel eens zou kunnen falen, maar het gaat om het idee van sql-injectie)

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


Acties:
  • 0Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

True, dat kan wel. Ik reageerde eerst op de reactie onder je, maar die is stiekem weggeëdit. :P

https://oneerlijkewoz.nl
I have these thoughts / so often I ought / to replace that slot / with what I once bought / 'cause somebody stole my car radio / and now I just sit in silence


Acties:
  • 0Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 01:13

Firesphere

Yoshis before Hoshis

CodeCaster schreef op dinsdag 05 juli 2011 @ 15:44:
True, dat kan wel. Ik reageerde eerst op de reactie onder je, maar die is stiekem weggeëdit. :P
haha, daar wilde ik ook op reageren, maar toen stond er al "lama"

anyway.
Back "on" topic (topic wijzigen naar "how not to write good code"?).

Deze code is absoluut een ramp. Ik zou echt aanraden om te beginnen met werken in een framework. Zend, Silverstripe zijn erg fijn in mijn ervaring.

Het levert 100x nettere code op, en je hoeft je bij algemeen gebruik geen zorgen te maken over escaping, dat doet het framework voor je.

En html in de code... hoeft dan ook niet meer. (Hoewel, vooral in oudere frameworks van Zend, pre 1.6 geloof ik, had je dat nog wel echt nodig)

HTML en script scheiden is altijd beter.

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


Acties:
  • 0Henk 'm!

  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 21:27
CodeCaster schreef op dinsdag 05 juli 2011 @ 15:44:
True, dat kan wel. Ik reageerde eerst op de reactie onder je, maar die is stiekem weggeëdit. :P
Niks stiekem. Jij bent 4 minuten te laat.. :P

Maar terug naar het onderwerp. Ik ben nu wel benieuwd of TS zoals RobIII zijn cookie values escaped.

Acties:
  • 0Henk 'm!

  • -DarkShadow-
  • Registratie: December 2001
  • Niet online
Firesphere schreef op dinsdag 05 juli 2011 @ 15:46:
[...]

haha, daar wilde ik ook op reageren, maar toen stond er al "lama"

anyway.
Back "on" topic (topic wijzigen naar "how not to write good code"?).

Deze code is absoluut een ramp. Ik zou echt aanraden om te beginnen met werken in een framework. Zend, Silverstripe zijn erg fijn in mijn ervaring.

Het levert 100x nettere code op, en je hoeft je bij algemeen gebruik geen zorgen te maken over escaping, dat doet het framework voor je.

En html in de code... hoeft dan ook niet meer. (Hoewel, vooral in oudere frameworks van Zend, pre 1.6 geloof ik, had je dat nog wel echt nodig)

HTML en script scheiden is altijd beter.
Leren hoe het moet lijkt me beter dan een framework gebruiken. Het is moeilijk om een veilige app te schrijven als je basis beveiligingsmethodes niet kent, framework of niet.

Specialist in:
Soldeerstations
Oscilloscoop


Acties:
  • 0Henk 'm!

  • SupremeRick
  • Registratie: Mei 2010
  • Laatst online: 05-06 07:52
ik ga iig effe uitzoeken hoe dat zit met die escape strings

PC: CPU: i9-10900KF @ 4.8GHZ | GFX: MSI Gaming X GTX1080Ti | RAM: GSKILL TridentZ 4x16GB @ 3600MHz | SSD: 2TB | HDD: 1TB | Mobo: Asus Strix Z470-e | Case: Corsair 500D SE | Cooler: Corsair H150i


  • drm
  • Registratie: Februari 2001
  • Laatst online: 26-05 17:59

drm

f0pc0dert

Voutloos:
Klopt, maar als je dat echt wilt gebruiken moet je )&$^@)&^@# eens lezen wat functies zijn. :P
offtopic:
Mwah, 't is best handig voor gecompileerde configfiles bijvoorbeeld. Denk aan iets als:
file_put_contents('foo.php', '<?php return ' . var_export($someContainer->toArray()) .';');
// ergens anders
$settings = include 'foo.php';

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
[ melp.nl | twitter ]

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee