abonnement Unibet Coolblue Bitvavo
pi_60515745
ik ga me straks of morgen eens inlezen hoe dat nou werkt met classes en extenden enzo

Ik gebruik wel classes, maar die staan altijd apart van elkaar.... Ik heb nu een wat complexer geheel waarbij ik wat algemene functies heb, en soms wat extra, specifieke, functies. Volgens mij kan ik dat mooi daarmee oplossen, zonder dat ik allerlei dubbele code krijgt.... maar het is me nog niet helemaal duidelijk
pi_60524086
quote:
Op zaterdag 2 augustus 2008 21:04 schreef Xcalibur het volgende:
ik ga me straks of morgen eens inlezen hoe dat nou werkt met classes en extenden enzo

Ik gebruik wel classes, maar die staan altijd apart van elkaar.... Ik heb nu een wat complexer geheel waarbij ik wat algemene functies heb, en soms wat extra, specifieke, functies. Volgens mij kan ik dat mooi daarmee oplossen, zonder dat ik allerlei dubbele code krijgt.... maar het is me nog niet helemaal duidelijk
Ja. Het principe heet OOP:

http://en.wikipedia.org/wiki/Object_oriented
  zondag 3 augustus 2008 @ 13:57:45 #203
84926 WyriHaximus
Release the hounds smithers!
pi_60525882
quote:
Op zondag 3 augustus 2008 12:17 schreef Scorpie het volgende:

[..]

Ja. Het principe heet OOP:

http://en.wikipedia.org/wiki/Object_oriented
Aye en OOP is erg geil tof .
phluphy for president!
pi_60528292
I know

Ik werk ook wel met classes, alleen dat extenden is nog nieuw
Heb al even in de PHP documentatie gekeken, dat ziet er vrij overzichtelijk uit...
pi_60528758
quote:
Op zondag 3 augustus 2008 16:05 schreef Xcalibur het volgende:
I know

Ik werk ook wel met classes, alleen dat extenden is nog nieuw
Heb al even in de PHP documentatie gekeken, dat ziet er vrij overzichtelijk uit...
OOP is niet iets wat je uit PHP documentatie kan leren, het is een manier van ontwerpen en programmeren. Die leer je beter door een algemene tutorial over OOP door te nemen.
pi_60529616
Ik moet zeggen dat ik de Perl OO tutorial wel erg prettig vond om te lezen. Zie het Perl topic voor de linkjes
pi_60538628
het principe snap ik wel, ik gebruik het alleen maar beperkt
Maar toch bedankt
pi_60558447
Nog een korte vraag m.b.t. on duplicate,

voor een script moet ik heel veel ID's achterhalen, en indien deze niet bestaat de regel toevoegen, is het handiger om toch een query te doen om te kijken of deze bestaat of gewoon altijd een insert waarbij ik de on duplicate gebruik? want het resultaat is praktisch het zelfde...
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_60558513
Waarom heb je de ID's nodig?
pi_60558548
Chandler, moet je avatar trouwens m'n browser versie en OS raden?
pi_60558902
nou, dat hoop ik niet, want ik zie IE7.0 / Windows XP terwijl ik op Safari op de Mac zit

Wat betreft on duplicate: ik zou on duplicate gebruiken, dan doe je in 1 query wat je anders in 2 queries doet
Waarom zou je het niet doen?
pi_60558965
quote:
Op maandag 4 augustus 2008 20:29 schreef slakkie het volgende:
Waarom heb je de ID's nodig?
Voor mijn statistieken systeem ala ipcounter.nl, had in mijn nieuwe systeem vaak een probleem dat een uniek veld dubbel geschreven werdt. Even om duidelijk te zijn.

In het oude systeem deed ik.

Query voor kijken of item bestaat
JA -> fetch en return ID
Nee -> Insert en return mysql_insert_id()

In het nieuwe systeem heb ik dit allemaal verwijderd door de simpele INSERT INTO.... ON DUPLICATE KEY id = MYSQL_LAST_ID(id) waarbij de output precies het zelfde is, echter vraag ik me af of dit op den duur het systeem niet erg traag zou maken!?
quote:
Op maandag 4 augustus 2008 20:30 schreef slakkie het volgende:
Chandler, moet je avatar trouwens m'n browser versie en OS raden?
Dat is inderdaad de bedoeling? zie je een fout gegeven dan?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_60559022
quote:
Op maandag 4 augustus 2008 20:45 schreef Xcalibur het volgende:
nou, dat hoop ik niet, want ik zie IE7.0 / Windows XP terwijl ik op Safari op de Mac zit

Wat betreft on duplicate: ik zou on duplicate gebruiken, dan doe je in 1 query wat je anders in 2 queries doet
Waarom zou je het niet doen?
Zou je mij jou BROWSER informatie string willen sturen? zodat ik deze kan verwerken?

http://www.useragentstring.com/

Ik wil zeker weten dat ik mijn systeem niet verkloot, liefst voordat ik deze online zet, helaas kan ik de preformance van de servers niet inzien aangezien het een shared hosting server is (en ik geen toestemming voor het inzien krijg)
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_60559207
quote:
Op maandag 4 augustus 2008 20:48 schreef Chandler het volgende:

[..]

Voor mijn statistieken systeem ala ipcounter.nl, had in mijn nieuwe systeem vaak een probleem dat een uniek veld dubbel geschreven werdt. Even om duidelijk te zijn.

In het oude systeem deed ik.

Query voor kijken of item bestaat
JA -> fetch en return ID
Nee -> Insert en return mysql_insert_id()

In het nieuwe systeem heb ik dit allemaal verwijderd door de simpele INSERT INTO.... ON DUPLICATE KEY id = MYSQL_LAST_ID(id) waarbij de output precies het zelfde is, echter vraag ik me af of dit op den duur het systeem niet erg traag zou maken!?
[..]
Die vraag heb ik al eens beantwoord, maar je kan het in 1 query doen, waarom 2 queries gaan doen?
REPLACE INTO ip (ip, hostname) VALUES ('127.0.0.1', 'localhost').
quote:
Dat is inderdaad de bedoeling? zie je een fout gegeven dan?
Joh... XP en FF3 terwijl ik Ubuntu 6.10 / FF2.0.0.14 draai.
pi_60559472
quote:
Op maandag 4 augustus 2008 20:55 schreef slakkie het volgende:
Die vraag heb ik al eens beantwoord, maar je kan het in 1 query doen, waarom 2 queries gaan doen?
REPLACE INTO ip (ip, hostname) VALUES ('127.0.0.1', 'localhost').
Mja het gaat mij er continue om om bepaalde ID's te achterhalen en te zetten, oftewel veel al insert en update wat ik dus nu in 1 query doe maar goed, ik vertrouw er nu op dat het niet zo goed is als eerst zoeken, dan plaatsen of uitlezen...
quote:
Joh... XP en FF3 terwijl ik Ubuntu 6.10 / FF2.0.0.14 draai.
Mag ik jou useragentstring dan ook?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_60559832
quote:
Op maandag 4 augustus 2008 21:05 schreef Chandler het volgende:
Mja het gaat mij er continue om om bepaalde ID's te achterhalen en te zetten, oftewel veel al insert en update wat ik dus nu in 1 query doe maar goed, ik vertrouw er nu op dat het niet zo goed is als eerst zoeken, dan plaatsen of uitlezen...
Je wilt geen update doen als het record gelijk is aan wat je gaat invoeren?
quote:
Mag ik jou useragentstring dan ook?
Zitten in je access logs.
pi_60564134
quote:
Op maandag 4 augustus 2008 21:18 schreef slakkie het volgende:
Je wilt geen update doen als het record gelijk is aan wat je gaat invoeren?
In heel veel gevallen wil ik iets lezen, tenzij het niet bestaat dan invoeren. Laten we zeggen dat 95% uit lezen bestaat en 5% uit invoeren cq updaten.
quote:
Zitten in je access logs.
Duidelijk
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  dinsdag 5 augustus 2008 @ 12:14:55 #218
187069 slacker_nl
Sicko pur sang
pi_60572332
quote:
Op maandag 4 augustus 2008 23:44 schreef Chandler het volgende:

