abonnement Unibet Coolblue Bitvavo
  woensdag 29 oktober 2008 @ 22:40:05 #101
85919 Likkende_Lassie
Doe eens wat aan je ondertitel
pi_62797283
quote:
Op woensdag 29 oktober 2008 22:35 schreef GlowMouse het volgende:
Ik neem aan dat je zelf weet wat die memcache-code doet. Of het afdoende beveiliging biedt, hangt van je site af. Zijn er pagina's die erg veel tijd kosten om te genereren, dan zal de beveiliging niet zo goed werken.
Daarnaast zit je al in PHP voordat deze code wordt uitgevoerd. Een mod voor Apache of wat firewall-regels kunnen dit efficiënter. Ook wil je wellicht een log bijhouden.

Voor de reguliere storage engines (MyISAM/InnoDB) is gemiddeld 35 rijen/seconde invoegen in een tabel geen enkel probleem. Probeer wel zoveel mogelijk rijen met één INSERT-query te behandelen.

Ik heb de memcached code voor het zware gedeelte staan van de pagina's (search etc.)
Aangezien het een custom iets is, dus soms voor andere pagina's een andere waarde, zal
een firewall niet naar behoeven werken. Een mod misschien wel?

Als dat geen probleem is, prima! Ik zal het inderdaad in één query stoppen, ipv losse queries zoals nu.
En qua updates, geldt hiervoor hetzelfde?
  donderdag 30 oktober 2008 @ 00:08:20 #102
12880 CraZaay
prettig gestoord
pi_62799832
quote:
Op woensdag 29 oktober 2008 00:57 schreef Likkende_Lassie het volgende:
Iemand op/aanmerkingen?
Ja Sla het resultaat van die zware bewerking die je server vast doet lopen (moet nogal wat zijn dan) op in memcached, en zet geen limiet op het aantal requests.
  dinsdag 4 november 2008 @ 20:32:16 #103
74548 Jo0Lz
Lick the box!
pi_62945144
Ehm, ik heb even een vraag.
Ik heb een scriptje, dat ik gebruik om een plaatje op te roepen op basis van de titel van die pagina.

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
   $bloginfo_link = get_bloginfo('template_directory');
   $image_folder = $bloginfo_link . '/images/sidebar';
   $page = get_the_title();
if (file_exists($image_folder . '/'.$page.'.png'))
   { 
   echo "<img src=\"$image_folder/".$page.".png\">";
    }
else 
   {  
   echo "<img src=\"$image_folder/Nieuws.png\">";
   }
?> 


Hij laat alleen het plaatje "Nieuws.png" zien. Terwijl, als ik de check weghaal, bij alle pagina's correct de afbeelding wordt weergegeven.

Iemand een idee, wat ik fout doe? Is die "if file_exists" zo goed?
Blijkbaar, faalt hij op dat punt, en laat hij de afbeelding "Nieuws.png" zien, terwijl dat "Welkom.png" moet zijn.

Als ik "echo $page" in het script verwerk, krijg ik wel de juiste terugkoppeling, namelijk "Welkom".
Yes we can! | I didn't fail, it's just postponed success.
  dinsdag 4 november 2008 @ 20:35:23 #104
75592 GlowMouse
l'état, c'est moi
pi_62945252
file_exists kijkt op het lokale filesystem. Dat betekent dat als jij een url opgeeft als http://.. hij, om te kijken of het bestaat, die site op moet vragen. En dat doet file_exists niet, dus geeft hij false en krijg je Nieuws.png.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_62945268
hoofletters/kleine letters zijn correct in de bestandsnamen?

doe anders ff echo ($image_folder . '/'.$page.'.png');, dan kun je zien welk bestand hij precies probeert te checken.
  dinsdag 4 november 2008 @ 20:54:06 #106
74548 Jo0Lz
Lick the box!
pi_62945876
quote:
Op dinsdag 4 november 2008 20:35 schreef mcDavid het volgende:
hoofletters/kleine letters zijn correct in de bestandsnamen?

doe anders ff echo ($image_folder . '/'.$page.'.png');, dan kun je zien welk bestand hij precies probeert te checken.
Ja, ik heb de afbeeldingen met hoofdletters geupload. Als ik dus echo $image_folder .'/'.$page.'.png') invoer, dan geeft hij die afbeelding weer. Dat stukje werkt dus, maar de check niet.
Yes we can! | I didn't fail, it's just postponed success.
  dinsdag 4 november 2008 @ 21:03:44 #107
74548 Jo0Lz
Lick the box!
pi_62946210
Het complete pad, van het lokale systeem, wat ik weet is:
1/public_html/wp/wp-content/themes/mijnthema/images/sidebar

Hoe krijg ik het nou zover dat die check op die directory gedaan wordt?
Een nieuwe var aanmaken, met iets van 'images/sidebar', en dan daar de check op proberen?
Yes we can! | I didn't fail, it's just postponed success.
  dinsdag 4 november 2008 @ 21:06:43 #108
75592 GlowMouse
l'état, c'est moi
pi_62946302
In dat geval moet '/public_html/wp/wp-content/themes/mijnthema/images/sidebar/' . $page . '.png' bestaan
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_62946576
sidenote:

ook op het lokale systeem kun je met relatieve paden werken.
  dinsdag 4 november 2008 @ 21:20:17 #110
74548 Jo0Lz
Lick the box!
pi_62946726
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   <?php
   $bloginfo_link = get_bloginfo('template_directory');
   $image_folder = $bloginfo_link . '/images/sidebar';
   $images = 'wp-content/themes/mijnthema/images/sidebar';
   $page = get_the_title();
if (file_exists($images.'/'.$page.'.png'))
   { 
   echo "<img src=\"$image_folder/".$page.".png\">";
    }
else 
   {  
   echo "<img src=\"$image_folder/Nieuws.png\">";
   }
?> 

Nu werkt het . Blijkbaar was dat genoeg, ik had namelijk nog een
1       echo "<img src=\"$images/Nieuws.png\">";
toegevoegd, en daarin zag ik wat hij probeerde weer te geven, zo kwam ik erachter, dat dat public_html er niet bij hoefde.

Trial en error, maar wel overwinning.
Yes we can! | I didn't fail, it's just postponed success.
pi_62948272
quote:
Op dinsdag 4 november 2008 20:32 schreef Jo0Lz het volgende:
Ehm, ik heb even een vraag.
Ik heb een scriptje, dat ik gebruik om een plaatje op te roepen op basis van de titel van die pagina.
[ code verwijderd ]

Hij laat alleen het plaatje "Nieuws.png" zien. Terwijl, als ik de check weghaal, bij alle pagina's correct de afbeelding wordt weergegeven.

Iemand een idee, wat ik fout doe? Is die "if file_exists" zo goed?
Blijkbaar, faalt hij op dat punt, en laat hij de afbeelding "Nieuws.png" zien, terwijl dat "Welkom.png" moet zijn.

Als ik "echo $page" in het script verwerk, krijg ik wel de juiste terugkoppeling, namelijk "Welkom".
Ik denk dat het fout gaat met $image_folder. Met file_exists() kijk je op het file system en als je diezelfde directory in een <img> gebruikt dan is het waarschijnlijk niet de goede directory.

Met echo dirname(__FILE__); kun je zien wat het volledige pad is van het bestand waar je die tekst in hebt staan.
pi_62961900
Ik heb een vraag, ik wil statistieken achterhalen per website en opslaan in een database (dit gaat erg goed) maar nu zit ik met het volgende probleem.

