abonnement Unibet Coolblue Bitvavo
  woensdag 9 februari 2011 @ 23:04:24 #153
334357 Emery
Heavy Metal King!
pi_92572025
quote:
1s.gif Op woensdag 9 februari 2011 23:03 schreef princesselisah het volgende:
Jezus, begrijp hier helemaal niets van. Is dat dan alleen omdat ik een meisje ben? ;)
Zie Tegan.
"My name is Emery and primarily I make noises - and ideas".
  woensdag 9 februari 2011 @ 23:04:48 #154
75592 GlowMouse
l'état, c'est moi
pi_92572045
quote:
14s.gif Op woensdag 9 februari 2011 22:54 schreef Tegan het volgende:

[..]

Ik snap het gelukkig ook niet echt.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  woensdag 9 februari 2011 @ 23:06:24 #155
334357 Emery
Heavy Metal King!
pi_92572152
hoi.php\T
"My name is Emery and primarily I make noises - and ideas".
pi_92572164
Ik snap dat ik het niet snap, en dat ik dus extreem voorzichtig moet zijn met iedere vorm van user input. Dat is genoeg.
pi_92573314
quote:
9s.gif Op woensdag 9 februari 2011 23:06 schreef Emery het volgende:
hoi.php\T
hoi.php\R
hoi.php\N

Dit zou wel flauw zijn.
  donderdag 10 februari 2011 @ 00:03:50 #158
334357 Emery
Heavy Metal King!
pi_92574815
Ik snap het nog steeds niet echt.
"My name is Emery and primarily I make noises - and ideas".
pi_92575086
Die eerste snap je toch wel?
pi_92575335
quote:
10s.gif Op donderdag 10 februari 2011 00:03 schreef Emery het volgende:
Ik snap het nog steeds niet echt.
Het is een demonstratie van een veelgebruikte hacktechniek.

Iemand denkt: "Ik maak een website waar mensen bestanden kunnen uploaden, maar geen .php-bestanden, want het is natuurlijk niet de bedoeling dat iemand anders scripts uitvoert op mijn server"
Maar glowmouse laat ziet dat het vrij eenvoudig is met wat ongebruikelijke tekens, toch een .php-bestand te uploaden wat dus gewoon uitvoerbaar is. Kortom de beveiliging deugt niet.
  donderdag 10 februari 2011 @ 09:31:31 #161
302853 themole
graaft totaal door.
pi_92579958
quote:
1s.gif Op donderdag 10 februari 2011 00:15 schreef KomtTijd... het volgende:

[..]

Het is een demonstratie van een veelgebruikte hacktechniek.

Iemand denkt: "Ik maak een website waar mensen bestanden kunnen uploaden, maar geen .php-bestanden, want het is natuurlijk niet de bedoeling dat iemand anders scripts uitvoert op mijn server"
Maar glowmouse laat ziet dat het vrij eenvoudig is met wat ongebruikelijke tekens, toch een .php-bestand te uploaden wat dus gewoon uitvoerbaar is. Kortom de beveiliging deugt niet.
Dus wat je beter kan doen is ervoor zorgen dat er geen scripts worden uitgevoerd in de map waar je de spullen upload. Daarnaast kan je voor de zekerheid nog steeds die beveiliging inbouwen in het uploadscript.
Niet altijd serieus
  donderdag 10 februari 2011 @ 09:37:34 #162
91039 mstx
2x1/2 = 1/2 x 1/2
pi_92580071
quote:
14s.gif Op donderdag 10 februari 2011 09:31 schreef themole het volgende:

[..]

Dus wat je beter kan doen is ervoor zorgen dat er geen scripts worden uitgevoerd in de map waar je de spullen upload. Daarnaast kan je voor de zekerheid nog steeds die beveiliging inbouwen in het uploadscript.
Of je maakt gewoon een whitelist van de extensies ipv een blacklist.
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_92580904
quote:
14s.gif Op donderdag 10 februari 2011 09:37 schreef mstx het volgende:

[..]

Of je maakt gewoon een whitelist van de extensies ipv een blacklist.
Dat, plus http://mysql-apache-php.com/fileupload-security.htm (behalve dan de blacklist gedeelte).