[..]

In heel veel gevallen wil ik iets lezen, tenzij het niet bestaat dan invoeren. Laten we zeggen dat 95% uit lezen bestaat en 5% uit invoeren cq updaten.
[..]

Duidelijk
Je gaat daarna nog wat met het ID doen? Ik snap echt niet wat je nou precies aan het doen bent. Maar als je 95% van de tijd alleen interesse hebt in de ID's kan je net zo goed de ID opvragen en dan verder gaan, de overhead die je in met de overige 5% hebt is dan verder te verwaarlozen. In de huidige constructie ben je 100% bezig met read/write acties en anders ben je 95% read en 5% write acties aan het uitvoeren. De overhead van altijd updaten lijkt me meer wegen dan een tweede query voor een write actie.
In theory there is no difference between theory and practice. In practice there is.
pi_60590310
Hallo,

vroeger had ik ergens een heel simpel script gevonden. (althans het zag er heel simpel uit qua looks)

Je kon in het bestand een eindsaldo invullen en een saldo wat je uit eindelijk hebt. dat berekende hij door in een percentage wat er dus nog gespaard moest worden.

het uiteindelijke plaatje was dus echt heel simpel. Links groen rechts rood en verders hellemaal niets. geen tekst niets. weet iemand waar ik dat sciptje weer kan vinden. had het ergens van een site geplukt.
Kus-Kus
pi_60593234
quote:
Op dinsdag 5 augustus 2008 12:14 schreef slacker_nl het volgende:

[..]

Je gaat daarna nog wat met het ID doen? Ik snap echt niet wat je nou precies aan het doen bent. Maar als je 95% van de tijd alleen interesse hebt in de ID's kan je net zo goed de ID opvragen en dan verder gaan, de overhead die je in met de overige 5% hebt is dan verder te verwaarlozen. In de huidige constructie ben je 100% bezig met read/write acties en anders ben je 95% read en 5% write acties aan het uitvoeren. De overhead van altijd updaten lijkt me meer wegen dan een tweede query voor een write actie.
Slacker_nl, ik zou graag wat dieper hier op in gaan maar kan dat helaas niet op het forum, ik wil je met plezier laten zien waar ik dit alles voor gebruik! PM voor meer info indien je geintresseerd bent
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  woensdag 6 augustus 2008 @ 10:46:23 #221
187069 slacker_nl
Sicko pur sang
pi_60595335
Je hebt een pm.
In theory there is no difference between theory and practice. In practice there is.
  woensdag 6 augustus 2008 @ 17:03:56 #222
65516 gieling
Live from NYC
pi_60604164
Ik heb een probleempje, dus eerst maar even hier voorleggen.

Ik heb sinds kort een mac en daarop MAMP geinstalleerd... alleen als ik nu een script draai die postgegevens uit een form haalt, herkent hij de POST data niet. GET is verder geen probleem. Het script draait ook op een andere server dus het ligt zeker niet aan de code.

Iemand een idee waar het aan kan liggen?
  woensdag 6 augustus 2008 @ 17:07:25 #223
12221 Tijn
Powered by MS Paint
pi_60604236
Hoe ziet je script eruit?
  woensdag 6 augustus 2008 @ 17:14:22 #224
63192 ursel
"Het Is Hier Fantastisch!
pi_60604383
quote:
Op woensdag 6 augustus 2008 17:03 schreef gieling het volgende:
Ik heb een probleempje, dus eerst maar even hier voorleggen.

Ik heb sinds kort een mac en daarop MAMP geinstalleerd... alleen als ik nu een script draai die postgegevens uit een form haalt, herkent hij de POST data niet. GET is verder geen probleem. Het script draait ook op een andere server dus het ligt zeker niet aan de code.

Iemand een idee waar het aan kan liggen?
Heel misschien omdat de ene machine case sensitive is en de ander niet?
Dan kan het mogelijk nog steeds aan je code liggen..
  woensdag 6 augustus 2008 @ 17:19:38 #225
65516 gieling
Live from NYC
pi_60604500
Bijvoorbeeld deze, maar ook bij andere forms is het het geval..


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
<?php
if($_GET["page"]=='edit') {

    
$get_cat_info=mysql_query("SELECT * FROM categories WHERE id=".$cid."")or die(mysql_error());
    
$cat_info=mysql_fetch_assoc($get_cat_info);

if(
$cat_info["status"]=='open') {
        
$open='selected';
    }else{
        
$closed='selected';
    }
    
        
$content='<b>Categorie - Wijzigen</b><br><br>
<form title="add" action="categorie.php?page=edit2&cid='
.$_GET["cid"].'" method="post">Titel voor categorie (Nederlands):&nbsp;<input title="title" type="text" size="30" class="form" value="'.$cat_info["title"].'" /><br><br>
Titel voor categorie (Engels):&nbsp;<input title="title_en" type="text" size="30" class="form" value="'
.$cat_info["title_en"].'" /><br><br>
Status van de Categorie:&nbsp;<select title="status" size="1" class="form"><option value="Open" '
.$open.'>Open</option><option value="close
d" '
.$closed.'>closed</option></select><br><br>Toevoegen:&nbsp;<input type="submit" title="Submit" value="Toevoegen" class="form" /></form>';
    
}
if(
$_GET["page"]=='edit2') {

        
mysql_query("UPDATE categories SET title='".$_POST["title"]."',title_en='".$_POST["title_en"]."',status='".$_POST["status"]."' WHERE id=".$_GET["cid"]."")or die(mysql_error());
    
        
$content='<b>Categorie - Wijzigen</b><br /><br />De categorie is succesvol gewijzigd. Klik <a href="categorie.php">hier</a> om verder te gaan.';
}
?>
  woensdag 6 augustus 2008 @ 17:27:20 #226
187069 slacker_nl
Sicko pur sang
pi_60604662
Ipv _POST en _GET kan je beter _REQUEST gebruiken... _POST en _GET zitten gewoon in _REQUEST:

http://nl3.php.net/manual/en/reserved.variables.request.php
In theory there is no difference between theory and practice. In practice there is.
  woensdag 6 augustus 2008 @ 17:30:32 #227
65516 gieling
Live from NYC
pi_60604726
quote:
Op woensdag 6 augustus 2008 17:27 schreef slacker_nl het volgende:
Ipv _POST en _GET kan je beter _REQUEST gebruiken... _POST en _GET zitten gewoon in _REQUEST:

http://nl3.php.net/manual/en/reserved.variables.request.php
Geprobeerd maar haalt niks uit
  woensdag 6 augustus 2008 @ 17:37:26 #228
187069 slacker_nl
Sicko pur sang
pi_60604871
Dat lijkt me sterk...

Een URL met daarin debug info, zodat we kunnen zien wat er fout gaat?
In theory there is no difference between theory and practice. In practice there is.
  woensdag 6 augustus 2008 @ 17:44:49 #229
32768 DionysuZ
Respect my authority!
pi_60605014
en verder zou ik me eens inlezen in sql injecties, want die code is erg vulnerable.
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
  woensdag 6 augustus 2008 @ 17:58:54 #230
65516 gieling
Live from NYC
pi_60605301
quote:
Op woensdag 6 augustus 2008 17:37 schreef slacker_nl het volgende:
Dat lijkt me sterk...