Een site in Nederland heeft GMT 0 maar een site in america heeft heel andere tijden, nu gebruik ik NOW() in mijn MySQL queries maar wil eingelijk de tijd opslaan van de gebruiker zijn website, hoe moet ik dit realiseren?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  woensdag 5 november 2008 @ 09:48:30 #113
62215 qu63
..de tijd drinkt..
pi_62962006
quote:
Op woensdag 5 november 2008 09:42 schreef Chandler het volgende:
Ik heb een vraag, ik wil statistieken achterhalen per website en opslaan in een database (dit gaat erg goed) maar nu zit ik met het volgende probleem.

Een site in Nederland heeft GMT 0 maar een site in america heeft heel andere tijden, nu gebruik ik NOW() in mijn MySQL queries maar wil eingelijk de tijd opslaan van de gebruiker zijn website, hoe moet ik dit realiseren?
Met javascript de lokale datum/tijd ophalen en die in je database stoppen?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  woensdag 5 november 2008 @ 10:21:27 #114
63192 ursel
"Het Is Hier Fantastisch!
pi_62962828
quote:
Op woensdag 5 november 2008 09:42 schreef Chandler het volgende:
Ik heb een vraag, ik wil statistieken achterhalen per website en opslaan in een database (dit gaat erg goed) maar nu zit ik met het volgende probleem.

Een site in Nederland heeft GMT 0 maar een site in america heeft heel andere tijden, nu gebruik ik NOW() in mijn MySQL queries maar wil eingelijk de tijd opslaan van de gebruiker zijn website, hoe moet ik dit realiseren?
GMT +1
pi_62964041
maar met javascript is geen optie, want het gaat om dynamisch gegenereerde afbeeldingen die kan helaas geen javascript uitlezen
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  woensdag 5 november 2008 @ 11:12:20 #116
62215 qu63
..de tijd drinkt..
pi_62964165
quote:
Op woensdag 5 november 2008 11:07 schreef Chandler het volgende:
maar met javascript is geen optie, want het gaat om dynamisch gegenereerde afbeeldingen die kan helaas geen javascript uitlezen
Dus je wil server-side iets client-side uitlezen?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_62964399
Als dat mogelijk is maar zelf wil ik nu inbouwen dat een gebruiker een keuze kan maken middels een select welke timezone hun site zit en dat ik deze timezone dan ga gebruiken maar ben er dus nog niet achter hoe ik dit m.b.t NOW() moet verwerken.

BV ik heb +1 (1 uur) hoe kan ik dit dan inserten bij NOW() (oftewel in combinatie van NOW +1)

Ik hoop dat jullie het snappen
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  woensdag 5 november 2008 @ 11:31:42 #118
63192 ursel
"Het Is Hier Fantastisch!
pi_62964723
quote:
Op woensdag 5 november 2008 11:20 schreef Chandler het volgende:
Als dat mogelijk is maar zelf wil ik nu inbouwen dat een gebruiker een keuze kan maken middels een select welke timezone hun site zit en dat ik deze timezone dan ga gebruiken maar ben er dus nog niet achter hoe ik dit m.b.t NOW() moet verwerken.

BV ik heb +1 (1 uur) hoe kan ik dit dan inserten bij NOW() (oftewel in combinatie van NOW +1)

Ik hoop dat jullie het snappen
Kan je het niet per website alleen de tijdsinstelling opslaan?
Als je dan gegevens ophaalt van de website combineer je tijdsinstelling + de NOW gegevens.

Overigens heb ik me er nooit in verdiept, maar ken applicaties welke je taalinstellingen overnemen van de gegevens van je browser. Kan je zoiets ook niet met de tijdsinstellingen doen?
pi_62970201
Dat wil ik dus, echter heb ik dan +1 -1 -5.5 etc qua uren staan, en hoe kan ik deze aan NOW() toevoegen qua uren?

Verder wil ik wel eens weten of deze routine korter kan om random wachtwoorden te geneneren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
function randomCode($len 8)
{
    
$rts '';
    
$str '';
    
$a = array(65=>90,97=>122,48=>57);
    foreach (
$a AS $i=>$v)
    {
        for (
$x $i$x <= $v$x++)
        {
            
$rts .= chr($x);
        }
    }
    for (
$i 1$i <= $len$i++)
    {
        
$str .= $rts[rand(1strlen($rts)-1)];
    }
    return 
$str;
}
?>


en op 1 regel
1
2
3
<?php
function randomCode($len=8){$rts='';$str='';$a=array(65=>90,97=>122,48=>57);foreach($a AS $i=>$v){for $x=$i;$x<=$v;$x++){$rts.=chr($x);}}for ($i=1;$i<=$len;$i++){$str.=$rts[rand(1,strlen($rts)-1)];}return $str;}
?>




[ Bericht 2% gewijzigd door Chandler op 05-11-2008 15:41:09 (kleine aanpassing ;)) ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_62976918
quote:
Op woensdag 5 november 2008 14:50 schreef Chandler het volgende:
Dat wil ik dus, echter heb ik dan +1 -1 -5.5 etc qua uren staan, en hoe kan ik deze aan NOW() toevoegen qua uren?
Even een gedachtenkronkel, weet niet zeker of het het juiste resultaat oplevert:

De timestamp in de database opslaan en dan per klant via date_default_timezone_set() en date_default_timezone_get() + date() functie de tijd correct laten zien?
  woensdag 5 november 2008 @ 19:03:44 #121
75592 GlowMouse
l'état, c'est moi
pi_62977830
Het aanmaken van $rts kan korter door
1
2
3
<?php
$rts 
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
?>

of anders door:
1
2
3
4
<?php
$rts 
array_mergerange('A''Z'), range('a''z'), range('0''9'));
$rts implode(''$rts);
?>
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_62978336
quote:
Op woensdag 5 november 2008 14:50 schreef Chandler het volgende:
Dat wil ik dus, echter heb ik dan +1 -1 -5.5 etc qua uren staan, en hoe kan ik deze aan NOW() toevoegen qua uren?

Verder wil ik wel eens weten of deze routine korter kan om random wachtwoorden te geneneren
[ code verwijderd ]

en op 1 regel :P
[ code verwijderd ]

:D
Je maakt wachtwoorden zonder hoofdletter A? Of heb je een andere reden om in het stukje
1
2
3
<?php
$rts
[rand(1strlen($rts)-1)]
?>
niet 0 mee te geven als eerste parameter aan rand()?
pi_62978363
quote:
Op woensdag 5 november 2008 19:03 schreef GlowMouse het volgende:
Het aanmaken van $rts kan korter door
[ code verwijderd ]

of anders door:
[ code verwijderd ]
Eigenljik hoef je er niet eens een string van te maken. De code werkt ook met een array.
  woensdag 5 november 2008 @ 20:15:32 #124
136730 PiRANiA
All thinking men are atheists.
pi_62979982
quote:
Op woensdag 5 november 2008 19:03 schreef GlowMouse het volgende:
Het aanmaken van $rts kan korter door
[ code verwijderd ]

of anders door:
[ code verwijderd ]
ja, maar wat is efficiënter als het gaat om processorsnelheid?
pi_62981418
quote:
Op woensdag 5 november 2008 20:15 schreef PiRANiA het volgende:

[..]

ja, maar wat is efficiënter als het gaat om processorsnelheid?
De eerste oplossing van GlowMouse.
  woensdag 5 november 2008 @ 21:40:30 #126