[ Bericht 3% gewijzigd door #ANONIEM op 10-02-2011 10:17:14 ]
pi_92581911
Nu we het hier toch over hebben, als je een bestand laat uploaden, maar niet opslaat maar direct vanaf de tmp locatie gebruikt. Dan kan iemand daar verder weinig mee doen toch?

dit ivm die XML-functie die ik geschreven heb. Als het bestand geen XML is volgens het juiste schema, gebeurt er verder niets met het bestand.
  donderdag 10 februari 2011 @ 12:39:21 #165
75592 GlowMouse
l'état, c'est moi
pi_92584958
quote:
14s.gif Op donderdag 10 februari 2011 09:37 schreef mstx het volgende:

[..]

Of je maakt gewoon een whitelist van de extensies ipv een blacklist.
Als ik != '.php' in mijn script vervang door == '.jpg', dan is dat niet veiliger.
quote:
1s.gif Op donderdag 10 februari 2011 10:16 schreef Scorpie het volgende:

[..]

Dat, plus http://mysql-apache-php.com/fileupload-security.htm (behalve dan de blacklist gedeelte).
De tekst op de pagina mist wat essentiële zaken. Hun blacklist faalt ook hard, en "Because your upload folder permission is 777, your site user are free to upload anything." suggereert een grote onwaarheid. Getimagesize geeft geen garantie dat er ook daadwerkelijk een plaatje geüpload is. Met het script zoals het daar staat, kan ik .php-files op de server krijgen :)
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  donderdag 10 februari 2011 @ 12:50:14 #166
75592 GlowMouse
l'état, c'est moi
pi_92585336
quote:
2s.gif Op donderdag 10 februari 2011 10:51 schreef KomtTijd... het volgende:
Nu we het hier toch over hebben, als je een bestand laat uploaden, maar niet opslaat maar direct vanaf de tmp locatie gebruikt. Dan kan iemand daar verder weinig mee doen toch?
Dat ligt er maar net aan. Tegenwoordig zijn remote file inclusions per configuratie uitgeschakeld, maar local file inclusions niet. Een slecht script kan daardoor lokale bestanden includen. Gedurende de looptijd van je script is het bestand op de tmp locatie beschikbaar.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92586211
1WHERE (DATE(starttime) = MAX(DATE(starttime))

1FATAL SQL ERROR: Invalid use of group function

Wat doe ik fout? ;(
pi_92586348
quote:
1s.gif Op donderdag 10 februari 2011 12:50 schreef GlowMouse het volgende:

[..]

Dat ligt er maar net aan. Tegenwoordig zijn remote file inclusions per configuratie uitgeschakeld, maar local file inclusions niet. Een slecht script kan daardoor lokale bestanden includen. Gedurende de looptijd van je script is het bestand op de tmp locatie beschikbaar.
Maar dan moet iemand dus eerst al een script op je server planten wat 'm include... Als je zo ver bent heb je dat al niet meer nodig.
  donderdag 10 februari 2011 @ 13:24:16 #169
75592 GlowMouse
l'état, c'est moi
pi_92586385
Dit moet met een subquery: WHERE DATE(starttime)= (SELECT MAX(DATE(....
quote:
1s.gif Op donderdag 10 februari 2011 13:22 schreef KomtTijd... het volgende:

[..]

Maar dan moet iemand dus eerst al een script op je server planten wat 'm include... Als je zo ver bent heb je dat al niet meer nodig.
Ik heb het daarom ook over een slecht script dat zich al op de server bevindt. Zeker in shared hosting situaties heb je het niet altijd voor het zeggen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92586481
quote:
1s.gif Op donderdag 10 februari 2011 13:24 schreef GlowMouse het volgende:
Dit moet met een subquery: WHERE DATE(starttime)= (SELECT MAX(DATE(....

*O*
quote:
Ik heb het daarom ook over een slecht script dat zich al op de server bevindt. Zeker in shared hosting situaties heb je het niet altijd voor het zeggen.
Hmm goed punt.
pi_92587668
quote:
1s.gif Op donderdag 10 februari 2011 13:17 schreef KomtTijd... het volgende:

[ code verwijderd ]

[ code verwijderd ]

Wat doe ik fout? ;(
Kan je niet gewoon SELECT MAX(starttime) doen?
  donderdag 10 februari 2011 @ 14:46:49 #172
75592 GlowMouse
l'état, c'est moi
pi_92589005
quote:
1s.gif Op donderdag 10 februari 2011 14:11 schreef remi1986 het volgende:

[..]

Kan je niet gewoon SELECT MAX(starttime) doen?
Wat als je ook meer informatie wilt over wat er op die tijd is? Je kunt ook aflopend op starttijd sorteren icm limit 1, maar dat is minder snel als je geen index op starttijd hebt.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92589325
quote:
Op donderdag 10 februari 2011 14:11 schreef remi1986 het volgende:

[..]

Kan je niet gewoon SELECT MAX(starttime) doen?
Nee, ik wil alle vluchten zien van de laatste vliegdag. Ik moet dus 1) weten welke dag de laatste vliegdag was, en 2) welke vluchten er toen zijn gemaakt.
Bovendien is starttime een datetime veld, dus ik moet alleen de date hebben, anders vindt'ie alleen vluchten die op de seconde gelijk gestart zijn...
  donderdag 10 februari 2011 @ 15:00:29 #174
75592 GlowMouse
l'état, c'est moi
pi_92589487
Als je tabel heel veel vliegdagen gaat bevatten, zal het sneller zijn om met een index op starttime te doen starttime >= (SELECT F(MAX(DATE(starttime))) FROM ...)
waarbij je even moet zoeken wat je voor F moet gebruiken om een datetime te krijgen met die datum en als tijdstip 00:00:00.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92589959
is 1000 veel of is 1.000.000 veel?
  donderdag 10 februari 2011 @ 15:22:29 #176
75592 GlowMouse
l'état, c'est moi
pi_92590288
Een miljoen verschillende dagen is erg veel, dan heb je het over minimaal 2739 jaar tussen de eerste en de laatste vliegdag. Wanneer het over vliegtuigen gaat en niet over diertjes, zul je op zijn vroegst in 1903 beginnen met tellen. De kans is klein dat je software in 4642 nog gebruikt wordt.

Bij 1000 dagen zul je de optimalisatie al zeker merken.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92590911
quote:
Op donderdag 10 februari 2011 15:22 schreef GlowMouse het volgende:
Een miljoen verschillende dagen is erg veel, dan heb je het over minimaal 2739 jaar tussen de eerste en de laatste vliegdag. Wanneer het over vliegtuigen gaat en niet over diertjes, zul je op zijn vroegst in 1903 beginnen met tellen. De kans is klein dat je software in 4642 nog gebruikt wordt.

Bij 1000 dagen zul je de optimalisatie al zeker merken.
Dat bedoel ik, als het pas vanaf een miljoen aan gaat tikken zou het in dit geval een zinloze micro-optimalisatie zijn. 't Hoeft sowieso geen high-performance applicatie te worden maar als de pageload tijden wat omlaag kunnen is natuurlijk altijd leuk...
pi_92590930
Wat je natuurlijk wel kan hebben is meerdere vliegdata op één dag. Als je dan kijkt naar de where date= max(date) (met die subquery) heb je wel meer records
  donderdag 10 februari 2011 @ 19:00:07 #179
75592 GlowMouse
l'état, c'est moi
pi_92600087
Het aantal reacties valt tegen. Dan zal ik het maar verklappen. Pak dit stukje code:
1
2
3
4
5
6
<?php
$filename 
'hoi.php' chr(0) . '.txt';
$filename trim($filename);
if(
substr($filename, -4) != '.txt') die();
touch($filename);
?>
De check op regel4 wordt zonder problemen doorlopen: de laatste vier karakters zijn '.txt'. Bij touch wordt er een stukje C-code uitgevoerd, en in C houden strings op na een nul-byte.
Op http://mysql-apache-php.com/fileupload-security.htm staat dit stukje:
1
2
3
4
5
6
7
8
<?php
//check if its image file

if (!getimagesize($_FILES['imagefile']['tmp_name']))
{ echo 
"Invalid Image File...";
exit();
}
?>
Deze check voorkomt niet dat er php-code op de server komt. Een plaatje is een file, en een file is gewoon opgebouwd uit bytes. Ergens tussen die bytes kunnen best de volgende zitten: <?php echo 'hoi'; ?>. Een plaatje met die code kun je makkelijk zelf maken door met een hex-editor een plaatje te editten en wat bytes te overschrijven. Het resulterende plaatje ziet er niet uit, maar dat ziet de software niet :) Net als bij een html-file, wordt alles tussen <?php en ?> uitgevoerd als PHP-code (en de rest van de file wordt gewoon doorgegeven).
Dit kun je maar op één manier voorkomen. Je kunt het plaatje resizen, maar ondanks dat het een stuk lastiger om een plaatje te vinden dat na resizen de code <?php echo 'hoi'; ?> bevat, is het niet onmogelijk. De manier is daarom om plaatjes waar <?php in voorkomt gewoon te blokkeren. Als plaatjes 1MB zijn, kun je de kans p berekenen dat je een plaatje ten onrechte afkeurt (onder de aanname dat de 0/1'en willekeurig, onafhankelijk en identiek zijn verdeeld):
<?php is vijf bytes. De kans dat vijf willekeurige bytes niet overeenkomen met <?php, is 1-(1/256)5. Je wilt dat in de file van 1MB alle vijf opvolgende bytes verschillend zijn. Er zijn ongeveer een miljoen opeenvolgende series van vijf bytes in een bestand van 1MB. De kans dat er geen <?php in je file zit, is ongeveer 1-p = (1-(1/256)5)1.000.000. Dit is lastig om nauwkeurig te berekenen, daarom pakken we de logaritme: log(1-p) = 1.000.000 log(1-(1/256)5) ~= -10-6. Omdat voor kleine p geldt dat log(1-p) = -p, weten we dat p = 10-6. Je keurt dus één op de miljoen files ten onrechte af.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92601229
quote:
9s.gif Op donderdag 10 februari 2011 19:00 schreef GlowMouse het volgende:
Het aantal reacties valt tegen. Dan zal ik het maar verklappen. Pak dit stukje code:

[ code verwijderd ]

De check op regel4 wordt zonder problemen doorlopen: de laatste vier karakters zijn '.txt'. Bij touch wordt er een stukje C-code uitgevoerd, en in C houden strings op na een nul-byte.
Op http://mysql-apache-php.com/fileupload-security.htm staat dit stukje:

[ code verwijderd ]

Deze check voorkomt niet dat er php-code op de server komt. Een plaatje is een file, en een file is gewoon opgebouwd uit bytes. Ergens tussen die bytes kunnen best de volgende zitten: <?php echo 'hoi'; ?>. Een plaatje met die code kun je makkelijk zelf maken door met een hex-editor een plaatje te editten en wat bytes te overschrijven. Het resulterende plaatje ziet er niet uit, maar dat ziet de software niet :) Net als bij een html-file, wordt alles tussen <?php en ?> uitgevoerd als PHP-code (en de rest van de file wordt gewoon doorgegeven).
Dit kun je maar op één manier voorkomen. Je kunt het plaatje resizen, maar ondanks dat het een stuk lastiger om een plaatje te vinden dat na resizen de code <?php echo 'hoi'; ?> bevat, is het niet onmogelijk. De manier is daarom om plaatjes waar <?php in voorkomt gewoon te blokkeren. Als plaatjes 1MB zijn, kun je de kans p berekenen dat je een plaatje ten onrechte afkeurt (onder de aanname dat de 0/1'en willekeurig, onafhankelijk en identiek zijn verdeeld):
<?php is vijf bytes. De kans dat vijf willekeurige bytes niet overeenkomen met <?php, is 1-(1/256)5. Je wilt dat in de file van 1MB alle vijf opvolgende bytes verschillend zijn. Er zijn ongeveer een miljoen opeenvolgende series van vijf bytes in een bestand van 1MB. De kans dat er geen <?php in je file zit, is ongeveer 1-p = (1-(1/256)5)1.000.000. Dit is lastig om nauwkeurig te berekenen, daarom pakken we de logaritme: log(1-p) = 1.000.000 log(1-(1/256)5) ~= -10-6. Omdat voor kleine p geldt dat log(1-p) = -p, weten we dat p = 10-6. Je keurt dus één op de miljoen files ten onrechte af.
Hier raakte je me kwijt. Maar het is ook niet echt belangrijk dat je sommige files ten onrechte afkeurt, als je maar zeker weet dat er geen .php-bestanden op je server terecht komen :) .
  donderdag 10 februari 2011 @ 19:23:00 #181
75592 GlowMouse
l'état, c'est moi
pi_92601405
Ik gebruik log(ab) = b*log(a) en log(1+x)=x (voor kleine x).
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92621537
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
if (isset($params['submit']) )
{
    
$filter='';
    
$test false;
    if (isset(
$params['select_date']) && $params['select_date'] != '')
    {
        if (
$test) {$filter .=' AND ';}
        
$filter .= '(DATE(starttime) = \''.$params['select_date'].'\')';
        
$test true;
    }
    if (isset(
$params['select_pilot']) && $params['select_pilot'] != '')
    {
        if (
$test) {$filter .=' AND ';}
        
$filter .= '(firstpilot_id = '.$params['select_pilot'].' or secondpilot_id = '.$params['select_pilot'].')';
        
$test true;
    }
    if (isset(
$params['select_airplane']) && $params['select_airplane'] != '')
    {
        if (
$test) {$filter .=' AND ';}
        
$filter .= '(airplane = \''.$params['select_airplane'].'\')';
        
$test true;
    }
}
?>

Kan dit efficienter?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if (isset($params['submit']) )
{
    
$filter='1=1';
    
$test false;
    if (isset(
$params['select_date']) && $params['select_date'] != '')
    {
        
$filter .= ' AND (DATE(starttime) = \''.$params['select_date'].'\')';
    }
    if (isset(
$params['select_pilot']) && $params['select_pilot'] != '')
    {
        
$filter .= ' AND (firstpilot_id = '.$params['select_pilot'].' or secondpilot_id = '.$params['select_pilot'].')';
    }
    if (isset(
$params['select_airplane']) && $params['select_airplane'] != '')
    {
        
$filter .= ' AND (airplane = \''.$params['select_airplane'].'\')';
    }
}
?>
Dit leek me al makkelijker maar die 1=1 is natuurlijk wel soort van ranzig :')
  vrijdag 11 februari 2011 @ 01:17:19 #183
75592 GlowMouse
l'état, c'est moi
pi_92621594
iets met imploden op AND?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92621745
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if (isset($params['submit']) )
{
    
$filterarr=Array();
    if (isset(
$params['select_date']) && $params['select_date'] != '')
        
$filterarr[1] = '(DATE(starttime) = \''.$params['select_date'].'\')';
    if (isset(
$params['select_pilot']) && $params['select_pilot'] != '')
        
$filterarr[2] = '(firstpilot_id = '.$params['select_pilot'].' or secondpilot_id = '.$params['select_pilot'].')';
    if (isset(
$params['select_airplane']) && $params['select_airplane'] != '')
        
$filterarr[3] = '(airplane = \''.$params['select_airplane'].'\')';
    
$filter=implode(' AND ',$filterarr);
}
?>

Thnx!
  vrijdag 11 februari 2011 @ 01:25:23 #185
75592 GlowMouse
l'état, c'est moi
pi_92621782
waarom keys gebruiken als [] volstaat?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92621905
Omdat het laat is!
  vrijdag 11 februari 2011 @ 01:32:24 #187
63192 ursel
"Het Is Hier Fantastisch!
pi_92621932
quote:
9s.gif Op donderdag 10 februari 2011 19:00 schreef GlowMouse het volgende:
Het aantal reacties valt tegen. Dan zal ik het maar verklappen. Pak dit stukje code:

[ code verwijderd ]

De check op regel4 wordt zonder problemen doorlopen: de laatste vier karakters zijn '.txt'. Bij touch wordt er een stukje C-code uitgevoerd, en in C houden strings op na een nul-byte.
Op http://mysql-apache-php.com/fileupload-security.htm staat dit stukje:

[ code verwijderd ]

Deze check voorkomt niet dat er php-code op de server komt. Een plaatje is een file, en een file is gewoon opgebouwd uit bytes. Ergens tussen die bytes kunnen best de volgende zitten: <?php echo 'hoi'; ?>. Een plaatje met die code kun je makkelijk zelf maken door met een hex-editor een plaatje te editten en wat bytes te overschrijven. Het resulterende plaatje ziet er niet uit, maar dat ziet de software niet :) Net als bij een html-file, wordt alles tussen <?php en ?> uitgevoerd als PHP-code (en de rest van de file wordt gewoon doorgegeven).
Dit kun je maar op één manier voorkomen. Je kunt het plaatje resizen, maar ondanks dat het een stuk lastiger om een plaatje te vinden dat na resizen de code <?php echo 'hoi'; ?> bevat, is het niet onmogelijk. De manier is daarom om plaatjes waar <?php in voorkomt gewoon te blokkeren. Als plaatjes 1MB zijn, kun je de kans p berekenen dat je een plaatje ten onrechte afkeurt (onder de aanname dat de 0/1'en willekeurig, onafhankelijk en identiek zijn verdeeld):
<?php is vijf bytes. De kans dat vijf willekeurige bytes niet overeenkomen met <?php, is 1-(1/256)5. Je wilt dat in de file van 1MB alle vijf opvolgende bytes verschillend zijn. Er zijn ongeveer een miljoen opeenvolgende series van vijf bytes in een bestand van 1MB. De kans dat er geen <?php in je file zit, is ongeveer 1-p = (1-(1/256)5)1.000.000. Dit is lastig om nauwkeurig te berekenen, daarom pakken we de logaritme: log(1-p) = 1.000.000 log(1-(1/256)5) ~= -10-6. Omdat voor kleine p geldt dat log(1-p) = -p, weten we dat p = 10-6. Je keurt dus één op de miljoen files ten onrechte af.
_O_ held.
Mooi stukje les in dit topic zeg. :Y
pi_92621985
1
2
3
<?php
if (count($filterarr) >> )
?>
is ook veel accurater dan
1
2
3
<?php
if (isset($params['submit']) )
?>

(dat het formulier verstuurd is betekent niet dat er ook wat ingevuld is)
pi_92622588
1
2
3
<?php
SELECT TIME_FORMAT
(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(landingtime,starttime)))),"%k:%i") AS totaltime
?>

Hiervan heb ik ook het idee dat het efficienter kan :@
Doel: de totale vlieguren van alle vluchten in een bepaalde selectie
pi_92626120
quote:
10s.gif Op vrijdag 11 februari 2011 02:10 schreef KomtTijd... het volgende:

[ code verwijderd ]

Hiervan heb ik ook het idee dat het efficienter kan :@
Doel: de totale vlieguren van alle vluchten in een bepaalde selectie
Just a thought, maar neem aan dat het veldtype DATETIME is ? Kan je dan niet met SUM en TIMEDIFF het verschil berekenen (of een totaal aantal uren) en met PHP de datum/tijd formatten met date() of mktime() ?
pi_92626341
quote:
1s.gif Op donderdag 10 februari 2011 15:00 schreef GlowMouse het volgende:
Als je tabel heel veel vliegdagen gaat bevatten, zal het sneller zijn om met een index op starttime te doen starttime >= (SELECT F(MAX(DATE(starttime))) FROM ...)
waarbij je even moet zoeken wat je voor F moet gebruiken om een datetime te krijgen met die datum en als tijdstip 00:00:00.
Je kunt beter DATE(MAX(starttime)) gebruiken. En voor zover ik weet wordt de tijdcomponent van een date-field op 0 gesteld als je gaat vergelijken met een datetime, dus daar heb je geen extra functie F voor nodig.
pi_92626466
SUM(TIMEDIFF(tijd,tijd) ging fout. Dan telt hij niet goed op (blijkbaar kan SUM niet echt tijden optellen. Vandaar eerst de conversie naar seconden en daarna weer terug naar time. En ja ergens moet je de tijd formatten, helaas kan ik dat in dit geval niet aan de template overlaten want dan moet het weer een geldig datetime object worden, terwijl een totale tijd van 48 uur nu gewoon als 48:00 wordt weergegeven.
  vrijdag 11 februari 2011 @ 10:06:10 #193
75592 GlowMouse
l'état, c'est moi
pi_92626748
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92626814
quote:
Die had ik gevonden, maar die doet twee variables optellen, niet een hele kolom...
pi_92627064
Kan je ze niet in de database opslaan als timestamp. En dan alleen het verschil berekenen. Die kan je ook zo omzetten naar de datetime als je dat wil.

[/newb]
  vrijdag 11 februari 2011 @ 10:18:32 #196
75592 GlowMouse
l'état, c'est moi
pi_92627130
Als je met timestamps wilt rekenen, is er nog unix_timestamp(col1)
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92627295
Heb ook even gepuzzeld (kan niet te lang, ben op werk), maar krijg met timediff de tijd terug in miliseconden denk ik. Nog iets geprobeerd daar een date_format omheen te gooien, maar zonder resultaat.

Met timestamps zal het wel makkelijker worden inderdaad
pi_92670703
open sollicitatie voor anonymous hier ofzo :)

-nee-

[ Bericht 47% gewijzigd door smegmanus op 13-02-2011 18:34:10 ]
pi_92671424
quote:
1s.gif Op vrijdag 11 februari 2011 09:54 schreef KomtTijd... het volgende:
SUM(TIMEDIFF(tijd,tijd) ging fout.
Je kunt het ook anders proberen: TIMEDIFF(SUM(eindtijd), SUM(begintijd))
  zaterdag 12 februari 2011 @ 13:12:01 #200
302853 themole
graaft totaal door.
pi_92676300
quote:
1s.gif Op zaterdag 12 februari 2011 09:52 schreef MrNiles het volgende:
open sollicitatie voor anonymous hier ofzo :)

-nee-
[knip]reactie op edit [/knip]

[ Bericht 39% gewijzigd door smegmanus op 13-02-2011 18:34:49 ]
Niet altijd serieus
  zaterdag 12 februari 2011 @ 13:39:35 #201
75592 GlowMouse
l'état, c'est moi
pi_92677251
En je moet jezelf afvragen of het voordeel opweegt tegen de overlast die je anderen bezorgt en de gevangenisstraf die je ervoor kunt krijgen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92693040
Ik heb een query op een tabel met een kleine 250.000 regels, nu wil ik daarin zoeken op tags met de volgende code

1
2
3
4
5
6
SELECT `pix`.*
FROM `pix`
WHERE `pix`.`tags` LIKE '%,cool%'
AND   `pix`.`accepted` = 'y' 
AND `pix`.`adult` = 'n'
LIMIT 0,20

Explain:
11    SIMPLE    pix    ref    accepted,adult    accepted    1    const    249142    Using where

Ik heb op deze tabel de volgende indexen;
1
2
3
4
5
6
7
8
9
10
11
12
13
Sleutelnaam    Type    Unieke waarde    Gecomprimeerd    Veld    Kardinaliteit    Collatie    
        PRIMARY    BTREE    Ja    Nee    id    249144    A        
        category    BTREE    Ja    Nee    category    0    A        
filetype    0    A    
filesize    0    A    
filex    0    A    
filey    0    A    
filecrc    249144    A    
        filedate    BTREE    Nee    Nee    filedate    1051    A        
        accepted    BTREE    Nee    Nee    accepted    1    A        
        tags    BTREE    Nee    Nee    tags    1    A        
        adult    BTREE    Nee    Nee    adult    1    A        
        category_2    BTREE    Nee    Nee    category    3663    A    

Wat doe ik verkeerd of hoe kan ik zorgen dat deze query beter loopt? want 2 seconden op 250.000 items is volgens mij best veel :*
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zaterdag 12 februari 2011 @ 21:06:43 #203
75592 GlowMouse
l'état, c'est moi
pi_92693072
LIKE '%,cool%' moet je dan ook niet willen doen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92693360
quote:
1s.gif Op zaterdag 12 februari 2011 21:06 schreef GlowMouse het volgende:
LIKE '%,cool%' moet je dan ook niet willen doen.
Goed, dat zou kunnen maar hoe moet ik het dan willen oplossen of moet ik een apart tabel gaan gebruiken om te zoeken op tags?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zaterdag 12 februari 2011 @ 21:13:52 #205
75592 GlowMouse
l'état, c'est moi
pi_92693413
Voor tags heb ik een mooi naslagwerk gemaakt:
http://gathering.tweakers.net/forum/list_messages/1429432

Je post #202 is onleesbaar trouwens. Zo geef je geen indices weer.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92693547
quote:
1s.gif Op zaterdag 12 februari 2011 21:13 schreef GlowMouse het volgende:
Voor tags heb ik een mooi naslagwerk gemaakt:
http://gathering.tweakers.net/forum/list_messages/1429432

Je post #202 is onleesbaar trouwens. Zo geef je geen indices weer.
Ik ga je naslag werk eens lezen, maar hoe moet ik die dan weergeven?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zaterdag 12 februari 2011 @ 21:16:47 #207
75592 GlowMouse
l'état, c'est moi
pi_92693572
(col1,col2), (col4), etc.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92693957
Ik ga je naslag werk uitprinten, dit moet ik even laten bezinken denk ik :@
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_92708428
als ik het volgende uitvoer dan krijg op mijn scherm te staan optredens.id
en ik zie eigenlijk ook wel dat het er staat..maar zonder quotes krijg ik de foutmelding:
Use of undefined constant optredens - assumed 'optredens'

ik zie m echt niet

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$commando_id
=
"SELECT 'optredens.id'
FROM 'optredens'
WHERE datum= '
$aData[datum]'
AND dagdeel = '
$aData[dagdeel]'
AND wat = '
$aData[wat]'
AND waar = '
$aData[waar]' ";

mysql_query($commando_id);
$id='optredens.id';
echo 
$id;
?>
pi_92709062
quote:
1s.gif Op zondag 13 februari 2011 10:09 schreef MrNiles het volgende:
als ik het volgende uitvoer dan krijg op mijn scherm te staan optredens.id
en ik zie eigenlijk ook wel dat het er staat..maar zonder quotes krijg ik de foutmelding:
Use of undefined constant optredens - assumed 'optredens'

ik zie m echt niet
[ code verwijderd ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$commando_id
=
"SELECT 'optredens.id'
FROM 'optredens'
WHERE datum= '"
.$aData['datum']."'
AND dagdeel = '"
.$aData['dagdeel']."'
AND wat = '"
.$aData['wat']."'
AND waar = '"
.$aData['waar']."' ";

$result mysql_query($commando_id);

//$id='optredens.id'; ?????? je wilde dit veranderen? in $id? Waaruit? zomaar uit 'optredens.id?'
// Dit snapt PHP niet , je speelt nu met 2 talen door elkaar SQL en PHP.
// hierdoor is het beter om eerst het in  een $result te gooien en voor elke Rij een waarde op te //roepen.

While($row mysql_fetch_assoc($result)){

echo 
$row['id'];
}
?>


[ Bericht 12% gewijzigd door cablegunmaster op 13-02-2011 11:05:59 ]
Redacted
pi_92709228
Wat wil je met die id's? Alleen alle id's echo-en?
pi_92709453
quote:
1s.gif Op zondag 13 februari 2011 10:54 schreef Tegan het volgende:
Wat wil je met die id's? Alleen alle id's echo-en?
nee die echo is puur even een controle of het wel werkt
wil met die id een nieuwe kolom in een andere tabel aanmaken
pi_92710702
Dus, je query moet eigenlijk maar een id vinden?
pi_92710944
quote:
1s.gif Op zondag 13 februari 2011 11:50 schreef Tegan het volgende:
Dus, je query moet eigenlijk maar een id vinden?
ja klopt
maar die id is pas een paar regels hoger aangemaakt door
1
2
3
<?php
$sql
="INSERT INTO optredens(datum, dagdeel, wat, waar) VALUES ('$aData[datum]','$aData[dagdeel]','$aData[wat]','$aData[waar]')";
?>
die id wordt opgehoogd door auto_increment
pi_92711206
quote:
1s.gif Op zondag 13 februari 2011 11:57 schreef MrNiles het volgende:

[..]

ja klopt
maar die id is pas een paar regels hoger aangemaakt door
[ code verwijderd ]

die id wordt opgehoogd door auto_increment
Je kan een laatst ingevoerde id krijgen met mysql_insert_id();

Dus je doet eerst je INSERT, en daarna $id = mysql_insert_id();

http://php.net/manual/en/function.mysql-insert-id.php
  zondag 13 februari 2011 @ 12:15:34 #216
75592 GlowMouse
l'état, c'est moi
pi_92711552
Kolomnamen en tabelnamen schrijf je zonder apostrof eromheen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92727340
quote:
Op zondag 13 februari 2011 12:15 schreef GlowMouse het volgende:
Kolomnamen en tabelnamen schrijf je zonder apostrof eromheen.
Dit had ik al een aantal keer gezegd ;(.
  zondag 13 februari 2011 @ 18:38:20 #218
75592 GlowMouse
l'état, c'est moi
pi_92727660
Hij luistert niet ;(.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92729823
quote:
1s.gif Op zondag 13 februari 2011 18:38 schreef GlowMouse het volgende:
Hij luistert niet ;(.
SORRY
pi_92738832
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

$selfSecure = "1";
$shellUser  = "test";
$shellPswd  = "test1";

$adminEmail = "nietecht@ziggo.nl";
$fromEmail  = $HTTP_SERVER_VARS["SERVER_ADMIN"];

$Version = "Webmaster";
if($selfSecure){
    if (($PHP_AUTH_USER!=$shellUser)||($PHP_AUTH_PW!=$shellPswd)) {
       Header('WWW-Authenticate: Basic realm="login"');
       Header('HTTP/1.0 401 Unauthorized');
       echo "<html>
         <head>
         <title>Error - Access Denied</title>
         </head>
         <h1>Toegang geweigerd</h1>
Klein stukje script waar ik mee vastzit. Ik krijg geen foutcode maar als ik inlog blijft hij daarom vragen, hij loopt dus niet door, is er iemand die weet wat ik verkeerd doe?
Alvast bedankt
pi_92742145
- Integers moet je zonder apestrof schrijven.
- If ($selfSecure) wat?
- Je mist "; } } op het eind (en ?>).

[ Bericht 8% gewijzigd door Tegan op 13-02-2011 22:09:59 ]
pi_92743346
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
<?php
$selfSecure = "1";
$shellUser  = "test";
$shellPswd  = "test1";
$adminEmail = "nietecht@ziggo.nl";
$fromEmail  = $HTTP_SERVER_VARS["SERVER_ADMIN"];
$Version = "Webmaster";if($selfSecure){    if (($PHP_AUTH_USER!=$shellUser)||($PHP_AUTH_PW!=$shellPswd)) {       Header('WWW-Authenticate: Basic realm="login"');       Header('HTTP/1.0 401 Unauthorized');       
echo "<html>         
<head>         
<title>Error - Access Denied</title>         
</head>         
<h1>Toegang geweigerd</h1><hr>
         <em>$Version</em>";
       if(isset($PHP_AUTH_USER)){
          $warnMsg ="
 Iemand probeerde binnen te komen in het bangedeelte: http://".$HTTP_SERVER_VARS["HTTP_HOST"]."$PHP_SELF
 en gebruikte de verkeerde naam en het verkeerde wachtwoord:
 
 Date: ".date("Y-m-d H:i:s")."
 IP: ".$HTTP_SERVER_VARS["REMOTE_ADDR"]."
 User Agent: ".$HTTP_SERVER_VARS["HTTP_USER_AGENT"]."
 username used: $PHP_AUTH_USER
 password used: $PHP_AUTH_PW
 
       ";
          mail($adminEmail,"Unauthorized Access",$warnMsg,
          "From: $fromEmail\nX-Mailer:$Version AutoWarn System");
       }
       exit;
    }
}

if(!$oCols)$oCols=$termCols;
if(!$oRows)$oRows=$termRows;

?>
Bedankt voor je antwoord, hier het complete scriptje om misverstanden te voorkomen. Ik snap niet wat je bedoeld met apostrof, die kan ik niet vinden hierin. Kun je deze "leek" helpen met een werkende code? Alvast bedankt.
  zondag 13 februari 2011 @ 22:18:13 #223
334357 Emery
Heavy Metal King!
pi_92743475
Integer: $selfSecure = "1";
"My name is Emery and primarily I make noises - and ideas".
pi_92743599
$selfSecure = 1;
zo heb ik het ook geprobeerd, helaas herkend hij dan nog niet mijn naam en wachtwoord, hij blijft erom vragen.
pi_92743771
quote:
1s.gif Op zondag 13 februari 2011 22:19 schreef henkm het volgende:
$selfSecure = 1;
zo heb ik het ook geprobeerd, helaas herkend hij dan nog niet mijn naam en wachtwoord, hij blijft erom vragen.
Dat was ook niet de oplossing, maar wel een fout :P .

Wat doe je hier checken?
1if ($selfSecure)
Bedoel je $_SERVER["PHP_AUTH_USER"] en $_SERVER["PHP_AUTH_PW"] ?

Verder weet ik ook niet echt veel over email-scripts.
  zondag 13 februari 2011 @ 22:23:21 #226
75592 GlowMouse
l'état, c'est moi
pi_92743898
quote:
if ($selfSecure)
Daar wordt gekeken of $selfSecure true (of 1, of een string die niet met 0 begint) is.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92744058
quote:
1s.gif Op zondag 13 februari 2011 22:23 schreef GlowMouse het volgende:

[..]

Daar wordt gekeken of $selfSecure true (of 1, of een string die niet met 0 begint) is.
Oh, doe dat altijd zo if ($var == true) ;( .
  zondag 13 februari 2011 @ 22:26:34 #228
75592 GlowMouse
l'état, c'est moi
pi_92744222
quote:
if(isset($PHP_AUTH_USER)){
dat moet zijn: if(isset($_SERVER['PHP_AUTH_USER'])){

En $HTTP_SERVER_VARS overal vervangen door $_SERVER.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')