Een URL met daarin debug info, zodat we kunnen zien wat er fout gaat?
Code draait local he Of hoe doe ik het anders
quote:
Op woensdag 6 augustus 2008 17:44 schreef DionysuZ het volgende:
en verder zou ik me eens inlezen in sql injecties, want die code is erg vulnerable.
yes i know, maar script is toegankelijk voor één persoon (verder geen excuus)
pi_60605624
quote:
Op woensdag 6 augustus 2008 17:27 schreef slacker_nl het volgende:
Ipv _POST en _GET kan je beter _REQUEST gebruiken... _POST en _GET zitten gewoon in _REQUEST:

http://nl3.php.net/manual/en/reserved.variables.request.php
$_REQUEST heeft ook nadelen. Je weet niet meer of een waarde via GET of POST (of COOKIE) geset is. En het is meer typen.
pi_60606412
quote:
Op woensdag 6 augustus 2008 18:18 schreef Light het volgende:

[..]

$_REQUEST heeft ook nadelen. Je weet niet meer of een waarde via GET of POST (of COOKIE) geset is. En het is meer typen.
Mja, _GET en _POST zijn nagenoeg hetzelfde, in JSP moet je ook een _get en een _post functie maken, waarbij je 9 vd 10 keer _get doorsluist naar de _post functie.

_COOKIE kan ik het nog begrijpen, maar je weet toch zelf wel waar je de value vandaan haalt...

En if ($_REQUEST['val'] == 'blaat') is korter dan: if ($_GET['val'] == "blaat" || $_POST['val'] == "blaat").
  woensdag 6 augustus 2008 @ 19:34:55 #233
75592 GlowMouse
l'état, c'est moi
pi_60607225
quote:
Op woensdag 6 augustus 2008 18:59 schreef slakkie het volgende:
Mja, _GET en _POST zijn nagenoeg hetzelfde, in JSP moet je ook een _get en een _post functie maken, waarbij je 9 vd 10 keer _get doorsluist naar de _post functie.
Daar gaat de illusie dat JSP professioneel is verschil GET/POST
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_60607383
quote:
Op woensdag 6 augustus 2008 18:59 schreef slakkie het volgende:

[..]

Mja, _GET en _POST zijn nagenoeg hetzelfde, in JSP moet je ook een _get en een _post functie maken, waarbij je 9 vd 10 keer _get doorsluist naar de _post functie.
_GET bevat alle variabelen die via de url (na het vraagteken) of via een formulier met method="get" worden meegezonden
_POST bevat alle variabelen die via een formulier met method="post" worden meegezonden. Da's niet hetzelfde.
Als je _REQUEST gebruikt kan ik een linkje bouwen dat hetzelfde doet als een formuliertje. Door dan iemand op dat linkje te laten klikken (klik hier om 1 miljoen euro te winnen), kunnen er dingen gebeuren die jij niet had voorzien. Het effect kan onbeduidend zijn maar ook tot gekkere dingen leiden.
quote:
_COOKIE kan ik het nog begrijpen, maar je weet toch zelf wel waar je de value vandaan haalt...

En if ($_REQUEST['val'] == 'blaat') is korter dan: if ($_GET['val'] == "blaat" || $_POST['val'] == "blaat").
Je moet dan ook of if('blaat' == $_GET['val']) of if('blaat' == $_POST['val']) gebruiken. En ja, ik heb de constante expres vooraan gezet in die vergelijkingen.
pi_60608370
quote:
Op woensdag 6 augustus 2008 19:42 schreef Light het volgende:

[..]

_GET bevat alle variabelen die via de url (na het vraagteken) of via een formulier met method="get" worden meegezonden
_POST bevat alle variabelen die via een formulier met method="post" worden meegezonden. Da's niet hetzelfde.

Als je _REQUEST gebruikt kan ik een linkje bouwen dat hetzelfde doet als een formuliertje. Door dan iemand op dat linkje te laten klikken (klik hier om 1 miljoen euro te winnen), kunnen er dingen gebeuren die jij niet had voorzien. Het effect kan onbeduidend zijn maar ook tot gekkere dingen leiden.
_REQUEST geeft preference op _POST en niet op _GET, dus als jij data post en je zorgt dat de link ?val=bla bevat (om zo de data van _POST te overwriten) dan kom je bedrogen uit aangezien de _POST var voorrang heeft in de _REQUEST var. Dus waarom zou je dan in de problemen komen? Verder is het zo dat als je met _POST of _GET gaat werken dat je meer code moet kloppen (met debuggen gebruik je vaak een GET, en in live situaties ga je POST gebruiken). Jij moet voor deze twee gevallen extra code gaan kloppen terwijl ik alleen met _REQUEST gebruik en dus nergens m'n code hoef aan te passen.... Dus zowel met de GET als de POST kan ik op een generieke wijze overweg.
quote:
Je moet dan ook of if('blaat' == $_GET['val']) of if('blaat' == $_POST['val']) gebruiken. En ja, ik heb de constante expres vooraan gezet in die vergelijkingen.
Uhm, ik zie hier iemand _POST en _GET door elkaar gebruiken, en m.i. moet je een call kunnen maken met zowel POST als GET en hetzelfde resultaat krijgen. _REQUEST is gewoon makkelijker, aangezien je je niet druk hoeft te maken over hoe de variablen in je request terecht komen, via GET of POST.

Het boeit mij verder niet waar je de constante neerzet, zolang ie maar aan de juiste voorwaarde voldoet.
pi_60609479
quote:
Op woensdag 6 augustus 2008 20:24 schreef slakkie het volgende:

[..]

_REQUEST geeft preference op _POST en niet op _GET, dus als jij data post en je zorgt dat de link ?val=bla bevat (om zo de data van _POST te overwriten) dan kom je bedrogen uit aangezien de _POST var voorrang heeft in de _REQUEST var. Dus waarom zou je dan in de problemen komen? Verder is het zo dat als je met _POST of _GET gaat werken dat je meer code moet kloppen (met debuggen gebruik je vaak een GET, en in live situaties ga je POST gebruiken). Jij moet voor deze twee gevallen extra code gaan kloppen terwijl ik alleen met _REQUEST gebruik en dus nergens m'n code hoef aan te passen.... Dus zowel met de GET als de POST kan ik op een generieke wijze overweg.
REQUEST bevat idd eerst GET en dan POST, als een variabele in beide geset wordt dan krijg je alleen de POST-waarde.
Het verwerken van formulierdata wil je meestal niet doen met variabelen die uit een GET komen. Voorbeeldje. Je hebt een formuliertje om dingen te verwijderen. Dat formuliertje gebruikt post en stuurt data (id=123) naar example.com/delete.php . In de verwerking wordt _REQUEST gebruikt.
Als ik dan iemand laat klikken op example.com/delete.php?id=123 ziet het formulier ook een id en wordt er dus ook iets verwijderd. En ja, het kan nog zo zijn dat voor die actie bepaalde rechten nodig zijn. Dan moet ik iemand met voldoende rechten op die link laten klikken. Da's niet zo moeilijk als het misschien lijkt.