107951 JortK
Immer kwaliteitsposts
pi_62983036
Vraagje, ik declareer een array in mijn class:

1
2
3
<?php
public $sub = array();
?>


Vervolgens heb ik een functie waarmee ik deze array wil vullen:

1
2
3
4
5
6
7
8
9
<?php
    
function GetSub()
    {
        
$matches = array();
        
preg_match_all('pregstring',$this->data,$this->sub);
    }
    
?>


Hier moeten twee matches uitkomen.

Wanneer ik nu de functie ga aanroepen en de array ga weergeven, krijg ik de volgende zooi terug:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Array
(
    [0] => Array
        (
        )

    [1] => Array
        (
        )

    [2] => Array
        (
        )

)


Terwijl wanneer ik het op een simpele manier test de array wel gevuld is, iemand een idee? :)
  woensdag 5 november 2008 @ 21:48:14 #127
75592 GlowMouse
l'état, c'est moi
pi_62983344
Waarom noem je $matches in je voorbeeld?

1
2
3
4
5
6
7
8
9
10
11
12
<?php
class JortK {
    public 
$sub = array();
    function 
GetSub() {
        
preg_match_all('/s/''asdfasdfasdf'$this->sub);
    }

}
$j = new JortK();
$j->GetSub();
print_r($j->sub);
?>

1
2
3
4
5
6
7
8
9
10
Array
(
    [0] => Array
        (
            [0] => s
            [1] => s
            [2] => s
        )

)
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  woensdag 5 november 2008 @ 22:02:33 #128
107951 JortK
Immer kwaliteitsposts
pi_62983913
Thanks Glowmouse, maar het bleek in de access modifier van een andere variabel te zitten
  donderdag 6 november 2008 @ 15:18:32 #129
63192 ursel
"Het Is Hier Fantastisch!
pi_63001850
Kan je een "SELECT * " SQL uitvoeren waarbij je 1 kolom exclude uit de resultaten?
  donderdag 6 november 2008 @ 15:28:03 #130
107951 JortK
Immer kwaliteitsposts
pi_63002094
quote:
Op donderdag 6 november 2008 15:18 schreef ursel het volgende:
Kan je een "SELECT * " SQL uitvoeren waarbij je 1 kolom exclude uit de resultaten?
Waarom niet gewoon dan SELECT veld1, veld2, veld3 FROM table doen?
pi_63002173
Ik heb nog niet zo heel veel met SQL gewerkt ofzo, maar je kunt toch gewoon de gegevens uit die kolom dan niet gebruiken?

Maar de manier van JortK lijkt me idd beter, dat zal een (iets) minder zware query zijn.
  donderdag 6 november 2008 @ 15:31:51 #132
63192 ursel
"Het Is Hier Fantastisch!
pi_63002201
quote:
Op donderdag 6 november 2008 15:28 schreef JortK het volgende:

[..]

Waarom niet gewoon dan SELECT veld1, veld2, veld3 FROM table doen?
Ik ben momenteel bezig om van ons archive-proces deze ook te gebruiken om producten te kunnen klonen.
Bij het archiveren heb ik geen last van DUPLICATE KEYS omdat deze keys nog niet in de archive database zitten.

Tijdens het kloon process blijf ik dus in dezelfde database en moet eigenlijk alleen sommige ID's gebruik gaan maken van de auto-incremental.

Het product te klonen heeft informatie in +/- 10 tables, waarbij de main-table zelfs tot 35 kolommen bevat. Ik hoopte dus eigenlijk dat ik grote delen van het archive proces kon hergebruiken..
  donderdag 6 november 2008 @ 15:32:13 #133
12221 Tijn
Powered by MS Paint
pi_63002213
Het is sowieso netter om geen "SELECT *" te gebruiken.
  donderdag 6 november 2008 @ 15:33:07 #134
63192 ursel
"Het Is Hier Fantastisch!
pi_63002239
quote:
Op donderdag 6 november 2008 15:32 schreef Tijn het volgende:
Het is sowieso netter om geen "SELECT *" te gebruiken.
Afhankelijk van je doel.
Voor het archiveren gebruiken we nu dus de query

INSERT INTO targetDB.table SELECT * FROM sourceDB.table WHERE ID = X
  donderdag 6 november 2008 @ 16:11:26 #135
12880 CraZaay
prettig gestoord
pi_63003389
quote:
Op donderdag 6 november 2008 15:32 schreef Tijn het volgende:
Het is sowieso netter om geen "SELECT *" te gebruiken.
Want? Het is netter om 10 kolommen op te sommen wanneer je 10 kolommen hebt, i.p.v. *? Says who?
  donderdag 6 november 2008 @ 17:10:39 #136
187069 slacker_nl
Sicko pur sang
pi_63005160
quote:
Op donderdag 6 november 2008 16:11 schreef CraZaay het volgende:

[..]

Want? Het is netter om 10 kolommen op te sommen wanneer je 10 kolommen hebt, i.p.v. *? Says who?
Tis eerder dat je de order kan garanderen als je niet * gebruikt, maar elk veld apart definieert. Anders kan het zijn dat iemand een table wijzigt en de order daarmee wijzigt, je app breekt omdat ie X verwacht daar waar hij Y krijgt.

Tenminste, dat is het argument wat ik gelezen heb hierover. Zie bijvoorbeeld hier: http://dbaforums.org/oracle/index.php?showtopic=8443
In theory there is no difference between theory and practice. In practice there is.
  donderdag 6 november 2008 @ 19:03:47 #137
12880 CraZaay
prettig gestoord
pi_63007952
quote:
Op donderdag 6 november 2008 17:10 schreef slacker_nl het volgende:

Tis eerder dat je de order kan garanderen als je niet * gebruikt, maar elk veld apart definieert. Anders kan het zijn dat iemand een table wijzigt en de order daarmee wijzigt, je app breekt omdat ie X verwacht daar waar hij Y krijgt.
Ik ken het hele concept van "breekbare order" niet, leg uit? Daarnaast lijkt het me niet eenvoudig om met een select iets te wijzigen in een tabel
  donderdag 6 november 2008 @ 19:11:28 #138
75592 GlowMouse
l'état, c'est moi
pi_63008182
Het zal eerder over een INSERT gaan, waarbij je niet je veldnamen specificeert.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  donderdag 6 november 2008 @ 20:01:23 #139
187069 slacker_nl
Sicko pur sang
pi_63009750
quote:
Op donderdag 6 november 2008 19:03 schreef CraZaay het volgende:
Ik ken het hele concept van "breekbare order" niet, leg uit? Daarnaast lijkt het me niet eenvoudig om met een select iets te wijzigen in een tabel
De orde is de volgorde, bij * is de volgorde zoals de table is aangemaakt, als ik vervolgens twee alters op een table uitvoer waarbij de orde van de velden veranderd, bijv:

create table blaat ( id int, val varchar(10), val2 varchar(10));

De volgorde is id, val, val2. Als ik nou val2 naar val rename en val naar val2 dan wordt de volgorde:
id, val2, val

Logisch, maar als ik dan een applicatie heb die select * from blaat uitvoert en bij val altijd koe of paard terugkrijgt (om maar een willekeurig iets te zeggen), maar nu omdat het val2 is, wordt dit boer of boerin. M'n applicatie verwacht dit niet, dan breek ik de applicatie (en niet de database uiteraard!). Als je checks op de data uitvoert zullen die checks failen, omdat je impliciet uitgaat van een bepaalde volgorde. Als je dit expliciet aangeeft in je query heb je dit hele probleem niet.