Had je echter _POST gebruikt dan doet het klikken op het linkje niets, omdat er geen waarde via POST wordt verzonden. En ja, ik weet dat er meer manieren zijn en dat het ook mogelijk is om met bijvoorbeeld javascript een post-request uit te voeren. Maar je maakt het wel lastiger op die manier.
Ander voorbeeld. Stel je hebt een weblog waar bezoekers anoniem kunnen reageren. Dat gaat via een post-formuliertje. Iemand komt erachter dat het ook werkt als je de waardes in de url zet ipv via het formuliertje en zet die url op een forum ofzo. Gevolg, je krijgt 10.000 reacties van "anoniempje" met de tekst "slakkie is gek".
quote:
Uhm, ik zie hier iemand _POST en _GET door elkaar gebruiken, en m.i. moet je een call kunnen maken met zowel POST als GET en hetzelfde resultaat krijgen. _REQUEST is gewoon makkelijker, aangezien je je niet druk hoeft te maken over hoe de variablen in je request terecht komen, via GET of POST.
Ik kan me situaties voorstellen waarin een deel van de velden via _GET en een deel via _POST komt of waarbij je beide opties wilt kunnen gebruiken. Maar _REQUEST is niet de oplossing die ik wil prediken als juist in alle situaties. Het kan een oplossing zijn, maar dan moet het wel goed doordacht worden.
quote:
Het boeit mij verder niet waar je de constante neerzet, zolang ie maar aan de juiste voorwaarde voldoet.
True. Het grootste verschil is dat je meteen een dikke foutmelding om je oren krijgt als de constante eerst staat en je een = vergeet. Dat kan debugtijd schelen.
pi_60611039
quote:
Op woensdag 6 augustus 2008 21:07 schreef Light het volgende:
REQUEST bevat idd eerst GET en dan POST, als een variabele in beide geset wordt dan krijg je alleen de POST-waarde.
Het verwerken van formulierdata wil je meestal niet doen met variabelen die uit een GET komen. Voorbeeldje. Je hebt een formuliertje om dingen te verwijderen. Dat formuliertje gebruikt post en stuurt data (id=123) naar example.com/delete.php . In de verwerking wordt _REQUEST gebruikt.
Als ik dan iemand laat klikken op example.com/delete.php?id=123 ziet het formulier ook een id en wordt er dus ook iets verwijderd. En ja, het kan nog zo zijn dat voor die actie bepaalde rechten nodig zijn. Dan moet ik iemand met voldoende rechten op die link laten klikken. Da's niet zo moeilijk als het misschien lijkt.

Had je echter _POST gebruikt dan doet het klikken op het linkje niets, omdat er geen waarde via POST wordt verzonden. En ja, ik weet dat er meer manieren zijn en dat het ook mogelijk is om met bijvoorbeeld javascript een post-request uit te voeren. Maar je maakt het wel lastiger op die manier.

Ander voorbeeld. Stel je hebt een weblog waar bezoekers anoniem kunnen reageren. Dat gaat via een post-formuliertje. Iemand komt erachter dat het ook werkt als je de waardes in de url zet ipv via het formuliertje en zet die url op een forum ofzo. Gevolg, je krijgt 10.000 reacties van "anoniempje" met de tekst "slakkie is gek".
Als je een delete.php form niet de GET accepteert maar in je code staat alleen dat het dmv POST opgestuurd wordt, dan klop je zelf wat stuut je een linkje op: http://opperschaap.net/ditwerktniet en zodra je daar op klikt wordt er een POST verzoek uitgevoerd naar example.com/delete.php met id=1234&hoedje=papier. Problem solved .

Kortom, als je vanwege security redenen iets niet GET zet maar in POST ben je enigsinds naief bezig. Je houdt misschien het beginnende lastpakje buiten de deur, maar anderen die iets meer verstand hebben kunnen die POST wel scripten en die proberen wel wat meer dan 10.000 keer zeggen dat ik gek ben (wat wel klopt overigens ).

Als je echt niet wilt dat bepaalde acties uitgevoerd worden dan ga je access toelaten op basis van IP adres (in Apache, of via je netwerk devices, etc), en zou je in de applicatie laag ook nog gebruik kunnen maken van ACL's (Xins is hier een voorbeeld van, daar kan je calls naar functies toelaten op basis van IP adresses, of je het nou via een GET of een POST uitvoert). En zo kan je van meer dingen gebruik maken om ervoor te zorgen dat er geen oneigenlijk gebruik wordt gemaakt van je systeem/applicatie.
pi_60611516
quote:
Op woensdag 6 augustus 2008 22:03 schreef slakkie het volgende:

[..]

Als je een delete.php form niet de GET accepteert maar in je code staat alleen dat het dmv POST opgestuurd wordt, dan klop je zelf wat stuut je een linkje op: http://opperschaap.net/ditwerktniet en zodra je daar op klikt wordt er een POST verzoek uitgevoerd naar example.com/delete.php met id=1234&hoedje=papier. Problem solved .

Kortom, als je vanwege security redenen iets niet GET zet maar in POST ben je enigsinds naief bezig. Je houdt misschien het beginnende lastpakje buiten de deur, maar anderen die iets meer verstand hebben kunnen die POST wel scripten en die proberen wel wat meer dan 10.000 keer zeggen dat ik gek ben (wat wel klopt overigens ).
Als een browser iets kan, is het ook te scripten. Maar er zijn wel dingen om het lastiger te maken. En een post-request doen met een (server-side) script gaat vaak niet werken, omdat je niet over de juiste koekjes beschikt. Dus je moet het door een browser laten doen. Is ook best mogelijk met wat javascript, daar niet van.
quote:
Als je echt niet wilt dat bepaalde acties uitgevoerd worden dan ga je access toelaten op basis van IP adres (in Apache, of via je netwerk devices, etc), en zou je in de applicatie laag ook nog gebruik kunnen maken van ACL's (Xins is hier een voorbeeld van, daar kan je calls naar functies toelaten op basis van IP adresses, of je het nou via een GET of een POST uitvoert). En zo kan je van meer dingen gebruik maken om ervoor te zorgen dat er geen oneigenlijk gebruik wordt gemaakt van je systeem/applicatie.
Da's ook geen 100% garantie. Als ik een actie http://opperschaap.net/ditwerktniet wil laten uitvoeren zonder dat ik de rechten heb (lees: op het goede ip zit) dan moet ik zorgen dat ik iemand met de goede rechten op die link laat klikken. Dan kan ik jou wel een mail sturen met een blaatverhaal over die site en een link om aan te klikken. Als je dan half oplet en ziet dat die link naar http://example.org/ gaat dan is dat verdacht en klik je niet. Maar een link naar het goede domein valt minder op, dus is de kans dat je klikt groter.

Maar ik denk dat we het nooit helemaal eens zullen worden.
pi_60611865
Dat denk ik ook
pi_60611958
Los van het security issue. Bij een GET request moet je er *per definitie* van kunnen uitgaan, dat er niks zichtbaar wijzigt. Alleen met een POST operatie moet je records kunnen aanmaken, wijzigen, wissen etc. Dat is voor mensen niet zo belangrijk want wij zien het verschil nauwelijks, maar voor bijv webservices is het belangrijk. Die moeten ondubbelzinnig weten welke operatie iets aan de data van de webapplicatie verandert, en welke niet. En daar is het GET/POST onderscheid zeer bruikbaar voor.

Betekent dus dat je in je applicatiecode ook onderscheid moet maken tussen GET en POST, zodat een operatie die bedoeld is om gePOST te worden, nooit werkt dmv een GET request.

Het is een beetje de discussie tabellen vs divs+css: het werkt allebei en je kan met beide methodes alles wel voor elkaar krijgen, maar het is gewoon het beste om wel duidelijk onderscheid tussen GET en POST te maken. Het is absoluut essentieel als je bijv een RESTful webinterface maakt - sterker nog het is een van de hoekstenen van het RESTful principe. Niet zonder reden.

Als illustratie het vast wel bekende verhaal van iemand die een CMS had gebouwd, en daar alleen GET methodes in had gebruikt. Er werd een hele site ingezet, met veel data. Hij had er geen wachtwoord voorgezet, en het CMS werd op een gegeven moment gespiderd door Google. Gevolg: de hele site gewist. Want alle delete-knoppen waren gewoon linkjes met een GET querystring.
pi_60613207
quote:
Op woensdag 6 augustus 2008 22:36 schreef Farenji het volgende:

Als illustratie het vast wel bekende verhaal van iemand die een CMS had gebouwd, en daar alleen GET methodes in had gebruikt. Er werd een hele site ingezet, met veel data. Hij had er geen wachtwoord voorgezet, en het CMS werd op een gegeven moment gespiderd door Google. Gevolg: de hele site gewist. Want alle delete-knoppen waren gewoon linkjes met een GET querystring.
Priceless
Wel een leuk trucje tegen vervelende klanten, als je een site handig opzet Als een spider langskomt ben je in zeer korte tijd zeer veel data kwijt, met die GETs.
  donderdag 7 augustus 2008 @ 09:15:31 #242
84926 WyriHaximus
Release the hounds smithers!
pi_60619535
quote:
Op woensdag 6 augustus 2008 22:36 schreef Farenji het volgende:
Als illustratie het vast wel bekende verhaal van iemand die een CMS had gebouwd, en daar alleen GET methodes in had gebruikt. Er werd een hele site ingezet, met veel data. Hij had er geen wachtwoord voorgezet, en het CMS werd op een gegeven moment gespiderd door Google. Gevolg: de hele site gewist. Want alle delete-knoppen waren gewoon linkjes met een GET querystring.
Whehehehe . (Je kan me hier opvegen .) Is natuurlijk wel het ubervoorbeeld hoe het niet moet .
phluphy for president!
pi_60630840
quote:
Op donderdag 7 augustus 2008 09:15 schreef WyriHaximus het volgende:

[..]

Whehehehe . (Je kan me hier opvegen .) Is natuurlijk wel het ubervoorbeeld hoe het niet moet .
Tja je zal de mensen de kost moeten geven... en de eerlijkheid gebiedt me te zeggen dat ik zelf ook wel zulke fouten heb gemaakt - al was ik altijd wel zo slim om er een wachtwoord voor te plempen
pi_60631522
quote:
Op donderdag 7 augustus 2008 16:18 schreef Farenji het volgende:

[..]

Tja je zal de mensen de kost moeten geven... en de eerlijkheid gebiedt me te zeggen dat ik zelf ook wel zulke fouten heb gemaakt - al was ik altijd wel zo slim om er een wachtwoord voor te plempen
Ik denk dat iedereen wel eens zo'n fout gemaakt heeft.
pi_60631949
quote:
Op donderdag 7 augustus 2008 16:42 schreef Light het volgende:

[..]

Ik denk dat iedereen wel eens zo'n fout gemaakt heeft.
Echt niet Haha

Farenji, volgens de RFC heb je wel gelijk (alleen is het wel zo dat de RFC zegt dat een GET wel zaken mag aanpassen maar dat de gebruiker er niet verantwoordelijk voor gehouden kan worden). Tevens moet/behoort een GET cachable zijn, dus 2 calls naar delete.php?id=123 moet hetzelfde resultaat geven. Wat dus niet zal gebeuren als de GET ook geprocessed wordt.
  donderdag 7 augustus 2008 @ 17:05:58 #246
84926 WyriHaximus
Release the hounds smithers!
pi_60632031
quote:
Op donderdag 7 augustus 2008 16:42 schreef Light het volgende:

[..]

Ik denk dat iedereen wel eens zo'n fout gemaakt heeft.
Idd, vallen en opstaan, vallen en opstaan babe .
phluphy for president!
  donderdag 7 augustus 2008 @ 19:33:06 #247
32768 DionysuZ
Respect my authority!
pi_60635087
kan iemand me even helpen met een regexp?

1eregi("^[a-z0-9_/\-\=]{1,100}$",$var)


Deze matcht goed tegen bijv test/id=22132
Maar als ik test/id=-22312 probeer, dan matcht ie weer niet..?

[ Bericht 0% gewijzigd door DionysuZ op 07-08-2008 19:40:46 ]
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
  donderdag 7 augustus 2008 @ 19:43:07 #248
32768 DionysuZ
Respect my authority!
pi_60635297
uhm ik heb het opgelost:

1eregi("^[a-z0-9_/\=-]{1,100}$",$var)


werkt dan weer wel. Kan iemand me vertellen waarom? :P
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
pi_60635699
Het ligt aan het streepje, als je daarop wil matchen binnen een [ en een ] dan moet je hem altijd achteraan of helemaal vooraan zetten. Anders wordt ie echt als een range operator geinterpreteerd, blijkbaar zelfs als je hem escapet met een backslash (wat op zich best wel raar is).
pi_60635741
Je vertelt niet wat precies de bedoeling is, en dat is meestal wel handig om te weten om te begrijpen of iets wel of niet "werkt". Welke tekens mogen er voorkomen in de string?
Je wil een streepje - gebruiken in een set, als die niet aan het begin of eind van de set staat, dan moet je die escapen met een backslash. Een set met letters, cijfers, streepje en gelijkteken wordt dan [a-z0-9\-=]. Deze set zet je in een string, daarbij moet je tekens als " en \ escapen met een backslash: "[a-z0-9\\-=]".

Is preg_match() niet sneller dan eregi()?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  donderdag 7 augustus 2008 @ 22:00:33 #251
32768 DionysuZ
Respect my authority!
pi_60638346
quote:
Op donderdag 7 augustus 2008 20:04 schreef SuperRembo het volgende:
Je vertelt niet wat precies de bedoeling is, en dat is meestal wel handig om te weten om te begrijpen of iets wel of niet "werkt". Welke tekens mogen er voorkomen in de string?
De tekens die mogen voorkomen in de string zijn alfanumerieke waarden (hoofd- en kleine letters), de /, de _, - en de =.

De bedoeling is eigenlijk heel simpel. Ik heb een pagina url, bijvoorbeeld:
http://www.test.nl/directory/sub_dir/tijd/desc/id=-100

Die met .htaccess wordt herschreven naar http://www.test.nl/index.php?dir=directory&sub=sub_dir&options=tijd/desc/id=-100

Ik wil dan eerst kijken of $_GET["options"] voldoet aan de voorwaarden, daarna deze exploden zodat ik de options kan gebruiken (in dit geval gebruik ik het om een lijst te sorteren op 'tijd' in richting 'desc' voor alle velden met id=-100).
quote:
Je wil een streepje - gebruiken in een set, als die niet aan het begin of eind van de set staat, dan moet je die escapen met een backslash. Een set met letters, cijfers, streepje en gelijkteken wordt dan [a-z0-9\-=]. Deze set zet je in een string, daarbij moet je tekens als " en \ escapen met een backslash: "[a-z0-9\\-=]".
En dat was juist het vreemde. Ik had eerst de - escaped met een \, maar toen deed hij het dus niet. Toen ik hem achteraan zette werkte hij weer wel.
quote:
Is preg_match() niet sneller dan eregi()?
Ja, preg_match() is sneller dan eregi(). Maar in dit geval is het snelheidsverschil verwaarloosbaar, ik match gewoon een redelijk kleine string, en doe dat maar 1x per gelaadde pagina.
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
pi_60639166
quote:
Op donderdag 7 augustus 2008 22:00 schreef DionysuZ het volgende:
[..]
En dat was juist het vreemde. Ik had eerst de - escaped met een \, maar toen deed hij het dus niet. Toen ik hem achteraan zette werkte hij weer wel.
Je moet dus 2x escapen:1x voor de regexp zelf, en 1x voor de php string.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  vrijdag 8 augustus 2008 @ 16:05:16 #253
181657 LordNemephis
computer says no
pi_60658626
hoi iedereen. nog even een vraagje voor het weekend aan:

ik ben bezig met het upgraden van een website van iemand. Onderdeel van die site is een vragenlijst met onder meer een vraag waarop meerdere antwoorden mogelijk die dmv checkboxes kunnen worden aangevinkt.

Op het einde wordt een overzicht gegeven van de gegeven antwoorden en om de een of andere reden krijg ik het maar niet voor elkaar een array simpel uit te lezen |:(

Dit zijn de vragen:

1
2
3
4
5
6
7
8
<?php
<INPUT TYPE="checkbox" NAME="belasting_jaar[]" VALUE="2003">2003
<INPUT TYPE="checkbox" NAME="belasting_jaar[]" VALUE="2004">2004
<INPUT TYPE="checkbox" NAME="belasting_jaar[]" VALUE="2005">2005
<INPUT TYPE="checkbox" NAME="belasting_jaar[]" VALUE="2006">2006
<INPUT TYPE="checkbox" NAME="belasting_jaar[]" VALUE="2007">2007
<INPUT TYPE="checkbox" NAME="belasting_jaar[]" VALUE="2008">2008
?>

en dit het stukje code wat op het einde het antwoord op die vraag moet laten zien:
1
2
3
4
5
<?php
foreach( $POST['belasting_jaar'] as $iets ) { 
print_r$iets ); 
}
?>

deze variatie heb ik ook geprobeerd:
1
2
3
4
5
<?php
foreach ( $POST['belasting_jaar'] as &$iets ) { 
print_r($iets);
}
?>


ik doe vast iets heel doms verkeerd maar ik kijk er overheen...anyone?
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
  vrijdag 8 augustus 2008 @ 16:06:22 #254
75592 GlowMouse
l'état, c'est moi
pi_60658667
Doe eens een var_dump($POST) en een var_dump($_POST). En ga ook bedenken of je nou html of xhtml wilt gebruiken (nog uit je vorige post).
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_60660410
$_POST gebruiken ipv $POST.
  vrijdag 8 augustus 2008 @ 19:00:01 #256
32768 DionysuZ
Respect my authority!
pi_60663874
Stel je wil een animated gif die ergens op een andere site staat dynamisch ophalen met php en naar de browser schrijven. Hoe moet dat dan?

Ik heb het volgende geprobeerd:
1
2
3
4
  $url = "http://www.link.to/gif.file";
  header('Content-type: image/gif');
  header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
  readfile($url);

Maar dan krijg ik slechts het eerste beeldje. Iemand een idee?
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
pi_60663967
Het voordeel van een browser is toch dat je de image locatie ook van de andere site kan trekken...

Mijn voorstel:

<img src="http://de.andere.server/hetplaatje.gif" alt="Bewegend plaatje van een andere server" />
  vrijdag 8 augustus 2008 @ 19:09:36 #258
75592 GlowMouse
l'état, c'est moi
pi_60664082
Je stuurt geen Content-Length header mee.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  vrijdag 8 augustus 2008 @ 19:12:10 #259
32768 DionysuZ
Respect my authority!
pi_60664142
quote:
Op vrijdag 8 augustus 2008 19:04 schreef slakkie het volgende:
Het voordeel van een browser is toch dat je de image locatie ook van de andere site kan trekken...

Mijn voorstel:

<img src="http://de.andere.server/hetplaatje.gif" alt="Bewegend plaatje van een andere server" />
mjah het heeft meer te maken met dat dat plaatje om de 5 minuten anders is, en ik die wil herladen in de browser. Het gaat om dit plaatje



En die wil ik dus d.m.v. javascript om de x minuten herladen. Maar aangezien veel browsers dan gewoon het plaatje uit de cache halen en een dummy string erachter (&rnd=21312312 bijv.) niet werkt in dit geval, wilde ik een kleine omweg maken
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
  vrijdag 8 augustus 2008 @ 19:12:39 #260
32768 DionysuZ
Respect my authority!
pi_60664153
quote:
Op vrijdag 8 augustus 2008 19:09 schreef GlowMouse het volgende:
Je stuurt geen Content-Length header mee.
Dat probeerde ik dus eerst wel, maar filesize($url) poepte een error uit.
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
pi_60664239
Kan je dan geen no-cache opties meegeven aan de pagina waarin de link naar het plaatje gegeven wordt?
pi_60664475
Maar feitelijk kan je gewoon met copy($url, $local); het plaatje opslaan en dan een $img tag neerpleuren op je lokale disk. Een no-cache optie erbij flikkeren, en done. Als copy niet werkt moet je ff met curl de file ophalen saven naar disk en hetzelfde geintje doen.

Of shift-reload gebruiken
pi_60664558
quote:
Op vrijdag 8 augustus 2008 19:12 schreef DionysuZ het volgende:
en een dummy string erachter (&rnd=21312312 bijv.) niet werkt in dit geval
Echt wel.
  vrijdag 8 augustus 2008 @ 19:42:06 #264
75592 GlowMouse
l'état, c'est moi
pi_60664906
quote:
Op vrijdag 8 augustus 2008 19:12 schreef DionysuZ het volgende:
En die wil ik dus d.m.v. javascript om de x minuten herladen. Maar aangezien veel browsers dan gewoon het plaatje uit de cache halen en een dummy string erachter (&rnd=21312312 bijv.) niet werkt in dit geval, wilde ik een kleine omweg maken
Waarom werkt dat niet?
En je weet dat je zowel via filesize als via readfile het bestand van buienradar downloadt? En dat tweemaal downloaden om het 1x te serveren allesbehalve efficient is?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  zaterdag 9 augustus 2008 @ 21:16:36 #265
98700 cygnusx
Manisch Positief
pi_60691009
Ik ben nu al een paar uur aan het proberen om via php het voor elkaar te krijgen om met een script het mogelijk te maken om een karakter naar het scherm op de (ubuntu) pc te krijgen waar de webserver op draait.
Nu ben ik zover dat het me is gelukt om via een ssh verbinding met het commando xte een karakter naar X te sturen. Dit is dus wat ik wil, maar als ik dat probeer met het volgende werkt dat niet terwijl hetzelfde commando met dezelfde user via ssh wel werkt.

Waarom wil dit maar niet lukken, of is er een veel simpelere manier hiervoor? Alvast dank!