Nu kan je natuurlijk ook de zooi dmv een hash terugkrijgen, waardoor het niet echt veel uitmaakt, maar dit is wel degelijk van belang bij een sequentiele array.

In het kort, als je SELECT * uitvoert, laat je de DB bepalen wat de volgorde is, als je de velden zelf definieert bepaal je het zelf en heb je in theorie minder wijzigingen in je code als je wijzigingen in je DB maakt.

Hoop dat dit e.e.a. duidelijker maakt. Je hoeft het er niet mee eens te zijn, ik ben er voor mezelf ook nog niet uit of SELECT * nou echt zo'n zonde is als men zegt.. Maar goed, als iemand wat wijzigt in de DB en je hebt het expliciet de volgorde aangegeven dan weet je zeker dat er niks fout gaat en anders moet je hopen dat men de volgorde niet heeft aangepast....
In theory there is no difference between theory and practice. In practice there is.
  donderdag 6 november 2008 @ 20:40:46 #140
159635 Spike1506
NullPointerException
pi_63011013
@slacker_nl:
Je hebt inderdaad een goed punt. Sowieso is het fijner om de output van de DB zelf in "controle" te hebben door zelf de volgorde aan te geven.
pi_63011412
Slacker_nl heeft een goed punt, hoewel dit ook weer een nadeel is.

Ik moet vaak (Excel) exports vanuit een tabel maken, waar in principe alle data in terecht komt. Bij wijzigingen in de tabel is het wel prettig om dan * te dumpen, in plaats van dat je alle wijzigingen in de db ook in je exportcode moet gaan doorvoeren
  donderdag 6 november 2008 @ 21:05:58 #142
148588 rulerofdeath
Ruler the Rotting-BrainEater
pi_63011835
hallo

ik probeer de inhoud van een bestand in mijn database te krijgen en gebruik hiervoor deze code:
1
2
3
4
5
6
7
8
9
10
$lines = gzfile('http://nl1.tribalwars.nl/map/village.txt.gz');
         if(!is_array($lines)) die("File kan niet worden geopend."); 
         foreach($lines as $line) {
            list($id, $name,$x, $y, $player, $points, $rank) = explode(',', $line);
            $name = urldecode($name);

            $name = addslashes($name);
            mysql_query("INSERT INTO village SET id='$id', name='$name', x='$x', y='$y', 
               player='$player', points='$points', rank='$rank'");
}


ik krijg telkens
quote:
File kan niet worden geopend.
wat doe ik verkeerd?
Learn as if you're going to live forever, Live as if you're going to die tomorrow
De BIE®TAFELop youtube en dumpert _O_ &gt;100k views *O*
I wanna die the same way I was born: Screaming and covered with blood
Arbeit macht frei. Ik heb nu 40 jaar vakantie *O*
pi_63012184
Wat geeft var_dump( $lines )?
  donderdag 6 november 2008 @ 21:20:23 #144
148588 rulerofdeath
Ruler the Rotting-BrainEater
pi_63012419
bool(false)
Learn as if you're going to live forever, Live as if you're going to die tomorrow
De BIE®TAFELop youtube en dumpert _O_ &gt;100k views *O*
I wanna die the same way I was born: Screaming and covered with blood
Arbeit macht frei. Ik heb nu 40 jaar vakantie *O*
pi_63012774
quote:
Op donderdag 6 november 2008 21:05 schreef rulerofdeath het volgende:
hallo

ik probeer de inhoud van een bestand in mijn database te krijgen en gebruik hiervoor deze code:
[ code verwijderd ]

ik krijg telkens
[..]

wat doe ik verkeerd?
Waarschijnlijk ondersteunt gzfile() het http://-protocol niet.
  donderdag 6 november 2008 @ 21:48:00 #146
148588 rulerofdeath
Ruler the Rotting-BrainEater
pi_63013536
ik krijg nu een andere melding, ik zit nu ook bij een andere provider:

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 1048576 bytes) in /var/www/vhosts/biertafel.eu/httpdocs/index.php on line 1

(lijnnummer aangepast aan codefragment)
Learn as if you're going to live forever, Live as if you're going to die tomorrow
De BIE®TAFELop youtube en dumpert _O_ &gt;100k views *O*
I wanna die the same way I was born: Screaming and covered with blood
Arbeit macht frei. Ik heb nu 40 jaar vakantie *O*
  donderdag 6 november 2008 @ 21:53:14 #147
12880 CraZaay
prettig gestoord
pi_63013748
quote:
Op donderdag 6 november 2008 20:01 schreef slacker_nl het volgende:

De volgorde is id, val, val2. Als ik nou val2 naar val rename en val naar val2 dan wordt de volgorde:
id, val2, val

Logisch, maar als ik dan een applicatie heb die select * from blaat uitvoert en bij val altijd koe of paard terugkrijgt (om maar een willekeurig iets te zeggen), maar nu omdat het val2 is, wordt dit boer of boerin. M'n applicatie verwacht dit niet, dan breek ik de applicatie (en niet de database uiteraard!). Als je checks op de data uitvoert zullen die checks failen, omdat je impliciet uitgaat van een bepaalde volgorde. Als je dit expliciet aangeeft in je query heb je dit hele probleem niet.
Als je expliciet aangeeft dat je "SELECT val FROM ..." wilt, en deze kolom bevat opeens de data die voorheen bekend was als val2, dan heb je toch alsnog hetzelfde probleem, of begrijp ik je verkeerd?
pi_63014748
quote:
Op donderdag 6 november 2008 21:48 schreef rulerofdeath het volgende:
ik krijg nu een andere melding, ik zit nu ook bij een andere provider:

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 1048576 bytes) in /var/www/vhosts/biertafel.eu/httpdocs/index.php on line 1

(lijnnummer aangepast aan codefragment)
De melding zegt het al, je systeem/profiel heeft te weinig geheugen voor deze opdracht. Of je moet meer geheugen aanvragen of je moet je script op een andere manier gaan realiseren (bv via commandline de zip file extracten en dan rustig aan inlezen)
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  donderdag 6 november 2008 @ 22:55:11 #149
187069 slacker_nl
Sicko pur sang
pi_63016772
quote:
Op donderdag 6 november 2008 21:53 schreef CraZaay het volgende:

[..]

Als je expliciet aangeeft dat je "SELECT val FROM ..." wilt, en deze kolom bevat opeens de data die voorheen bekend was als val2, dan heb je toch alsnog hetzelfde probleem, of begrijp ik je verkeerd?
Je begrijpt me verkeerd, stel... iemand dumpt de database, maakt wijzigingen in de dump, dropped de originele table en creeert opnieuw de table, alleen zijn val en val2 van volgorde gewijzigd. Bij select * is de volgorde van val en val2 dus anders dan jij in eerste instantie verwacht.. Als je select val, val2 gebruikt veranderd er niks, en heb je dus ook geen problemen met deze wijziging..

Dit is de kern van het verhaal:

1) select veld, veld2, veld3: expliciet aangeven in welke volgorde (de keuze wordt gemaakt door jou).
2) select *: impliciet aangeven in welke volgorde (de keuze wordt gemaakt door de DB)

Welke je prefereert, of toepast, dat maakt mij weinig uit, maar je moet rekening houden dat je met select * onverwachte dingen kunt tegenkomen als men een wijziging uitvoert op de database. That is all.
In theory there is no difference between theory and practice. In practice there is.
  donderdag 6 november 2008 @ 23:27:46 #150