1
2
3
<?php
shell_exec
('xte -x :0.0 "key Right"'); 
?>
Jesus loves you, the rest of us think you`re an idiot.
pi_60702665
Ik wil graag eens weten hoe ik dit om kan zetten naar CURL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
if ($sock = @fsockopen("whois.ripe.net",
                           
43,
                           &
$errno,
                           &
$errstr,
                           
WHOIS_SERVER_TIMEOUT))
    {
        
fputs ($sock$ip_adres "\n");
        while (!
feof($sock))
        {
            
$ripeBuffer .= fgets($sock10240);
        }
        
fclose ($sock);
}
?>


want ik weet nu wel hoe ik gewoon een 'pagina' kan uitlezen maar niet hoe ik commando's moet versturen zoals deze...
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zondag 10 augustus 2008 @ 13:00:52 #267
75592 GlowMouse
l'état, c'est moi
pi_60702952
@cygnusx: permissieprobleem?

@Chandler: Curl intro: libcurl currently supports the http, https, ftp, gopher, telnet, dict, file, and ldap protocols. Telnet is de enige waarbij je kunt hopen dat het werkt, maar dat protocol is niet zo goed gedocumenteerd icm curl. Het is waarschijnlijk makkelijker de online whois op ripe.net te raadplegen via curl.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_60705028
Ja, opzich zou ik het ook kunnen uitlezen. Maar indien het wel met cURL kunt uitlezen, hoe moet ik dit aanpakken!?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_60706047
Lijkt erop dat het whois protocol niet gesupport wordt door curl. Als je dat wel wilt doen moet je C gaan proggen:

http://curl.haxx.se/docs/internals.html
quote:
Curl_do() makes sure the proper protocol-specific function is called. The
functions are named after the protocols they handle. Curl_ftp(),
Curl_http(), Curl_dict(), etc. They all reside in their respective files
(ftp.c, http.c and dict.c). HTTPS is handled by Curl_http() and FTPS by
Curl_ftp().

The protocol-specific functions of course deal with protocol-specific
negotiations and setup. They have access to the Curl_sendf() (from
lib/sendf.c) function to send printf-style formatted data to the remote
host and when they're ready to make the actual file transfer they call the
Curl_Transfer() function (in lib/transfer.c) to setup the transfer and
returns.

If this DO function fails and the connection is being re-used, libcurl will
then close this connection, setup a new connection and re-issue the DO
request on that. This is because there is no way to be perfectly sure that
we have discovered a dead connection before the DO function and thus we
might wrongly be re-using a connection that was closed by the remote peer.

Some time during the DO function, the Curl_setup_transfer() function must
be called with some basic info about the upcoming transfer: what socket(s)
to read/write and the expected file tranfer sizes (if known).
pi_60727649
Kan iemand mij helpen aan een eenvoudig maar veilig inlogscript?

Heb er al vele geprobeerd maar kom er niet altijd uit (liefst 1die niet objectgeoriënteerd geprogrammeerd is, dat gaat me helemaal niet lukken vrees ik).
  maandag 11 augustus 2008 @ 11:10:53 #271
107951 JortK
Immer kwaliteitsposts
pi_60727752
quote:
Op maandag 11 augustus 2008 11:06 schreef Erik het volgende:
Kan iemand mij helpen aan een eenvoudig maar veilig inlogscript?

Heb er al vele geprobeerd maar kom er niet altijd uit (liefst 1die niet objectgeoriënteerd geprogrammeerd is, dat gaat me helemaal niet lukken vrees ik).
http://www.hotscripts.com
  maandag 11 augustus 2008 @ 11:12:53 #272
187069 slacker_nl
Sicko pur sang
pi_60727802
Een veilig inlogscript?

Dit is geen script aanvraag plek, plus als je een veilig inlogscript wilt hebben zou ik eerst eens eisen gaan opstellen. Waarmee moet het connecten om de user te valideren, etc etc etc.

Ik zal je op weg helpen:

1
2
3
4
5
6
7
8
9
10
<?php
$login 
"jij";
$passwd "hij";

if (
$login == "jij" && $passwd "niethij") {
    print(
"Login succesvol\n");
} else {
    die(
"Login niet succesvol\n");
}
?>
In theory there is no difference between theory and practice. In practice there is.
  FOK!-Schrikkelbaas maandag 11 augustus 2008 @ 11:13:19 #273
1972 Swetsenegger
Egocentrische Narcist
pi_60727814
Ik val weer even binnen met een query vraag.

Ik heb 3 (relevante) tabellen.

product
Beschrijft het product, relevante cellen:
ID | IS_ACTIVE | CODE

product_download
Beschrijft een download, relevante cellen
ID | DOWNLOAD_TYPE_ID

product_download_link
Koppelt een download aan een product, relevante cellen
ID | PRODUCT_ID | DOWNLOAD_ID

Nu wil ik een lijst hebben met alle actieve productcode's die GEEN download hebben van DOWNLOAD_TYPE_ID=4

Ik loop te kutten met innerjoins, maar krijg steeds syntax errors.
  maandag 11 augustus 2008 @ 11:18:26 #274
187069 slacker_nl
Sicko pur sang
pi_60727920
select product.id
from product, product_download_link
where
product_download_link.product_id = product.id
and
product_download_link.download_id NOT IN ( select id from product_download where DOWNLOAD_TYPE_ID = 4)
and product.is_active = 1

-- in reactie op swets reactie hieronder --

select product.id
from product, product_download_link
where
/* Products die wel downloads hebben uit 4 skippen we*/
product.id not in (
select product.id
from product, product_download_link
where
product_download_link.product_id = product.id
and
product_download_link.download_id IN ( select id from product_download where DOWNLOAD_TYPE_ID = 4)
and product.is_active = 1
)
AND product.is_active = 1
AND product_download_link.product_id = product.id

[ Bericht 14% gewijzigd door slacker_nl op 11-08-2008 11:52:27 ]
In theory there is no difference between theory and practice. In practice there is.
  maandag 11 augustus 2008 @ 11:18:41 #275
107951 JortK
Immer kwaliteitsposts
pi_60727926
quote:
Op maandag 11 augustus 2008 11:13 schreef Swetsenegger het volgende:
Ik val weer even binnen met een query vraag.

Ik heb 3 (relevante) tabellen.

product
Beschrijft het product, relevante cellen:
ID | IS_ACTIVE | CODE

product_download
Beschrijft een download, relevante cellen
ID | DOWNLOAD_TYPE_ID

product_download_link
Koppelt een download aan een product, relevante cellen
ID | PRODUCT_ID | DOWNLOAD_ID

Nu wil ik een lijst hebben met alle actieve productcode's die GEEN download hebben van DOWNLOAD_TYPE_ID=4

Ik loop te kutten met innerjoins, maar krijg steeds syntax errors.
Zo misschien even snel:

1
2
3
4
SELECT p.code FROM product p WHERE p.is_active = 1
AND p.id NOT IN 
(SELECT pdl.PRODUCT_ID FROM product_download pdl 
INNER JOIN product_download_link pd ON pd.DOWNLOAD_ID = pdl.ID WHERE pdl.DOWNLOAD_TYPE_ID = 4)
  maandag 11 augustus 2008 @ 11:21:57 #276
63192 ursel
"Het Is Hier Fantastisch!
pi_60728008
SELECT * FROM product WHERE id NOT IN (SELECT PRODUCT_ID FROM product_download_link)
  FOK!-Schrikkelbaas maandag 11 augustus 2008 @ 11:28:50 #277
1972 Swetsenegger
Egocentrische Narcist
pi_60728149
Ik vergat te zeggen dat per product meerdere downloads voor kunnen komen. Dus bv de PD001 heeft WEL een download type 1 en type 2. Met bovenstaande queries krijg de PD001 dus wel terug.
  FOK!-Schrikkelbaas maandag 11 augustus 2008 @ 11:33:44 #278
1972 Swetsenegger
Egocentrische Narcist
pi_60728270
Hmz, nee dat lijkt aan mijn toegevoegde group by te liggen
-edit- nee toch niet
pi_60728781
1
2
3
4
5
6
7
8
9
10
11
12
SELECT
   * -- of wat je ook nodig denkt te hebben
FROM
   `product`
LEFT JOIN
   `product_download_link`
ON
   `product`.`id` = `product_download_link`.`product_id`
WHERE
   `product_download_link`.`download_id` != 4
AND
   `product`.`is_active` = 1


:?
  FOK!-Schrikkelbaas maandag 11 augustus 2008 @ 12:00:46 #280
1972 Swetsenegger
Egocentrische Narcist
pi_60728935
Nee, zelfde probleem als bovenstaande. Ik krijg dus nu elk product terug dat een download gekoppeld heeft, alleen niet de downloads type 4. Maar als een product geen type 4 download heeft (ongeacht de andere downloads) moet ik hem dus helemaal niet terug krijgen
  maandag 11 augustus 2008 @ 12:02:28 #281
187069 slacker_nl
Sicko pur sang
pi_60728978
swets, m'n edit gezien?
In theory there is no difference between theory and practice. In practice there is.
  FOK!-Schrikkelbaas maandag 11 augustus 2008 @ 12:30:55 #282
1972 Swetsenegger
Egocentrische Narcist
pi_60729743
Ik zie hem nu en dit lijkt inderdaad het juiste resultaat te geven

Even controleren -edit- klopt.
Bedankt

[ Bericht 24% gewijzigd door Swetsenegger op 11-08-2008 12:37:51 ]
pi_60731762
Oke, ik heb het volgende:
1
2
3
4
5
<select name=test[] multiple > 
          <option value=item1 >item1</option> 
          <option value=item2 >item2</option> 
          <option value=item3 >item3</option> 
</select>


Nu moet 'item1' in veld1 komen, 'item2' in veld2, en 'item3' in veld3. Als het niet is geselecteerd moet er een '0' in het juiste veld ge-insert worden, als een item wel is geselecteerd een '1'. Hoe wordt mijn MySQL query dan (en waarschijnlijk ook een stukje php)? Ik heb geen idee hoe ik dit moet aanpakken.
pi_60733712
ehm wat doet die test[] daar?

Leg eens uit wat je probeert te doen, 10 tegen 1 dat er een betere manier is.
pi_60735447
Ik denk dat hij met die [] meerdere resultaten verwacht uit de select (multiple)
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_60735495
Als er nieuws wordt toegevoegd moeten er meerdere platformen geselecteerd worden, die aan het nieuwsbericht gekoppeld worden. Per platform moet het nieuwsbericht weer 'gelezen' kunnen worden. Als bijv. het platform: PS3 is geselecteerd en de Xbox niet, moet op de PS3-pagina het nieuwsbericht komen, maar op de Xbox pagina niet.
pi_60735666
quote:
Op maandag 11 augustus 2008 11:18 schreef slacker_nl het volgende:
[...]
-- in reactie op swets reactie hieronder --

select product.id
from product, product_download_link
where
/* Products die wel downloads hebben uit 4 skippen we*/
product.id not in (
select product.id
from product, product_download_link
where
product_download_link.product_id = product.id
and
product_download_link.download_id IN ( select id from product_download where DOWNLOAD_TYPE_ID = 4)
and product.is_active = 1
)
AND product.is_active = 1
AND product_download_link.product_id = product.id
Ziet er niet erg efficiënt en overzichtelijk uit. Volgens mij komt dit op hetzelfde neer:

1
2
3
4
5
6
7
8
9
10
11
SELECT p.code
FROM product p
WHERE
   p.active = 1
   AND p.id NOT IN 
   (
      SELECT l.product_id
      FROM product_download_link l
      INNER JOIN product_download d ON d.id = l.download_id
      WHERE d.DOWNLOAD_TYPE_ID = 4)
   )
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  maandag 11 augustus 2008 @ 16:38:40 #288
187069 slacker_nl
Sicko pur sang
pi_60736102
Behalve de join die je doet is ie precies hetzelfde. Impliciet doe ik een join, dus dat maakt verder weinig uit, en je moet weten of het product uberhaupt gedownload is.

Wat zijn de redenen dat het niet efficient zou zijn of overzichtelijk? Ik gebruik geen code tags, maar verder is het een redelijk straight forward approach.

Ahh, ik zie het al, je hebt een selectie ding eruit gehaald. Fair enough.
In theory there is no difference between theory and practice. In practice there is.
  FOK!-Schrikkelbaas maandag 11 augustus 2008 @ 16:51:51 #289
1972 Swetsenegger
Egocentrische Narcist
pi_60736419
Ik had 'm maar eenmalig nodig om een lijstje te generen van producten die een bepaalde download nog niet hebben zodat die toegevoegd kan worden

Dus in dit geval was performance van weinig belang, maar in het kader van dit topic is een verbeterde query als leerobject altijd meegenomen.
pi_60749138
Veel mensen zullen me een zeikerd vinden wat betreft structuur van een query, maar als je sql netjes opschrijft, dan wordt het geheel vaak veel beter leesbaar en beter te begrijpen. En dat leidt weer tot minder fouten en minder overbodige dingen, wat weer tot efficiëntere code kan leiden.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_60749196
quote:
Op maandag 11 augustus 2008 23:46 schreef SuperRembo het volgende:
Veel mensen zullen me een zeikerd vinden wat betreft structuur van een query, maar als je sql netjes opschrijft, dan wordt het geheel vaak veel beter leesbaar en beter te begrijpen. En dat leidt weer tot minder fouten en minder overbodige dingen, wat weer tot efficiëntere code kan leiden.
Dat is met alles zo, als je het netjes programmeer/script dan is het teruglezen 10 makkelijk.

het is net het echte leven.
  FOK!-Schrikkelbaas dinsdag 12 augustus 2008 @ 08:27:10 #292
1972 Swetsenegger
Egocentrische Narcist
pi_60753411
quote:
Op maandag 11 augustus 2008 23:46 schreef SuperRembo het volgende:
Veel mensen zullen me een zeikerd vinden wat betreft structuur van een query, maar als je sql netjes opschrijft, dan wordt het geheel vaak veel beter leesbaar en beter te begrijpen. En dat leidt weer tot minder fouten en minder overbodige dingen, wat weer tot efficiëntere code kan leiden.
Nee hoor, ben het volkomen met je eens.
  dinsdag 12 augustus 2008 @ 14:45:03 #293
136730 PiRANiA
All thinking men are atheists.
pi_60763118
Wie heeft een tip voor me hoe ik het makkelijkst 38000 records weer kan importeren in een database? Het wil maar niet werken:
quote:
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 467248 bytes) in /var/www/PMA/libraries/sqlparser.
  dinsdag 12 augustus 2008 @ 15:20:31 #294
12221 Tijn
Powered by MS Paint
pi_60764142
quote:
Op dinsdag 12 augustus 2008 14:45 schreef PiRANiA het volgende:
Wie heeft een tip voor me hoe ik het makkelijkst 38000 records weer kan importeren in een database? Het wil maar niet werken:
[..]
Met PHPMyAdmin heb de optie om de query in stukjes te hakken om timeouts te voorkomen. Misschien dat dat helpt?
  dinsdag 12 augustus 2008 @ 15:41:19 #295
136730 PiRANiA
All thinking men are atheists.
pi_60764770
quote:
Op dinsdag 12 augustus 2008 15:20 schreef Tijn het volgende:

[..]

Met PHPMyAdmin heb de optie om de query in stukjes te hakken om timeouts te voorkomen. Misschien dat dat helpt?
Lijkt me wel! Waar vind ik dat?
  dinsdag 12 augustus 2008 @ 15:58:50 #296
12221 Tijn
Powered by MS Paint
pi_60765418
quote:
Op dinsdag 12 augustus 2008 15:41 schreef PiRANiA het volgende:

[..]

Lijkt me wel! Waar vind ik dat?
Onder "import" bij "partial import".

  dinsdag 12 augustus 2008 @ 16:10:23 #297
84926 WyriHaximus
Release the hounds smithers!
pi_60765751
Vergeet niet dat PMA sowieso de sql moet parsen voordat i het in stukken kan braken. Dus als die error op dat punt voorkomt dat zul je het met de hand moeten doen .
phluphy for president!
pi_60769130
LOAD DATA vanuit een .csv file?
Dan zit het in een fractie van een seconde in je database
pi_60770653
heeft mysql ook een sqlloader achtige constructie dan (de oracle variant)?

Jep, zie http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html

[ Bericht 52% gewijzigd door slakkie op 12-08-2008 19:30:46 ]
  woensdag 13 augustus 2008 @ 09:32:26 #300
152215 ManAtWork
Maar nu even niet,...
pi_60785723
In mijn SQL script heb ik de volgende voorwaarde staan.
quote:
WHERE (reknr LIKE ' 8%') AND (oms25_0 LIKE '% nieuwe auto's N%')
Maar dit gaat niet goed omdat er een ' staat in auto's. SQL gooit de ' eruit en geeft dan geen resultaat (logisch,...)
Ik heb al even zitten zoeken maar kan zo snel niet de oplossing vinden (blokhaken werken niet) om wel op auto's te laten selecteren.
Iemand een oplossing?
Als toeval niet bestaat, waarom hebben ze er dan een woord voor uitgevonden?
Niet storen, ik ben al gestoord genoeg,...
Vrouwen zijn om van te houden, niet om te begrijpen.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')