63192 ursel
"Het Is Hier Fantastisch!
pi_63018001
Ik begrijp dus eigenlijk dat het niet mogelijk is om een kolom te excluden??

@slacker, Maar als je nou een associative array fetched?? Dan maakt dit toch ook niet uit? Of zie ik iets over het hoofd?
pi_63018604
quote:
Op donderdag 6 november 2008 23:27 schreef ursel het volgende:
Ik begrijp dus eigenlijk dat het niet mogelijk is om een kolom te excluden??

@slacker, Maar als je nou een associative array fetched?? Dan maakt dit toch ook niet uit? Of zie ik iets over het hoofd?
Dan maakt het idd weinig uit, maar dat schreef Slacker ook al. Hij heeft het dan over hashes, maar da's gewoon hetzelfde.

En imho ben je gewoon onhandig bezig als je arrays met numerieke indexen gebruikt voor het uitlezen van een database. Dan moet je altijd terugzoeken in welke volgorde de velden gespecificeerd zijn om te achterhalen waar $row[2] ook alweer voor stond. $row['name'] is gewoon veel duidelijker.
  vrijdag 7 november 2008 @ 00:09:15 #152
187069 slacker_nl
Sicko pur sang
pi_63018892
Wat Light zei over hashes, das hetzelfde als een associatieve array.
quote:
Nu kan je natuurlijk ook de zooi dmv een hash terugkrijgen, waardoor het niet echt veel uitmaakt, maar dit is wel degelijk van belang bij een sequentiele array.
In theory there is no difference between theory and practice. In practice there is.
  vrijdag 7 november 2008 @ 00:10:54 #153
12880 CraZaay
prettig gestoord
pi_63018930
quote:
Op donderdag 6 november 2008 22:55 schreef slacker_nl het volgende:

Je begrijpt me verkeerd, stel... iemand dumpt de database, maakt wijzigingen in de dump, dropped de originele table en creeert opnieuw de table, alleen zijn val en val2 van volgorde gewijzigd. Bij select * is de volgorde van val en val2 dus anders dan jij in eerste instantie verwacht.. Als je select val, val2 gebruikt veranderd er niks, en heb je dus ook geen problemen met deze wijziging..
Ik snap je nu. Maar ik ging er eigenlijk ook vanuit dat iedereen die "SELECT *" doet alsnog gebruik maakt van een named/associatieve array, object, whatever, en $result['val'] gebruikt bijvoorbeeld. Ik vind het uitermate ranzig om in welke situatie dan ook maar klakkeloos uit te gaan van een volgorde, los van of je * gebruik of kolomnamen.

edit: En er was nog een pagina Wat Light zegt dus.
pi_63100207
Schop!

Of zet 'm eens centraal ofzo....
  maandag 10 november 2008 @ 13:27:43 #155
187069 slacker_nl
Sicko pur sang
pi_63100409
Waarom centraal, dev forum is niet zo groot dat je 'm over het hoofd ziet. En dat ie in het weekend wat zakt..
In theory there is no difference between theory and practice. In practice there is.
pi_63100460
toch staan er weer een stuk of 3 php-topics open omdat'ie uit het moederforum DIG gezakt is.
  maandag 10 november 2008 @ 18:52:13 #157
85919 Likkende_Lassie
Doe eens wat aan je ondertitel
pi_63108691
Volgende vraag!

Ik heb het volgende
1
2
3
4
5
<?php
SELECT reg
.idreg.branche_code AS branche_codebranche.name AS branche_namebranche.total_in AS total 
                                   FROM reg_reg reg
                                    LEFT JOIN reg_branche branche ON reg
.branche_code ON branche.code
?>


Maar zou het graag als volgt willen doen:

1
2
3
4
5
<?php
SELECT reg
.idreg.branche_code AS branche_codebranche.name AS branche_namebranche.total_in AS total 
                                   FROM reg_reg reg
                                    LEFT JOIN reg_branche branche ON reg
.branche_code LIKE '%,'branche.code',%'
?>



Let op de LIKE in de LEFT JOIN.... is dit mogelijk? Het lukt iig niet, hoe zou het wel kunnen lukken?
  maandag 10 november 2008 @ 19:23:23 #158
107951 JortK
Immer kwaliteitsposts
pi_63109572
Die LIKE moet in je WHERE clause, je JOIN clause is om tabellen aan elkaar te koppelen, niet om criteria in aan te leggen
  maandag 10 november 2008 @ 19:31:48 #159
85919 Likkende_Lassie
Doe eens wat aan je ondertitel
pi_63109825
Weet ik, maar ik heb zo'n idee dat dat niet in WHERE kan?
  maandag 10 november 2008 @ 19:41:00 #160
85919 Likkende_Lassie
Doe eens wat aan je ondertitel
pi_63110137
Het moet namelijk een like zijn met een veld van de tabel
pi_63110391
JOINS zijn alleen maar syntax sugar, dus iets als dit zou ook moeten werken:

Voor een INNER JOIN:
1
2
3
4
5
6
<?php
SELECT
reg
.idreg.branche_code AS branche_codebranche.name AS branche_namebranche.total_in AS total 
FROM reg_reg reg
reg_branche branche
WHERE reg
.branche_code LIKE '%,'branche.code',%'
?>


Of een LEFT JOIN
1
2
3
4
5
6
<?php
SELECT
reg
.idreg.branche_code AS branche_codebranche.name AS branche_namebranche.total_in AS total 
FROM reg_reg reg
reg_branche branche
WHERE 
(reg.branche_code LIKE '%,'branche.code',%' OR reg.branche_code IS NULL)
?>
pi_63111925
quote:
Op maandag 10 november 2008 19:41 schreef Likkende_Lassie het volgende:
Het moet namelijk een like zijn met een veld van de tabel
Wat staat er in dat veld?
Over het algemeen moet je LIKE met "%text%" zien te vermijden. Door de % vooraan kan er namelijk geen gebruik gemaakt worden van indexen, dus is je query per definitie inefficient.
pi_63112061
quote:
Op maandag 10 november 2008 19:23 schreef JortK het volgende:
Die LIKE moet in je WHERE clause, je JOIN clause is om tabellen aan elkaar te koppelen, niet om criteria in aan te leggen
Onzin
quote:
Op maandag 10 november 2008 19:48 schreef Arjan321 het volgende:
JOINS zijn alleen maar syntax sugar, dus iets als dit zou ook moeten werken:

Voor een INNER JOIN:
[ code verwijderd ]

Of een LEFT JOIN
[ code verwijderd ]
Ook onzin, maar dan met niet werkende voorbeelden.


Een LIKE in een JOIN kan prima (wat niet wil zeggen dat het altijd de beste keus is om een like in een join te gebruiken). En joins zijn meer dan alleen syntax sugar, ze maken query's bijvoorbeeld beter leesbaar (wat de kans op fouten verkleint).

1
2
3
SELECT *
FROM reg_reg r
LEFT JOIN reg_branche b ON r.branche_code LIKE Concat('%', b.code, '%')


Je moet de string die je voor de like gebruikt op de juiste manier aan elkaar plakken. Je kunt in MySql strings niet bij elkaar optellen. D.w.z. het kan wel (heet geeft geen fouten), maar aan het resultaat heb je niets.

Maar als je zo'n constructie nodig hebt dan zit je datamodel misschien niet al te handig in elkaar.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  maandag 10 november 2008 @ 20:44:23 #164
85919 Likkende_Lassie
Doe eens wat aan je ondertitel
pi_63112320
quote:
Op maandag 10 november 2008 20:33 schreef Light het volgende:

[..]

Wat staat er in dat veld?
Over het algemeen moet je LIKE met "%text%" zien te vermijden. Door de % vooraan kan er namelijk geen gebruik gemaakt worden van indexen, dus is je query per definitie inefficient.
In dat veld staan de ID's van de branches, als volgt: ,6543,34543,4323,65432,1234,
Bedankt voor de reacties tot nu toe!

Bovenstaande oplossingen werken overigens niet.
Hierbij de gehele query, zoals de laatst genoemde mogelijkheid, niet werkend.

1
2
3
4
5
mysql_query("SELECT register.id, register.branche_code AS branche_code, branche.name AS branche_name, branche.total_in AS total 
                                   FROM register_register register
                                    LEFT JOIN register_branches branche ON branche.code = LIKE Concat('%', register.branche_code, '%')
                                   WHERE register.id IN (".$sphinx['result']." 0) AND total_in > 0 AND branche.in_small_overview > 0 GROUP BY `branche_code` 
                                   ORDER BY total_in DESC LIMIT 10")
pi_63112905
quote:
Op maandag 10 november 2008 20:44 schreef Likkende_Lassie het volgende:

[..]

In dat veld staan de ID's van de branches, als volgt: ,6543,34543,4323,65432,1234,
Bedankt voor de reacties tot nu toe!
Daar was ik al bang voor. Een koppeltabel is dan een veel betere oplossing. Gewoon een tabel met id's, kun je ook indexen op zetten. Is ook veel sneller met doorzoeken.
quote:
Bovenstaande oplossingen werken overigens niet.
Hierbij de gehele query, zoals de laatst genoemde mogelijkheid, niet werkend.
[ code verwijderd ]
Zoek eens op databasenormalisatie. Je kunt wel proberen om dit werkend te krijgen (en het kan vast ook) maar je kunt veel beter je tijd investeren in uitzoeken hoe het beter kan.
pi_63112995
Zo veel moeite is het toch niet om zo'n query op een leesbare manier op te schrijven zodat je misschine een beetje een idee heb waar je mee bezig bent?

1
2
3
4
5
6
7
8
9
"SELECT r.id, r.branche_code AS branche_code, b.name AS branche_name, b.total_in AS total 
FROM register_register r
LEFT JOIN register_branches b ON b.code = LIKE Concat('%', r.branche_code, '%')
WHERE r.id IN (". $sphinx['result']. " 0) 
   AND b.total_in > 0 
   AND b.in_small_overview > 0 
GROUP BY branche_code
ORDER BY total_in DESC 
LIMIT 10"


Probeer het eerst eens met een wat eenvoudigere versie van die query en lijk of je dan terug krijgt wat je zoekt. Die GROUP B klopt bijvoorbeeld ook niet.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  maandag 10 november 2008 @ 21:05:03 #167
12880 CraZaay
prettig gestoord
pi_63113047
quote:
Op maandag 10 november 2008 20:44 schreef Likkende_Lassie het volgende:

In dat veld staan de ID's van de branches, als volgt: ,6543,34543,4323,65432,1234,
GAD-VER-DAM-ME

  maandag 10 november 2008 @ 21:06:02 #168
85919 Likkende_Lassie
Doe eens wat aan je ondertitel
pi_63113079
quote:
Op maandag 10 november 2008 21:01 schreef Light het volgende:

[..]

Daar was ik al bang voor. Een koppeltabel is dan een veel betere oplossing. Gewoon een tabel met id's, kun je ook indexen op zetten. Is ook veel sneller met doorzoeken.
[..]

Zoek eens op databasenormalisatie. Je kunt wel proberen om dit werkend te krijgen (en het kan vast ook) maar je kunt veel beter je tijd investeren in uitzoeken hoe het beter kan.
Een koppeltabel, zou die er zou uit kunnen zien?

brancheID registerID
04200 123456
0915 123456
3116 654321


dus meerdere regels voor een registerid?
pi_63113095
En Als je even
1SELECT * FROM register_branches WHERE code LIKE '%6543,34543,4323,65432,1234%'

had geprobeerd dan had je kunnen zien dat dat niet oplevert wat je wil (en dat het dus niet aan de join ligt)
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_63113463
quote:
Op maandag 10 november 2008 21:06 schreef Likkende_Lassie het volgende:

[..]

Een koppeltabel, zou die er zou uit kunnen zien?

brancheID registerID
04200 123456
0915 123456
3116 654321


dus meerdere regels voor een registerid?
Yep
brancheID registerID
04200 123456
0915 123456
0915 654321
3116 654321

Zowel brancheID als registerID komen meerdere keren voor (of kunnen dat iig). Alleen de combinatie is wel uniek.
  maandag 10 november 2008 @ 21:32:26 #171
85919 Likkende_Lassie
Doe eens wat aan je ondertitel
pi_63114000
Ok! Hij is nu bezig alles in te voeren, moet heel wat records inlezen en verwerken, duurt dus even.
De tabel ziet er zo uit:

1
2
3
4
5
6
7
8
CREATE TABLE IF NOT EXISTS `register_branches_register` (
  `id` int(11) NOT NULL auto_increment,
  `brancheID` int(11) NOT NULL,
  `registerID` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `brancheID` (`brancheID`),
  KEY `registerID` (`registerID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
pi_63116678
quote:
Op maandag 10 november 2008 21:32 schreef Likkende_Lassie het volgende:
Ok! Hij is nu bezig alles in te voeren, moet heel wat records inlezen en verwerken, duurt dus even.
De tabel ziet er zo uit:
[ code verwijderd ]
Dat veld ID is niet echt nuttig. Ik zou de tabel anders maken:
1
2
3
4
5
6
CREATE TABLE `register_branches_register` (
  `brancheID` int(11) NOT NULL,
  `registerID` int(11) NOT NULL,
  PRIMARY KEY  (`brancheID`,`registerID`),
  KEY `registerID` (`registerID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

De combinatie (brancheID, registerID) is uniek, en daardoor heb je ook meteen een index op brancheID.
pi_63123172
Is de vertaling naar het Nederlands makkelijker/logischer te doen?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$Month    
"11";
$Year    "2008";

$DaysMonth cal_days_in_month(CAL_GREGORIAN$Month$Year);

for (
$i 1$i <= $DaysMonth$i++) {
    echo 
'De datum ' .$i'-' .$Month'-' .$Year', valt op ';
    
$day date("l"mktime(000$Month$i$Year));
    if (
$day == "Monday") { echo 'Maandag'; }
    if (
$day == "Tuesday") { echo 'Dinsdag'; }
    if (
$day == "Wednesday") { echo 'Woensdag'; }
    if (
$day == "Thursday") { echo 'Donderdag'; }
    if (
$day == "Friday") { echo 'Vrijdag'; }
    if (
$day == "Saturday") { echo 'Zaterdag'; }
    if (
$day == "Sunday") { echo 'Zondag'; }
    echo 
'<br />';
}
?>
ne okuyon, bokmu var?
  dinsdag 11 november 2008 @ 10:32:04 #174
63192 ursel
"Het Is Hier Fantastisch!
pi_63123473
Ik zou het zelf in een switch gooien.
  dinsdag 11 november 2008 @ 10:33:12 #175
75592 GlowMouse
l'état, c'est moi
pi_63123493
Kijk eens naar setlocale en strftime.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 11 november 2008 @ 10:58:59 #176
187069 slacker_nl
Sicko pur sang
pi_63124090
In theory there is no difference between theory and practice. In practice there is.
  dinsdag 11 november 2008 @ 11:08:17 #177
136730 PiRANiA
All thinking men are atheists.
pi_63124323
1
2
3
4
<?php
$nlDagen
=Array('','Maandag','Dinsdag','Woensdag','Donderdag','Vrijdag','Zaterdag','Zondag');
$dagNaam=$nlDagen[time(N)];
?>


[ Bericht 2% gewijzigd door PiRANiA op 11-11-2008 14:39:15 ]
  dinsdag 11 november 2008 @ 14:54:33 #178
12880 CraZaay
prettig gestoord
pi_63129726
Ik zoek een goede PHP library/script voor het parsen van RSS, voornamelijk 2.0 (maar als het even kan ook andere formaten). Aan MagpieRSS is inmiddels al 3 jaar niets gedaan, dus ik vroeg me af of er inmiddels iets nieuwers/beters is?
  dinsdag 11 november 2008 @ 15:04:12 #179
12221 Tijn
Powered by MS Paint
pi_63129981
Zend Framework heeft een component genaamd Zend_Feed die RSS en Atom feeds kan handlen. Die kun je volgens mij ook los gebruiken (dus zonder het hele Zend Framework eromheen). Is dat wat?
  dinsdag 11 november 2008 @ 15:41:51 #180
187069 slacker_nl
Sicko pur sang
pi_63131052
In theory there is no difference between theory and practice. In practice there is.
  dinsdag 11 november 2008 @ 16:52:19 #181
148588 rulerofdeath
Ruler the Rotting-BrainEater
pi_63133079
hallo,

ik probeer een website in te delen met het div-statement. maar hoe kan ik van tijd tot tijd de 'main' veranderen?
is de code hieronder goed daarvoor te gebruiken of is dit anders te doen?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<div id="navigatie">
      <ul>
         <li><a href="/">Home</a></li>
         <li><a href="http://www.biertafel.eu/index.php?submit">Over ons</a></li>
         <li><a href="/">Archief</a></li>
         <li><a href="http://forum.biertafel.eu">Forum</a></li>
         <li><a href="/">Winkel</a></li>
         <li><a href="/">Contact</a></li>
      </ul>
      </div>
      
      <div id="main">
      <?php            
         if(isSet($_GET['submit'])) {
            include('polladmin.php');
         }
         else {
            include('poll.php');
         }
      ?>
      <P>
Learn as if you're going to live forever, Live as if you're going to die tomorrow
De BIE®TAFELop youtube en dumpert _O_ &gt;100k views *O*
I wanna die the same way I was born: Screaming and covered with blood
Arbeit macht frei. Ik heb nu 40 jaar vakantie *O*
pi_63133949
op zich een prima manier, maar ik zou het includen van de admin niet af laten hangen van het gezet zijn van een get-variabele... dat is nogal een security risk namelijk
  dinsdag 11 november 2008 @ 17:29:35 #183
62215 qu63
..de tijd drinkt..
pi_63134046
quote:
Op dinsdag 11 november 2008 17:26 schreef Xcalibur het volgende:
op zich een prima manier, maar ik zou het includen van de admin niet af laten hangen van het gezet zijn van een get-variabele... dat is nogal een security risk namelijk
kijk maar naar de poll op de homepage
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_63134296
uh, poll, homepage?
Ik geloof niet dat ik snap waar je het over hebt....
  dinsdag 11 november 2008 @ 17:42:51 #185
62215 qu63
..de tijd drinkt..
pi_63134359
quote:
Op dinsdag 11 november 2008 17:40 schreef Xcalibur het volgende:
uh, poll, homepage?
Ik geloof niet dat ik snap waar je het over hebt....
De poll op zn homepage heeft totaal geen beveiliging, iedereen kan een nieuwe poll aanmaken..
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  dinsdag 11 november 2008 @ 17:44:05 #186
148588 rulerofdeath
Ruler the Rotting-BrainEater
pi_63134397
quote:
Op dinsdag 11 november 2008 17:26 schreef Xcalibur het volgende:
op zich een prima manier, maar ik zou het includen van de admin niet af laten hangen van het gezet zijn van een get-variabele... dat is nogal een security risk namelijk :)
ik weet dat iedereen de admin-pagina kan bereiken. dit is ook alleen maar om te testen.
ben een beetje aan het klooien met m'n webpagina.

is het ook mogelijk om onderstaande te vervangen door variabelen en dat ik niet alles hoef te hardcoden? (Dat ik dus de naam van de webpagina als variabele kan gebruiken)
1
2
if(isSet($_GET['submit'])) {
            include('polladmin.php');
Learn as if you're going to live forever, Live as if you're going to die tomorrow
De BIE®TAFELop youtube en dumpert _O_ &gt;100k views *O*
I wanna die the same way I was born: Screaming and covered with blood
Arbeit macht frei. Ik heb nu 40 jaar vakantie *O*
  dinsdag 11 november 2008 @ 17:46:09 #187
148588 rulerofdeath
Ruler the Rotting-BrainEater
pi_63134443
quote:
Op dinsdag 11 november 2008 17:42 schreef qu63 het volgende:

[..]

De poll op zn homepage heeft totaal geen beveiliging, iedereen kan een nieuwe poll aanmaken..
klopt, dat weet ik.
Learn as if you're going to live forever, Live as if you're going to die tomorrow
De BIE®TAFELop youtube en dumpert _O_ &gt;100k views *O*
I wanna die the same way I was born: Screaming and covered with blood
Arbeit macht frei. Ik heb nu 40 jaar vakantie *O*
  dinsdag 11 november 2008 @ 17:46:55 #188
63192 ursel
"Het Is Hier Fantastisch!
pi_63134465
quote:
Op dinsdag 11 november 2008 17:26 schreef Xcalibur het volgende:
op zich een prima manier, maar ik zou het includen van de admin niet af laten hangen van het gezet zijn van een get-variabele... dat is nogal een security risk namelijk
En een extra check op je polladmin kan ook geen kwaad..
Spuit 11 op zijn trage laptop
pi_63135079
quote:
Op dinsdag 11 november 2008 17:44 schreef rulerofdeath het volgende:

[..]

ik weet dat iedereen de admin-pagina kan bereiken. dit is ook alleen maar om te testen.
ben een beetje aan het klooien met m'n webpagina.

is het ook mogelijk om onderstaande te vervangen door variabelen en dat ik niet alles hoef te hardcoden? (Dat ik dus de naam van de webpagina als variabele kan gebruiken)
[ code verwijderd ]
Zoiets bedoel je?

/path/to/site/index.php?page=poll
1
2
3
<?php
include($_GET['page'].'.php');
?>


Dat werkt gewoon. Het is absoluut niet veilig, maar dat vroeg je ook niet.
  dinsdag 11 november 2008 @ 19:18:09 #190
148588 rulerofdeath
Ruler the Rotting-BrainEater
pi_63136968
quote:
Op dinsdag 11 november 2008 18:11 schreef Light het volgende:

[..]

Zoiets bedoel je?

/path/to/site/index.php?page=poll
[ code verwijderd ]

Dat werkt gewoon. Het is absoluut niet veilig, maar dat vroeg je ook niet.
bedankt. zoiets bedoel ik.

Qua veiligheid maakt het toch niets uit als ik op deze manier alleen pagina's wil weergeven en niet een pagina als die polladmin.php wil bereiken?
Learn as if you're going to live forever, Live as if you're going to die tomorrow
De BIE®TAFELop youtube en dumpert _O_ &gt;100k views *O*
I wanna die the same way I was born: Screaming and covered with blood
Arbeit macht frei. Ik heb nu 40 jaar vakantie *O*
pi_63137824
quote:
Op dinsdag 11 november 2008 19:18 schreef rulerofdeath het volgende:

[..]

bedankt. zoiets bedoel ik.

Qua veiligheid maakt het toch niets uit als ik op deze manier alleen pagina's wil weergeven en niet een pagina als die polladmin.php wil bereiken?
Het probleem met variabelen uit de QueryString is dat ze zo makkelijk te beïnvloeden zijn en dus erg vatbaar zijn voor kwaadwillige injectie vanuit de gebruikerskant. Er kunnen op die manier dus allerlei onverwachte problemen opduiken.

Beter zou zijn als je bijvoorbeeld een nummer uit de QueryString zou uitlezen, en aan de hand van dat nummer middels een switch() de corresponderende pagina meepikken met include().
  dinsdag 11 november 2008 @ 19:46:38 #192
148588 rulerofdeath
Ruler the Rotting-BrainEater
pi_63137958
dus ietsjes meer typewerk scheelt wel in de veiligheid?

dan gaat dat voor.
Learn as if you're going to live forever, Live as if you're going to die tomorrow
De BIE®TAFELop youtube en dumpert _O_ &gt;100k views *O*
I wanna die the same way I was born: Screaming and covered with blood
Arbeit macht frei. Ik heb nu 40 jaar vakantie *O*
pi_63138089
Op zich is het natuurlijk niet zo'n probleem dat je de naam van de pagina's in de querystring meegeeft, maar je moet wel zorgen dat alleen je éigen pagina's geopend kunnen worden

Dat niet iemand dus /site/index.php?page=http://www.h4x0r.com gaat openen, en vervelend gaat doen. Zoiets kan je vrij eenvoudig voorkomen door een variabele in je include te zetten die je checked, of natuurlijk door je GET te checken voordat je er uberhaupt wat mee doet
pi_63138139
quote:
Op dinsdag 11 november 2008 19:46 schreef rulerofdeath het volgende:
dus ietsjes meer typewerk scheelt wel in de veiligheid?

dan gaat dat voor.
Laat ik je een geheimpje verklappen: Met het programmeerwerk voor expliciet hetgeen dat je wilt doen, ben je meestal zo klaar. Vaak ben je echter meer dan de helft van de tijd bezig met het 'hufterproof' maken van je script/programma.
pi_63138511
ja, zorgen dat het werkt is niet zo ingewikkeld.... zorgen dat het niet kapot gaat als je lomp doet is de echte uitdaging
  woensdag 12 november 2008 @ 08:43:53 #196
85919 Likkende_Lassie
Doe eens wat aan je ondertitel
pi_63150109
Even een update, ik heb een koppeltabel gemaakt, en het draait nu als een zonnetje! Werkt lekker snel!

Bedankt allen!
  vrijdag 14 november 2008 @ 09:28:36 #197
85919 Likkende_Lassie
Doe eens wat aan je ondertitel
pi_63212870
Vraagje, als ik waardes door de volgende functie haal, om ze veilig te maken, komen ze alsnog met quotes en zonder slashes in de database, ik weet waarom, maar is het veilig genoeg?

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
function quote_smart($value$type false$NULL false) {
   
$value trim($value);
   
   
   if (
$type != 'html'){
      
$value strip_tags($value);
   }
   
   if (
strlen($value)) {
      
# We have something
      
if ($type == 'num'){
         if (
is_numeric($value)){
            return 
$value;
         }else{
            
trigger_error(sprintf("%s: '%s' is not a number!"__FUNCTION__$value), E_USER_ERROR);
            return 
null;
         }
      }else{
         if (
get_magic_quotes_gpc()) {
            
$value stripslashes($value);
         }
         
         if(
version_compare(phpversion(),"4.3.0") == "-1") {
            return 
mysql_escape_string($value);
         } else {
            return 
mysql_real_escape_string($value);
         }
      }
   }else{
      if (
$NULL) {
         return 
null;
      }
   }
}
?>
pi_63213052
quote:
Op vrijdag 14 november 2008 09:28 schreef Likkende_Lassie het volgende:
Vraagje, als ik waardes door de volgende functie haal, om ze veilig te maken, komen ze alsnog met quotes en zonder slashes in de database, ik weet waarom, maar is het veilig genoeg?
[ code verwijderd ]
Ja, het is wanneer we het over data-opslag hebben natuurlijk logisch dat data opgeslagen wordt hoe het door de gebruiker ingevoerd wordt. Het beveiligen is nodig op het moment dat de invoer-query uitgevoerd wordt, op dat moment worden aanhalingstekens e.d. dusdanig onschadelijk gemaakt zodat de uitvoerende functie niet geïnjecteerd kan worden met bagger.

Een functie als deze is overigens al voldoende om kwaadwillige invoer in geval van MySQL queries te filteren:
1
2
3
4
5
6
7
8
9
function safeValue($value){
   if(get_magic_quotes_gpc()){
      $value=stripslashes($value);
   }
   if(!is_numeric($value)){
      $value=mysql_real_escape_string($value);
   }
   return $value;
}
pi_63214155
Om te voorkomen dat ik 30 keer een query moet doen in een for bouw ik een array op buiten mijn for, dit doe ik door middel van:

1
2
3
4
5
6
7
8
9
<?php
$Month 
'11';
$Year '2008';

$a_query    mysql_query("SELECT `datum` FROM `data` WHERE `datum` LIKE '%-$Month-$Year'");
while (
$array mysql_fetch_array($a_queryMYSQL_ASSOC)) {
    
$arrays[] = $array;
}
?>


Nu heb ik de data wat uit de terug komt gezet in $arrays.

Vervolgens wil ik in een for checken of de datum in mijn for voorkomt in de array, door middel van:

1
2
3
4
5
6
7
8
9
10
<?php
$DaysMonth    
cal_days_in_month(CAL_GREGORIAN$Month$Year);

for (
$i 1$i <= $DaysMonth$i++) {

$date '' .$i'-' .$Month'-' .$Year'';
if (
in_array('$date'$arrays)) { echo "yes"; }

}
?>


Echter werkt dit niet omdat ik in mijn while een array in een array maak.
Wat is hier de oplossing van?
ne okuyon, bokmu var?
pi_63214336
quote:
Op vrijdag 14 november 2008 10:25 schreef saban het volgende:
Om te voorkomen dat ik 30 keer een query moet doen in een for bouw ik een array op buiten mijn for, dit doe ik door middel van:
[ code verwijderd ]

Nu heb ik de data wat uit de terug komt gezet in $arrays.

Vervolgens wil ik in een for checken of de datum in mijn for voorkomt in de array, door middel van:
[ code verwijderd ]

Echter werkt dit niet omdat ik in mijn while een array in een array maak.
Wat is hier de oplossing van?
Waarom zo omslachtig? Je kunt toch ook al door middel van DAY() / MONTH() / YEAR() MySQL functies in je query de records ophalen die je moet hebben?
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')