hij faalt...hard...geen foutmeldingquote:Op dinsdag 8 februari 2011 17:50 schreef Tegan het volgende:
Probeer het, en als het faalt dan weet je waarom.
ligt niet aan de $idquote:Op dinsdag 8 februari 2011 17:56 schreef Tegan het volgende:
Zonder die $id werkt het wel? Dan ligt het dus aan de $id.
quote:Op dinsdag 8 februari 2011 15:52 schreef ursel het volgende:
Ik vroeg me af of hier nog iemand mooie tooltjes weet die de performance van mijn applicatie kan testen.
De software draait nu wel stabiel, maar moet ook onder zwaardere load zometeen nog vlekkeloos kunnen draaien.
Hoe pakken jullie dit soort zaken aan?
Mja, daar was ik idd al bang voor. Zend Server kan op zich mooi informatie verder wel geven ten tijden van gebruik, maar die licentie voor de betaalde versie ga ik er niet op korte termijn doorheen krijgenquote:Op dinsdag 8 februari 2011 17:22 schreef GlowMouse het volgende:
[..]
Zorgen dat de belangrijkste onderdelen goed draaien. Apachebench kan een goede indicatie geven, maar is gevaarlijk omdat caches een grote rol spelen wanneer je steeds hetzelfde opvraagt. Het ligt er echt aan waar je bottlenecks verwacht, die kun je makkelijker afzonderlijk testen.
Hoe moeten optredens en optredens_gebruikers aan elkaar gekoppeld worden? Als je één optreden wilt, waarom gebruik je geen WHERE?quote:Op dinsdag 8 februari 2011 17:33 schreef MrNiles het volgende:
foutje? mag die $id zo daar?
[code]
SELECT optredens.datum, optredens_gebruikers.name
FROM optredens
LEFT JOIN optredens_gebruikers ON '$id'=optredens_gebruikers.id
ORDER BY optredens_gebruikers.name[/code]
1 2 | SELECT DISTINCT "column_name" FROM "table_name" |
1 | SELECT DISTINCT DATE_FORMAT(starttime,"%Y-%m-%d") |
1 2 3 4 5 6 7 | <?php $(".reply_show").click(function(e){ $("tr").next(".onzichtbaarreageren").toggle(); //$('.onzichtbaarreageren').show(); e.preventDefault(); }); ?> |
Als je javascript in het PHP topic gaat posten wordt dat niet veel beter jaquote:Op woensdag 9 februari 2011 08:55 schreef cablegunmaster het volgende:
[ code verwijderd ]
*aangezien het javascript topic haast overleden is*
Nee die werkt niet omdat er een stukje code tussen zit. wat simpel html dat er helaas niet tussen uit kan. vermoedelijk ook omdat this ".reply_show" voorstelt en niet tr.quote:Op woensdag 9 februari 2011 09:21 schreef GlowMouse het volgende:
$("tr") matcht al op alle tr's, niet op die waarop je klikt; werkt $(this)?
helaas.quote:Op woensdag 9 februari 2011 09:26 schreef GlowMouse het volgende:
$($this).next("tr").next(".onzichtbaarreageren")?
doet precies hetzelfdequote:
1 2 3 4 5 6 7 8 | function reagerenTonen(id){ $("#onzichtbaarreageren-"+id).removeClass('.onzichtbaarreageren').toggle(); } <a href="#" onclick="reagerenTonen(<?php echo $row['id']; ?>);">reageren</a> <tr id="onzichtbaarreageren-<?php echo $row['id']; ?>" class="onzichtbaarreageren"></tr> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php $commando=" SELECT optredens.datum, optredens_gebruikers.name FROM optredens LEFT JOIN optredens_gebruikers ON ('36'=optredens_gebruikers.id) "; $resultaat=mysql_query($commando); while($array=mysql_fetch_array($resultaat)){ echo "G_id: " . $array['G_id'] . "<br />"; echo "Naam: " . $array['name'] . "<br />"; echo "id: " . $array['id'] . "<br />"; echo "Aanwezig: " . $array['aanwezig'] . "<br />"."<br />"; } ?> |
1 2 3 | <?php ON ('36'=optredens_gebruikers.id) "; ?> |
quote:Op dinsdag 8 februari 2011 19:33 schreef GlowMouse het volgende:
[..]
Hoe moeten optredens en optredens_gebruikers aan elkaar gekoppeld worden? Als je één optreden wilt, waarom gebruik je geen WHERE?
Je echoed sowieso 3 velden die je helemaal niet selecteert.quote:Op woensdag 9 februari 2011 10:03 schreef MrNiles het volgende:
het begint nu echt lastig te worden om dingen te gaan combineren
iets gaat er nu goed
[ code verwijderd ]
hoe krijg ik nu de uitkomst van de left join op het scherm
zo dus niet..want ik krijg een hoop:
Notice: Undefined index: on line 24 en 25 en 26...niet goed dus
Moet je even kijken naar de encoding.quote:Op woensdag 9 februari 2011 10:11 schreef boem-dikkie het volgende:
Weet iemand hier trouwens waar het aan kan liggen dat ik heel vaak geen leden kan toevoegen met speciale tekens in hun naam? Nu weer iemand die niet in de database kan omdat hij een C met een circumflex is zijn naam heeft staan. Ledennaam heeft gewoon VARCHAR als type.
http://en.wikipedia.org/wiki/Character_encodings_in_HTMLquote:Op woensdag 9 februari 2011 10:12 schreef erikkll het volgende:
[..]
Moet je even kijken naar de encoding.
Sorry, leek wat dat betreft. Encoding, wie, wat, waar?quote:Op woensdag 9 februari 2011 10:12 schreef erikkll het volgende:
[..]
Moet je even kijken naar de encoding.
Het linkje van cablegunmaster kun je denk ik wel wat mee!quote:Op woensdag 9 februari 2011 10:12 schreef boem-dikkie het volgende:
[..]
Sorry, leek wat dat betreft. Encoding, wie, wat, waar?
daarnaast in phpmyadmin staat in elke tabel een collatie: latin1_swedish_ciquote:Op woensdag 9 februari 2011 10:12 schreef boem-dikkie het volgende:
[..]
Sorry, leek wat dat betreft. Encoding, wie, wat, waar?
quote:SELECT ticketid, dateline AS opentime
FROM `swauditlogs`
WHERE `actiontype` =11
AND `actionmsg` LIKE '%trinicom%'
quote:SELECT ticketid, dateline AS closetime
FROM `swauditlogs`
WHERE `actiontype` =8
AND `actionmsg` LIKE '%Nog te factureren%'
Heb ik gecombineerd tot deze query:quote:SELECT ticketid, subject FROM `swtickets` WHERE `ticketstatusid` =3 OR ticketstatusid =4 AND email LIKE '%trinicom%'
Nu wil ik er graag nog een query bij joinen:quote:SELECT statusticketid, statussubject, opentime, MAX(closetime) as close_time, email
FROM
(SELECT email, ticketid AS statusticketid, subject AS statussubject FROM `swtickets` WHERE `dateline` < $closetime AND `dateline` > $opentime AND ( `ticketstatusid` =3 OR ticketstatusid =4) AND `email` LIKE '%trinicom%' ) AS TMP3
LEFT JOIN
(SELECT openticket, opentime, closetime FROM (SELECT ticketid AS openticket, dateline AS opentime FROM `swauditlogs` WHERE `dateline` > $opentime AND `dateline` < $closetime AND `actiontype` =11) as TMP1
LEFT JOIN
(SELECT ticketid AS closeticket, dateline AS closetime FROM `swauditlogs` WHERE `actiontype` =8 AND ( `dateline` > $opentime AND `dateline` < $closetime) AND `actionmsg` LIKE '%Nog te factureren%' ) as TMP2
ON openticket=closeticket) AS TMP4
ON openticket=statusticketid
WHERE email LIKE '%trinicom%'
GROUP BY statusticketid
";
Hoe kan ik dat als extra join toevoegen?quote:SELECT ticketid, dateline AS opentime
FROM `swauditlogs`
WHERE `actiontype` =12
AND `actionmsg` LIKE '%trinicom%'
Alleen de collation van het veld is belangrijk.quote:Op woensdag 9 februari 2011 10:16 schreef erikkll het volgende:
Kijk in phpmyadmin hoe de collation op je database tabel is. Stel deze bijvoorbeeld in op utf8_general.
Gebruik vervolgens als encoding voor je html ook UTF-8 en het zou goed moeten zijn.
Paradox in wat je vraagt.quote:Op woensdag 9 februari 2011 10:19 schreef erikkll het volgende:
Deze 3 queries:
[..]
[..]
[..]
Heb ik gecombineerd tot deze query:
[..]
Nu wil ik er graag nog een query bij joinen:
[..]
Hoe kan ik dat als extra join toevoegen?
nee ... where actiontype = 12 and actiontype = 11 ? Wtf?quote:Op woensdag 9 februari 2011 10:23 schreef boem-dikkie het volgende:
Dat heb je in principe toch ook al gedaan met die queries daarboven?
Precies, actiontype = 11 OR actiontype = 12 should do the trick.quote:Op woensdag 9 februari 2011 10:24 schreef cablegunmaster het volgende:
[..]
Paradox in wat je vraagt.
[..]
nee ... where actiontype = 12 and actiontype = 11 ? Wtf?![]()
Ja ik weet het. Maar hoe kan ik ze dan op een mooiere manier joinen? Ik snap niet hoe dat zou moeten als ze uit dezelfde table komen. Daarom maak ik nu van elke resultset eerst een tijdelijke tabel met een andere naam, om ze vervolgens te joinen... Dat kan vast mooierquote:Op woensdag 9 februari 2011 10:26 schreef GlowMouse het volgende:
Je moet queries niet combineren, je moet joinen. Je maakt nu 4 temporary tables en komt met een onleesbare brij.
meer ANDS toevoegen of een ORquote:Op woensdag 9 februari 2011 10:32 schreef erikkll het volgende:
[..]
Ja ik weet het. Maar hoe kan ik ze dan op een mooiere manier joinen? Ik snap niet hoe dat zou moeten als ze uit dezelfde table komen. Daarom maak ik nu van elke resultset eerst een tijdelijke tabel met een andere naam, om ze vervolgens te joinen... Dat kan vast mooier
Nee, je zou het je zo voor moeten stellen:quote:Op woensdag 9 februari 2011 10:26 schreef Scorpie het volgende:
[..]
Precies, actiontype = 11 OR actiontype = 12 should do the trick.
Maar ik zou sowieso die query brij eens goed uit elkaar trekken, dit gaat nergens over
1 2 3 4 5 | SELECT t.ticketid AS statusticketid, subject AS statussubject,al1.ticketid as openticket, al1.dateline AS opentime, al2.ticketid as closeticket, al2.dateline AS closetime FROM swtickets t JOIN swauditlogs al1 ON(t.ticket=al1.ticket AND al1.actiontype =11 AND al1.actionmsg LIKE '%trinicom%'); JOIN swauditlogs al2 ON(t.ticket=al2.ticket AND al2.actiontype=8 AND al2.actionmsg LIKE '%Nog te factureren%') WHERE t.ticketstatusid=3 OR t.ticketstatusid=4 AND email LIKE '%trinicom%' |
die van glowmouse is netterquote:Op woensdag 9 februari 2011 10:42 schreef erikkll het volgende:
Ik zal jullie beide queries eens proberenSuper!
succesquote:Op woensdag 9 februari 2011 10:52 schreef erikkll het volgende:
Jullie oplossingen werken allebei niet, maar het idee is me wel duidelijk hoe ik dit netter kan oplossen!
Dankjewel! Als ik er uit ben post ik het hier (ik denk niet meer vandaag, maar sowieso deze week ga ik ermee verder.)quote:
Daarom was mijn oplossing ook niet te lezenquote:Op woensdag 9 februari 2011 10:55 schreef GlowMouse het volgende:
Wat je in ON en wat je in WHERE zet maakt bij LEFT JOIN wel flink uit, maar het helpt om leesbaarheid te vergroten.
quote:
1 | $(".lb").fancybox({ ajax:{ type:"POST" }, 'padding': 0 }); |
1 | $(".lb").fancybox(, 'padding': 0 }); |
Okidokiequote:Op woensdag 9 februari 2011 13:14 schreef GlowMouse het volgende:
Het komt in ieder geval door je template-engine, die { en } ziet als tags. Je kunt \{ en \} proberen te gebruiken. Kijk anders naar de handleiding van de template-engine die je gebruikt, of laad javascript uit een aparte .js-file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php $commando= "SELECT optredens.id, optredens_gebruikers.name, optredens_gebruikers.aanwezig, optredens_gebruikers.G_id FROM optredens LEFT JOIN optredens_gebruikers ON optredens.id=optredens_gebruikers.id WHERE 'aanwezig'='o' "; $resultaat=mysql_query($commando); echo "Deze mensen hebben nog niets laten weten"; while($array=mysql_fetch_array($resultaat)){ echo "<br />"; echo $array['name'] ; } ?> |
WHERE 'aanwezig'='o' AND 'id'=$id ";quote:
ik wil weergeven wie er op een bepaald op optreden($id) er nog niet heeft gereageerd('o')quote:Op woensdag 9 februari 2011 19:07 schreef Emery het volgende:
Snap sowieso niet wat je precies wil doen met $id. Wil je met GET een id uit de url ophalen en alleen het optreden tonen wat overeenkomt met dat id?
quote:Wil je met GET een id uit de url ophalen en alleen het optreden tonen wat overeenkomt met dat id?
quote:SQL uses single quotes around text values (most database systems will also accept double quotes).
Although, numeric values should not be enclosed in quotes.
Is normaliter niet belangrijk.quote:Op woensdag 9 februari 2011 19:13 schreef MrNiles het volgende:
ok..laatste update
WHERE aanwezig='o' AND optredens_gebruikers.id=$id "; gaat niet goed
WHERE optredens_gebruikers.id=$id AND aanwezig='o' "; gaat wel goed
kan iemand mij uitleggen waarom de volgorde belangrijk is...hij kijkt toch naar EN/EN
Ook niet als je indexes (op meerdere kolommen) gebruikt?quote:
1 2 | echo "<a href=\"aanwezig_edit.php?name=".$array['name']."\"> <?php echo $array['name'] ; ?> </a>"; |
1 2 3 | <?php echo "<a href='aanwezig_edit.php?name=".$array['name']."'>".$array['name']."</a>"; ?> |
1 2 | <a href="aanwezig_edit.php?name=<?php echo $array['name']; ?>"><?php echo $array['name']; ?></a> |
Nee.quote:Op woensdag 9 februari 2011 20:22 schreef mstx het volgende:
[..]
Ook niet als je indexes (op meerdere kolommen) gebruikt?
Er zijn wel wat tricky dingetjes, zo isquote:Op woensdag 9 februari 2011 20:22 schreef mstx het volgende:
[..]
Ook niet als je indexes (op meerdere kolommen) gebruikt?
1 2 3 | <?php echo "<a href=\"aanwezig_edit.php?name=".$array['name']."\"> ".$array['name']." </a>"; ?> |
Buiten dat je & in je html moet gebruiken, wat gaat er mis dan?quote:
quote:Op woensdag 9 februari 2011 21:46 schreef GlowMouse het volgende:
En gebruik rawurlencode om een string.
1 2 3 | <?php echo "<a href=\"aanwezig_edit.php?name=".$array['name']."&id=".$array['id']."\">".$array['name']."</a>"; ?> |
thanx...ergens wat " verkeerd of gemist denk ik...damn...ik ga slapen...zie er niet meer vanquote:Op woensdag 9 februari 2011 21:48 schreef Tegan het volgende:
[ code verwijderd ]
De meeste van jouw vragen kan je overigens met een simpele Google search vinden...
klopt waarschijnlijk maar het probleem is...welke woorden gebruik je om te zoekenquote:Op woensdag 9 februari 2011 21:48 schreef Tegan het volgende:
[ code verwijderd ]
De meeste van jouw vragen kan je overigens met een simpele Google search vinden...
http://www.google.com/#sc(...)&fp=7828c4946c5db268quote:Op woensdag 9 februari 2011 21:52 schreef MrNiles het volgende:
[..]
klopt waarschijnlijk maar het probleem is...welke woorden gebruik je om te zoeken
had nu geprobeerd multiple get url, dat soort dingen, maar geen succes
het is echt niet dat ik hier als eerste alles vraag...soms lijkt het er wel op...sorry
maar ik probeer best wat uit..maar het is zo frustrerend als je een lege pagina krijgt
Zet je error report aan.quote:Op woensdag 9 februari 2011 21:52 schreef MrNiles het volgende:
[..]
klopt waarschijnlijk maar het probleem is...welke woorden gebruik je om te zoeken
had nu geprobeerd multiple get url, dat soort dingen, maar geen succes
het is echt niet dat ik hier als eerste alles vraag...soms lijkt het er wel op...sorry
maar ik probeer best wat uit..maar het is zo frustrerend als je een lege pagina krijgt
quote:Op woensdag 9 februari 2011 21:53 schreef GlowMouse het volgende:
Ze bedoelt dat als je met Google wat zoekt, je het antwoord uit de url kan halen:
http://www.google.nl/search?hl=nl&source=hp&biw=1280&bih=865&q=hoi&aq=f&aqi=g2g-s1g7&aql=&oq=
check al die ampersandjes.
Fatsoenlijke PHP-tutorials zijn heel lastig om te vinden. Heb je een linkje?quote:Op woensdag 9 februari 2011 21:55 schreef Tegan het volgende:
[..]
Dit en lees een fatsoenlijke PHP-tutorial voordat je iets probeert te maken.
Er bestaat altijd discussie over wat wel en niet fatsoenlijk is, maar volgens mij heeft hij nog geen een vraag gesteld die niet op www.w3schools.com beantwoord wordt.quote:Op woensdag 9 februari 2011 21:56 schreef GlowMouse het volgende:
[..]
Fatsoenlijke PHP-tutorials zijn heel lastig om te vinden. Heb je een linkje?
Hoe oud is die tutorial?quote:PHP is a server-side scripting language, like ASP
PHP files have a file extension of ".php", ".php3", or ".phtml"
kloptquote:Op woensdag 9 februari 2011 21:57 schreef KomtTijd... het volgende:
[..]
Er bestaat altijd discussie over wat wel en niet fatsoenlijk is, maar volgens mij heeft hij nog geen een vraag gesteld die niet op www.w3schools.com beantwoord wordt.
Ik gebruik alleen maar .phtml.quote:Op woensdag 9 februari 2011 21:57 schreef GlowMouse het volgende:
http://www.w3schools.com/php/php_intro.asp
[..]
Hoe oud is die tutorial?
Maar als wij het voorkauwen leer je ook niets. Een simpel antwoord snap je ook niet. Nee, ik moet echt het toepassen op je code.quote:Op woensdag 9 februari 2011 21:59 schreef MrNiles het volgende:
[..]
klopt
maar lezen en toepassen zijn hele verschillende dingen
je loopt tegen hele andere problemen aan als je echt iets gaat maken
dan blijken de tutors wel heeeel erg basic uitleg te geven
Dit is wel zo. Vertellen wat er eventueel fout gaat en vervolgens een duw geven in de goede richting werkt beter dan dat mensen hier elke keer de codes voorkauwen.quote:Op woensdag 9 februari 2011 22:02 schreef Tegan het volgende:
[..]
Maar als wij het voorkauwen leer je ook niets. Een simpel antwoord snap je ook niet. Nee, ik moet echt het toepassen op je code.
Dus, zolang je dat niet kan moet je je niet aan dat project van je wagen.
Dat werkt niet als je een parse error hebt omdat dan die regels code ook niet worden uitgevoerd. Als het standaard uitstaat, moet je het via .htaccess (mits Apache) aanzetten.quote:
Daarom heb je vaak ook goede boeken over php, hierin staan vaak voorbeelden. Natuurlijk moet je ook zelf inzicht ontwikkelen in het programmeren.quote:Op woensdag 9 februari 2011 21:59 schreef MrNiles het volgende:
[..]
klopt
maar lezen en toepassen zijn hele verschillende dingen
je loopt tegen hele andere problemen aan als je echt iets gaat maken
dan blijken de tutors wel heeeel erg basic uitleg te geven
net als de rest...gelezen ergens op internetquote:Op woensdag 9 februari 2011 22:03 schreef GlowMouse het volgende:
[..]
Dat werkt niet als je een parse error hebt omdat dan die regels code ook niet worden uitgevoerd. Als het standaard uitstaat, moet je het via .htaccess (mits Apache) aanzetten.
Waarom gebruik je ob_start()?
Niet doen, ob_start() is stom.quote:Op woensdag 9 februari 2011 22:05 schreef MrNiles het volgende:
[..]
net als de rest...gelezen ergens op internet
1 2 3 4 5 | <?php $filename = 'vul maar in' if(substr($filename, -4) == '.php') die(); touch($filename); ?> |
Goede boekentips? Ik vind vrijwel alle boeken te basic. Echt dingen waar ik mee zit, zoals hoe beveilig me voor injections, worden dan niet eens uitgelegd.quote:Op woensdag 9 februari 2011 22:04 schreef themole het volgende:
[..]
Daarom heb je vaak ook goede boeken over php, hierin staan vaak voorbeelden. Natuurlijk moet je ook zelf inzicht ontwikkelen in het programmeren.
http://phpsecurity.org/ ? niet gelezen overigens.quote:Op woensdag 9 februari 2011 22:06 schreef Tegan het volgende:
[..]
Goede boekentips? Ik vind vrijwel alle boeken te basic. Echt dingen waar ik mee zit, zoals hoe beveilig me voor injections, worden dan niet eens uitgelegd.
Klinkt goed. Thanks.quote:Op woensdag 9 februari 2011 22:10 schreef GlowMouse het volgende:
[..]
http://phpsecurity.org/ ? niet gelezen overigens.
Dat is idd het enige nadeel van de boeken.quote:Op woensdag 9 februari 2011 22:06 schreef Tegan het volgende:
[..]
Goede boekentips? Ik vind vrijwel alle boeken te basic. Echt dingen waar ik me zit, zoals hoe beveilig me voor injections, worden dan niet eens uitgelegd.
Kende ik ook niet! Thanks.quote:Op woensdag 9 februari 2011 22:10 schreef GlowMouse het volgende:
[..]
http://phpsecurity.org/ ? niet gelezen overigens.
Dan wordt hoi.phpxxxx aangemaakt, en niet hoi.php.quote:
Nee, het argument wordt altijd wel goed doorgegeven. Dat zou anders zijn als ik eval(substr($filename, -4)) zou gebruiken, maar eval is evil. En dan nog zou het bestand "hoi.php, <integer>" worden aangemaakt en niet hoi.php.quote:
waarom isquote:Op woensdag 9 februari 2011 22:19 schreef cablegunmaster het volgende:
vraagje wat is de tegenhanger van
SELECT *
FROM `streambericht`
WHERE streamid =1
GROUP BY streamid
een group by?is daar een tegenhanger van ? dat ik alle post krijg die hier uitgefiltert worden
?
die where hoorde er niet te staanquote:Op woensdag 9 februari 2011 22:22 schreef GlowMouse het volgende:
[..]
waarom is
SELECT *
FROM `streambericht`
WHERE streamid =1
niet goed?
Hint: http://en.wikipedia.org/wiki/C_stringquote:Op woensdag 9 februari 2011 22:21 schreef GlowMouse het volgende:
[..]
Nee, het argument wordt altijd wel goed doorgegeven. Dat zou anders zijn als ik eval(substr($filename, -4)) zou gebruiken, maar eval is evil. En dan nog zou het bestand "hoi.php, <integer>" worden aangemaakt en niet hoi.php.
Ziet er goed uit. Komende tijd lezen.quote:Op woensdag 9 februari 2011 22:10 schreef GlowMouse het volgende:
[..]
http://phpsecurity.org/ ? niet gelezen overigens.
Dankjequote:Op woensdag 9 februari 2011 22:24 schreef GlowMouse het volgende:
Sorteren op tijd en dan in je code de eerste anders weergeven.
hoi.php5quote:Op woensdag 9 februari 2011 22:21 schreef GlowMouse het volgende:
[..]
Nee, het argument wordt altijd wel goed doorgegeven. Dat zou anders zijn als ik eval(substr($filename, -4)) zou gebruiken, maar eval is evil. En dan nog zou het bestand "hoi.php, <integer>" worden aangemaakt en niet hoi.php.
Dan wordt hoi.php5 aangemaakt, niet hoi.phpquote:
Same thing.quote:Op woensdag 9 februari 2011 22:27 schreef GlowMouse het volgende:
[..]
Dan wordt hoi.php5 aangemaakt, niet hoi.php
Nee, de vraag was "Wie kiest $filename zodat het bestand 'hoi.php' wordt aangemaakt?".quote:
Jeej, volgende:quote:
1 2 3 4 5 | <?php $filename = trim('vul maar in'); if(substr($filename, -4) == '.php') die(); touch($filename); ?> |
quote:Op woensdag 9 februari 2011 22:48 schreef KomtTijd... het volgende:
[..]
1337 h4x0r! Snel, meld je aan bij Anonymous!![]()
Die spatie heeft er weinig mee te maken nog. Denk nog maar verder, uitleg komt morgen.quote:Op woensdag 9 februari 2011 22:51 schreef Emery het volgende:
Perhaps a little explanation want ik snap er de ballen van.
Zit al op Google te kijken, en die C wikipedia pagina van net, maar alsnog snap ik het niet.
Tof.quote:Op woensdag 9 februari 2011 22:52 schreef GlowMouse het volgende:
[..]
Die spatie heeft er weinig mee te maken nog. Denk nog maar verder, uitleg komt morgen.
Ik snap het gelukkig ook niet echt. Gewoon random dingen roepen.quote:Op woensdag 9 februari 2011 22:51 schreef Emery het volgende:
Perhaps a little explanation want ik snap er de ballen van.
Zit al op Google te kijken, en die C wikipedia pagina van net, maar alsnog snap ik het niet.
Zie Tegan.quote:Op woensdag 9 februari 2011 23:03 schreef princesselisah het volgende:
Jezus, begrijp hier helemaal niets van. Is dat dan alleen omdat ik een meisje ben?
quote:Op woensdag 9 februari 2011 22:54 schreef Tegan het volgende:
[..]
Ik snap het gelukkig ook niet echt.
Het is een demonstratie van een veelgebruikte hacktechniek.quote:
Dus wat je beter kan doen is ervoor zorgen dat er geen scripts worden uitgevoerd in de map waar je de spullen upload. Daarnaast kan je voor de zekerheid nog steeds die beveiliging inbouwen in het uploadscript.quote:Op donderdag 10 februari 2011 00:15 schreef KomtTijd... het volgende:
[..]
Het is een demonstratie van een veelgebruikte hacktechniek.
Iemand denkt: "Ik maak een website waar mensen bestanden kunnen uploaden, maar geen .php-bestanden, want het is natuurlijk niet de bedoeling dat iemand anders scripts uitvoert op mijn server"
Maar glowmouse laat ziet dat het vrij eenvoudig is met wat ongebruikelijke tekens, toch een .php-bestand te uploaden wat dus gewoon uitvoerbaar is. Kortom de beveiliging deugt niet.
Of je maakt gewoon een whitelist van de extensies ipv een blacklist.quote:Op donderdag 10 februari 2011 09:31 schreef themole het volgende:
[..]
Dus wat je beter kan doen is ervoor zorgen dat er geen scripts worden uitgevoerd in de map waar je de spullen upload. Daarnaast kan je voor de zekerheid nog steeds die beveiliging inbouwen in het uploadscript.
Dat, plus http://mysql-apache-php.com/fileupload-security.htm (behalve dan de blacklist gedeelte).quote:Op donderdag 10 februari 2011 09:37 schreef mstx het volgende:
[..]
Of je maakt gewoon een whitelist van de extensies ipv een blacklist.
Als ik != '.php' in mijn script vervang door == '.jpg', dan is dat niet veiliger.quote:Op donderdag 10 februari 2011 09:37 schreef mstx het volgende:
[..]
Of je maakt gewoon een whitelist van de extensies ipv een blacklist.
De tekst op de pagina mist wat essentiële zaken. Hun blacklist faalt ook hard, en "Because your upload folder permission is 777, your site user are free to upload anything." suggereert een grote onwaarheid. Getimagesize geeft geen garantie dat er ook daadwerkelijk een plaatje geüpload is. Met het script zoals het daar staat, kan ik .php-files op de server krijgenquote:Op donderdag 10 februari 2011 10:16 schreef Scorpie het volgende:
[..]
Dat, plus http://mysql-apache-php.com/fileupload-security.htm (behalve dan de blacklist gedeelte).
Dat ligt er maar net aan. Tegenwoordig zijn remote file inclusions per configuratie uitgeschakeld, maar local file inclusions niet. Een slecht script kan daardoor lokale bestanden includen. Gedurende de looptijd van je script is het bestand op de tmp locatie beschikbaar.quote:Op donderdag 10 februari 2011 10:51 schreef KomtTijd... het volgende:
Nu we het hier toch over hebben, als je een bestand laat uploaden, maar niet opslaat maar direct vanaf de tmp locatie gebruikt. Dan kan iemand daar verder weinig mee doen toch?
1 | WHERE (DATE(starttime) = MAX(DATE(starttime)) |
1 | FATAL SQL ERROR: Invalid use of group function |
Maar dan moet iemand dus eerst al een script op je server planten wat 'm include... Als je zo ver bent heb je dat al niet meer nodig.quote:Op donderdag 10 februari 2011 12:50 schreef GlowMouse het volgende:
[..]
Dat ligt er maar net aan. Tegenwoordig zijn remote file inclusions per configuratie uitgeschakeld, maar local file inclusions niet. Een slecht script kan daardoor lokale bestanden includen. Gedurende de looptijd van je script is het bestand op de tmp locatie beschikbaar.
Ik heb het daarom ook over een slecht script dat zich al op de server bevindt. Zeker in shared hosting situaties heb je het niet altijd voor het zeggen.quote:Op donderdag 10 februari 2011 13:22 schreef KomtTijd... het volgende:
[..]
Maar dan moet iemand dus eerst al een script op je server planten wat 'm include... Als je zo ver bent heb je dat al niet meer nodig.
quote:Op donderdag 10 februari 2011 13:24 schreef GlowMouse het volgende:
Dit moet met een subquery: WHERE DATE(starttime)= (SELECT MAX(DATE(....
Hmm goed punt.quote:Ik heb het daarom ook over een slecht script dat zich al op de server bevindt. Zeker in shared hosting situaties heb je het niet altijd voor het zeggen.
Kan je niet gewoon SELECT MAX(starttime) doen?quote:Op donderdag 10 februari 2011 13:17 schreef KomtTijd... het volgende:
[ code verwijderd ]
[ code verwijderd ]
Wat doe ik fout?
Wat als je ook meer informatie wilt over wat er op die tijd is? Je kunt ook aflopend op starttijd sorteren icm limit 1, maar dat is minder snel als je geen index op starttijd hebt.quote:Op donderdag 10 februari 2011 14:11 schreef remi1986 het volgende:
[..]
Kan je niet gewoon SELECT MAX(starttime) doen?
Nee, ik wil alle vluchten zien van de laatste vliegdag. Ik moet dus 1) weten welke dag de laatste vliegdag was, en 2) welke vluchten er toen zijn gemaakt.quote:Op donderdag 10 februari 2011 14:11 schreef remi1986 het volgende:
[..]
Kan je niet gewoon SELECT MAX(starttime) doen?
Dat bedoel ik, als het pas vanaf een miljoen aan gaat tikken zou het in dit geval een zinloze micro-optimalisatie zijn. 't Hoeft sowieso geen high-performance applicatie te worden maar als de pageload tijden wat omlaag kunnen is natuurlijk altijd leuk...quote:Op donderdag 10 februari 2011 15:22 schreef GlowMouse het volgende:
Een miljoen verschillende dagen is erg veel, dan heb je het over minimaal 2739 jaar tussen de eerste en de laatste vliegdag. Wanneer het over vliegtuigen gaat en niet over diertjes, zul je op zijn vroegst in 1903 beginnen met tellen. De kans is klein dat je software in 4642 nog gebruikt wordt.
Bij 1000 dagen zul je de optimalisatie al zeker merken.
1 2 3 4 5 6 | <?php $filename = 'hoi.php' . chr(0) . '.txt'; $filename = trim($filename); if(substr($filename, -4) != '.txt') die(); touch($filename); ?> |
1 2 3 4 5 6 7 8 | <?php //check if its image file if (!getimagesize($_FILES['imagefile']['tmp_name'])) { echo "Invalid Image File..."; exit(); } ?> |
Hier raakte je me kwijt. Maar het is ook niet echt belangrijk dat je sommige files ten onrechte afkeurt, als je maar zeker weet dat er geen .php-bestanden op je server terecht komenquote:Op donderdag 10 februari 2011 19:00 schreef GlowMouse het volgende:
Het aantal reacties valt tegen. Dan zal ik het maar verklappen. Pak dit stukje code:
[ code verwijderd ]
De check op regel4 wordt zonder problemen doorlopen: de laatste vier karakters zijn '.txt'. Bij touch wordt er een stukje C-code uitgevoerd, en in C houden strings op na een nul-byte.
Op http://mysql-apache-php.com/fileupload-security.htm staat dit stukje:
[ code verwijderd ]
Deze check voorkomt niet dat er php-code op de server komt. Een plaatje is een file, en een file is gewoon opgebouwd uit bytes. Ergens tussen die bytes kunnen best de volgende zitten: <?php echo 'hoi'; ?>. Een plaatje met die code kun je makkelijk zelf maken door met een hex-editor een plaatje te editten en wat bytes te overschrijven. Het resulterende plaatje ziet er niet uit, maar dat ziet de software nietNet als bij een html-file, wordt alles tussen <?php en ?> uitgevoerd als PHP-code (en de rest van de file wordt gewoon doorgegeven).
Dit kun je maar op één manier voorkomen. Je kunt het plaatje resizen, maar ondanks dat het een stuk lastiger om een plaatje te vinden dat na resizen de code <?php echo 'hoi'; ?> bevat, is het niet onmogelijk. De manier is daarom om plaatjes waar <?php in voorkomt gewoon te blokkeren. Als plaatjes 1MB zijn, kun je de kans p berekenen dat je een plaatje ten onrechte afkeurt (onder de aanname dat de 0/1'en willekeurig, onafhankelijk en identiek zijn verdeeld):
<?php is vijf bytes. De kans dat vijf willekeurige bytes niet overeenkomen met <?php, is 1-(1/256)5. Je wilt dat in de file van 1MB alle vijf opvolgende bytes verschillend zijn. Er zijn ongeveer een miljoen opeenvolgende series van vijf bytes in een bestand van 1MB. De kans dat er geen <?php in je file zit, is ongeveer 1-p = (1-(1/256)5)1.000.000. Dit is lastig om nauwkeurig te berekenen, daarom pakken we de logaritme: log(1-p) = 1.000.000 log(1-(1/256)5) ~= -10-6. Omdat voor kleine p geldt dat log(1-p) = -p, weten we dat p = 10-6. Je keurt dus één op de miljoen files ten onrechte af.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php if (isset($params['submit']) ) { $filter=''; $test = false; if (isset($params['select_date']) && $params['select_date'] != '') { if ($test) {$filter .=' AND ';} $filter .= '(DATE(starttime) = \''.$params['select_date'].'\')'; $test = true; } if (isset($params['select_pilot']) && $params['select_pilot'] != '') { if ($test) {$filter .=' AND ';} $filter .= '(firstpilot_id = '.$params['select_pilot'].' or secondpilot_id = '.$params['select_pilot'].')'; $test = true; } if (isset($params['select_airplane']) && $params['select_airplane'] != '') { if ($test) {$filter .=' AND ';} $filter .= '(airplane = \''.$params['select_airplane'].'\')'; $test = true; } } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php if (isset($params['submit']) ) { $filter='1=1'; $test = false; if (isset($params['select_date']) && $params['select_date'] != '') { $filter .= ' AND (DATE(starttime) = \''.$params['select_date'].'\')'; } if (isset($params['select_pilot']) && $params['select_pilot'] != '') { $filter .= ' AND (firstpilot_id = '.$params['select_pilot'].' or secondpilot_id = '.$params['select_pilot'].')'; } if (isset($params['select_airplane']) && $params['select_airplane'] != '') { $filter .= ' AND (airplane = \''.$params['select_airplane'].'\')'; } } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php if (isset($params['submit']) ) { $filterarr=Array(); if (isset($params['select_date']) && $params['select_date'] != '') $filterarr[1] = '(DATE(starttime) = \''.$params['select_date'].'\')'; if (isset($params['select_pilot']) && $params['select_pilot'] != '') $filterarr[2] = '(firstpilot_id = '.$params['select_pilot'].' or secondpilot_id = '.$params['select_pilot'].')'; if (isset($params['select_airplane']) && $params['select_airplane'] != '') $filterarr[3] = '(airplane = \''.$params['select_airplane'].'\')'; $filter=implode(' AND ',$filterarr); } ?> |
quote:Op donderdag 10 februari 2011 19:00 schreef GlowMouse het volgende:
Het aantal reacties valt tegen. Dan zal ik het maar verklappen. Pak dit stukje code:
[ code verwijderd ]
De check op regel4 wordt zonder problemen doorlopen: de laatste vier karakters zijn '.txt'. Bij touch wordt er een stukje C-code uitgevoerd, en in C houden strings op na een nul-byte.
Op http://mysql-apache-php.com/fileupload-security.htm staat dit stukje:
[ code verwijderd ]
Deze check voorkomt niet dat er php-code op de server komt. Een plaatje is een file, en een file is gewoon opgebouwd uit bytes. Ergens tussen die bytes kunnen best de volgende zitten: <?php echo 'hoi'; ?>. Een plaatje met die code kun je makkelijk zelf maken door met een hex-editor een plaatje te editten en wat bytes te overschrijven. Het resulterende plaatje ziet er niet uit, maar dat ziet de software nietNet als bij een html-file, wordt alles tussen <?php en ?> uitgevoerd als PHP-code (en de rest van de file wordt gewoon doorgegeven).
Dit kun je maar op één manier voorkomen. Je kunt het plaatje resizen, maar ondanks dat het een stuk lastiger om een plaatje te vinden dat na resizen de code <?php echo 'hoi'; ?> bevat, is het niet onmogelijk. De manier is daarom om plaatjes waar <?php in voorkomt gewoon te blokkeren. Als plaatjes 1MB zijn, kun je de kans p berekenen dat je een plaatje ten onrechte afkeurt (onder de aanname dat de 0/1'en willekeurig, onafhankelijk en identiek zijn verdeeld):
<?php is vijf bytes. De kans dat vijf willekeurige bytes niet overeenkomen met <?php, is 1-(1/256)5. Je wilt dat in de file van 1MB alle vijf opvolgende bytes verschillend zijn. Er zijn ongeveer een miljoen opeenvolgende series van vijf bytes in een bestand van 1MB. De kans dat er geen <?php in je file zit, is ongeveer 1-p = (1-(1/256)5)1.000.000. Dit is lastig om nauwkeurig te berekenen, daarom pakken we de logaritme: log(1-p) = 1.000.000 log(1-(1/256)5) ~= -10-6. Omdat voor kleine p geldt dat log(1-p) = -p, weten we dat p = 10-6. Je keurt dus één op de miljoen files ten onrechte af.
1 2 3 | <?php if (count($filterarr) >> 0 ) ?> |
1 2 3 | <?php if (isset($params['submit']) ) ?> |
1 2 3 | <?php SELECT TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(landingtime,starttime)))),"%k:%i") AS totaltime ?> |
Just a thought, maar neem aan dat het veldtype DATETIME is ? Kan je dan niet met SUM en TIMEDIFF het verschil berekenen (of een totaal aantal uren) en met PHP de datum/tijd formatten met date() of mktime() ?quote:Op vrijdag 11 februari 2011 02:10 schreef KomtTijd... het volgende:
[ code verwijderd ]
Hiervan heb ik ook het idee dat het efficienter kan
Doel: de totale vlieguren van alle vluchten in een bepaalde selectie
Je kunt beter DATE(MAX(starttime)) gebruiken. En voor zover ik weet wordt de tijdcomponent van een date-field op 0 gesteld als je gaat vergelijken met een datetime, dus daar heb je geen extra functie F voor nodig.quote:Op donderdag 10 februari 2011 15:00 schreef GlowMouse het volgende:
Als je tabel heel veel vliegdagen gaat bevatten, zal het sneller zijn om met een index op starttime te doen starttime >= (SELECT F(MAX(DATE(starttime))) FROM ...)
waarbij je even moet zoeken wat je voor F moet gebruiken om een datetime te krijgen met die datum en als tijdstip 00:00:00.
Die had ik gevonden, maar die doet twee variables optellen, niet een hele kolom...quote:Op vrijdag 11 februari 2011 10:06 schreef GlowMouse het volgende:
http://dev.mysql.com/doc/(...)tml#function_addtime
Je kunt het ook anders proberen: TIMEDIFF(SUM(eindtijd), SUM(begintijd))quote:Op vrijdag 11 februari 2011 09:54 schreef KomtTijd... het volgende:
SUM(TIMEDIFF(tijd,tijd) ging fout.
[knip]reactie op edit [/knip]quote:Op zaterdag 12 februari 2011 09:52 schreef MrNiles het volgende:
open sollicitatie voor anonymous hier ofzo
-nee-
1 2 3 4 5 6 | SELECT `pix`.* FROM `pix` WHERE `pix`.`tags` LIKE '%,cool%' AND `pix`.`accepted` = 'y' AND `pix`.`adult` = 'n' LIMIT 0,20 |
1 | 1 SIMPLE pix ref accepted,adult accepted 1 const 249142 Using where |
1 2 3 4 5 6 7 8 9 10 11 12 13 | Sleutelnaam Type Unieke waarde Gecomprimeerd Veld Kardinaliteit Collatie PRIMARY BTREE Ja Nee id 249144 A category BTREE Ja Nee category 0 A filetype 0 A filesize 0 A filex 0 A filey 0 A filecrc 249144 A filedate BTREE Nee Nee filedate 1051 A accepted BTREE Nee Nee accepted 1 A tags BTREE Nee Nee tags 1 A adult BTREE Nee Nee adult 1 A category_2 BTREE Nee Nee category 3663 A |
Goed, dat zou kunnen maar hoe moet ik het dan willen oplossen of moet ik een apart tabel gaan gebruiken om te zoeken op tags?quote:Op zaterdag 12 februari 2011 21:06 schreef GlowMouse het volgende:
LIKE '%,cool%' moet je dan ook niet willen doen.
Ik ga je naslag werk eens lezen, maar hoe moet ik die dan weergeven?quote:Op zaterdag 12 februari 2011 21:13 schreef GlowMouse het volgende:
Voor tags heb ik een mooi naslagwerk gemaakt:
http://gathering.tweakers.net/forum/list_messages/1429432
Je post #202 is onleesbaar trouwens. Zo geef je geen indices weer.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $commando_id= "SELECT 'optredens.id' FROM 'optredens' WHERE datum= '$aData[datum]' AND dagdeel = '$aData[dagdeel]' AND wat = '$aData[wat]' AND waar = '$aData[waar]' "; mysql_query($commando_id); $id='optredens.id'; echo $id; ?> |
quote:Op zondag 13 februari 2011 10:09 schreef MrNiles het volgende:
als ik het volgende uitvoer dan krijg op mijn scherm te staan optredens.id
en ik zie eigenlijk ook wel dat het er staat..maar zonder quotes krijg ik de foutmelding:
Use of undefined constant optredens - assumed 'optredens'
ik zie m echt niet
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php $commando_id= "SELECT 'optredens.id' FROM 'optredens' WHERE datum= '".$aData['datum']."' AND dagdeel = '".$aData['dagdeel']."' AND wat = '".$aData['wat']."' AND waar = '".$aData['waar']."' "; $result = mysql_query($commando_id); //$id='optredens.id'; ?????? je wilde dit veranderen? in $id? Waaruit? zomaar uit 'optredens.id?' // Dit snapt PHP niet , je speelt nu met 2 talen door elkaar SQL en PHP. // hierdoor is het beter om eerst het in een $result te gooien en voor elke Rij een waarde op te //roepen. While($row = mysql_fetch_assoc($result)){ echo $row['id']; } ?> |
nee die echo is puur even een controle of het wel werktquote:Op zondag 13 februari 2011 10:54 schreef Tegan het volgende:
Wat wil je met die id's? Alleen alle id's echo-en?
ja kloptquote:Op zondag 13 februari 2011 11:50 schreef Tegan het volgende:
Dus, je query moet eigenlijk maar een id vinden?
1 2 3 | <?php $sql="INSERT INTO optredens(datum, dagdeel, wat, waar) VALUES ('$aData[datum]','$aData[dagdeel]','$aData[wat]','$aData[waar]')"; ?> |
Je kan een laatst ingevoerde id krijgen met mysql_insert_id();quote:Op zondag 13 februari 2011 11:57 schreef MrNiles het volgende:
[..]
ja klopt
maar die id is pas een paar regels hoger aangemaakt door
[ code verwijderd ]
die id wordt opgehoogd door auto_increment
Dit had ik al een aantal keer gezegdquote:Op zondag 13 februari 2011 12:15 schreef GlowMouse het volgende:
Kolomnamen en tabelnamen schrijf je zonder apostrof eromheen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php $selfSecure = "1"; $shellUser = "test"; $shellPswd = "test1"; $adminEmail = "nietecht@ziggo.nl"; $fromEmail = $HTTP_SERVER_VARS["SERVER_ADMIN"]; $Version = "Webmaster"; if($selfSecure){ if (($PHP_AUTH_USER!=$shellUser)||($PHP_AUTH_PW!=$shellPswd)) { Header('WWW-Authenticate: Basic realm="login"'); Header('HTTP/1.0 401 Unauthorized'); echo "<html> <head> <title>Error - Access Denied</title> </head> <h1>Toegang geweigerd</h1> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?php $selfSecure = "1"; $shellUser = "test"; $shellPswd = "test1"; $adminEmail = "nietecht@ziggo.nl"; $fromEmail = $HTTP_SERVER_VARS["SERVER_ADMIN"]; $Version = "Webmaster";if($selfSecure){ if (($PHP_AUTH_USER!=$shellUser)||($PHP_AUTH_PW!=$shellPswd)) { Header('WWW-Authenticate: Basic realm="login"'); Header('HTTP/1.0 401 Unauthorized'); echo "<html> <head> <title>Error - Access Denied</title> </head> <h1>Toegang geweigerd</h1><hr> <em>$Version</em>"; if(isset($PHP_AUTH_USER)){ $warnMsg =" Iemand probeerde binnen te komen in het bangedeelte: http://".$HTTP_SERVER_VARS["HTTP_HOST"]."$PHP_SELF en gebruikte de verkeerde naam en het verkeerde wachtwoord: Date: ".date("Y-m-d H:i:s")." IP: ".$HTTP_SERVER_VARS["REMOTE_ADDR"]." User Agent: ".$HTTP_SERVER_VARS["HTTP_USER_AGENT"]." username used: $PHP_AUTH_USER password used: $PHP_AUTH_PW "; mail($adminEmail,"Unauthorized Access",$warnMsg, "From: $fromEmail\nX-Mailer:$Version AutoWarn System"); } exit; } } if(!$oCols)$oCols=$termCols; if(!$oRows)$oRows=$termRows; ?> |
Dat was ook niet de oplossing, maar wel een foutquote:Op zondag 13 februari 2011 22:19 schreef henkm het volgende:
$selfSecure = 1;
zo heb ik het ook geprobeerd, helaas herkend hij dan nog niet mijn naam en wachtwoord, hij blijft erom vragen.
1 | if ($selfSecure) |
Daar wordt gekeken of $selfSecure true (of 1, of een string die niet met 0 begint) is.quote:if ($selfSecure)
Oh, doe dat altijd zo if ($var == true)quote:Op zondag 13 februari 2011 22:23 schreef GlowMouse het volgende:
[..]
Daar wordt gekeken of $selfSecure true (of 1, of een string die niet met 0 begint) is.
dat moet zijn: if(isset($_SERVER['PHP_AUTH_USER'])){quote:if(isset($PHP_AUTH_USER)){
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 37 38 39 40 41 42 43 44 45 46 47 | <?php $selfSecure = 1; $shellUser = "test"; $shellPswd = "test1"; $adminEmail = "blaaaa@ziggo.nl"; $fromEmail = $HTTP_SERVER_VARS["SERVER_ADMIN"]; $Version = "Webmaster"; if($selfSecure){ if (($PHP_AUTH_USER!=$shellUser)||($PHP_AUTH_PW!=$shellPswd)) { Header('WWW-Authenticate: Basic realm="login"'); Header('HTTP/1.0 401 Unauthorized'); echo "<html> <head> <title>Error - Access Denied</title> </head> <h1>Toegang geweigerd</h1> <hr> <em>$Version</em>"; if(isset($_SERVER['PHP_AUTH_USER'])){ $warnMsg =" Iemand probeerde binnen te komen in het bangedeelte: http://".$_SERVER["HTTP_HOST"]."$PHP_SELF en gebruikte de verkeerde naam en het verkeerde wachtwoord: Date: ".date("Y-m-d H:i:s")." IP: ".$_SERVER["REMOTE_ADDR"]." User Agent: ".$_SERVER["HTTP_USER_AGENT"]." username used: $PHP_AUTH_USER password used: $PHP_AUTH_PW "; mail($adminEmail,"Unauthorized Access",$warnMsg, "From: $fromEmail\nX-Mailer:$Version AutoWarn System"); } exit; } } if(!$oCols)$oCols=$termCols; if(!$oRows)$oRows=$termRows; ?> |
"Loopt helemaal vast" is niet duidelijk. Wat verwacht je en wat gebeurt er?quote:Op zondag 13 februari 2011 22:41 schreef henkm het volgende:
Beste GlowMouse, sorry voor mijn dommigheid. Ik heb gedaan wat je getypt heb maar helaas loopt hij nu helemaal vast.
1 | #1005 - Can't create table '#sql-1e2c_174' (errno: 13) |
username used: ".$_SERVER["PHP_AUTH_USER"]."quote:Op zondag 13 februari 2011 22:45 schreef henkm het volgende:
Hij loopt vast op regel 33, daar staat nu
username used: $_SERVER['PHP_AUTH_USER']
foutmelding is Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/henk/domains/domein/public_html/p_protect.php on line 33
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 37 38 39 40 41 42 43 44 45 46 47 | <?php $selfSecure = 1; $shellUser = "test"; $shellPswd = "test1"; $adminEmail = "blaat@ziggo.nl"; $fromEmail = $HTTP_SERVER_VARS["SERVER_ADMIN"]; $Version = "Webmaster"; if($selfSecure){ if (($PHP_AUTH_USER!=$shellUser)||($PHP_AUTH_PW!=$shellPswd)) { Header('WWW-Authenticate: Basic realm="login"'); Header('HTTP/1.0 401 Unauthorized'); echo "<html> <head> <title>Error - Access Denied</title> </head> <h1>Toegang geweigerd</h1> <hr> <em>$Version</em>"; if(isset($_SERVER['PHP_AUTH_USER'])){ $warnMsg =" Iemand probeerde binnen te komen in het bangedeelte: http://".$_SERVER["HTTP_HOST"]."$PHP_SELF en gebruikte de verkeerde naam en het verkeerde wachtwoord: Date: ".date("Y-m-d H:i:s")." IP: ".$_SERVER["REMOTE_ADDR"]." User Agent: ".$_SERVER["HTTP_USER_AGENT"]." username used: $_SERVER['PHP_AUTH_USER'] password used: $PHP_AUTH_PW "; mail($adminEmail,"Unauthorized Access",$warnMsg, "From: $fromEmail\nX-Mailer:$Version AutoWarn System"); } exit; } } if(!$oCols)$oCols=$termCols; if(!$oRows)$oRows=$termRows; ?> |
je /tmp map niet.quote:Op zondag 13 februari 2011 22:48 schreef KomtTijd... het volgende:
Ik weet niet helemaal of ik het het beste hier kan vragen of in het linux-topic, maar PHPMyAdmin zegt:
[ code verwijderd ]
als ik een tabel aan wil passen... Het enige wat ik kan vinden is dat er ergens rechten niet goed zouden staan maar mijn hele Lampp-map is gewoon toegankelijk...
Je doet je quotes echt grandioos mis. Zoek even een basistutorial op...quote:Op zondag 13 februari 2011 22:50 schreef henkm het volgende:
[ code verwijderd ]
ik heb echt het idee dat hij echt stuk is nu. hij zegt dus nu regel 33 stuk dat is username used: $_SERVER['PHP_AUTH_USER']
david@david-laptop:~$ sudo chown -R root:root /tmpquote:
disk vol? kijk anders naar http://dev.mysql.com/doc/refman/5.0/en/cannot-create.htmlquote:Op zondag 13 februari 2011 22:55 schreef KomtTijd... het volgende:
[..]
david@david-laptop:~$ sudo chown -R root:root /tmp
david@david-laptop:~$ sudo chmod -R 777 /tmp
verandert niets
heb 'm ook geprobeerd te chownen naar david:david maar dan doet'ie het ook niet. Zou ook niet logisch zijn, ik start lampp als root.
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 37 38 39 40 41 42 43 44 45 46 47 | <?php $selfSecure = 1; $shellUser = "test"; $shellPswd = "test1"; $adminEmail = "blaaaa@ziggo.nl"; $fromEmail = $HTTP_SERVER_VARS["SERVER_ADMIN"]; $Version = "Webmaster"; if($selfSecure){ if (($PHP_AUTH_USER!=$shellUser)||($PHP_AUTH_PW!=$shellPswd)) { Header('WWW-Authenticate: Basic realm="login"'); Header('HTTP/1.0 401 Unauthorized'); echo "<html> <head> <title>Error - Access Denied</title> </head> <h1>Toegang geweigerd</h1> <hr> <em>$Version</em>"; if(isset($_SERVER['PHP_AUTH_USER'])){ $warnMsg =" Iemand probeerde binnen te komen in het bangedeelte: http://".$_SERVER["HTTP_HOST"]."$PHP_SELF en gebruikte de verkeerde naam en het verkeerde wachtwoord: Date: ".date("Y-m-d H:i:s")." IP: ".$_SERVER["REMOTE_ADDR"]." User Agent: ".$_SERVER["HTTP_USER_AGENT"]." username used: ".$_SERVER["PHP_AUTH_USER"]." password used: ".$_SERVER["PHP_AUTH_PW"]." "; mail($adminEmail,"Unauthorized Access",$warnMsg, "From: $fromEmail\nX-Mailer:$Version AutoWarn System"); } exit; } } if(!$oCols)$oCols=$termCols; if(!$oRows)$oRows=$termRows; ?> |
Ook niet. Ik installeer lampp even overnieuw. Misschien helpt dat...quote:Op zondag 13 februari 2011 22:59 schreef GlowMouse het volgende:
[..]
disk vol? kijk anders naar http://dev.mysql.com/doc/refman/5.0/en/cannot-create.html
1 2 3 | <?php if (($PHP_AUTH_USER!=$shellUser)||($PHP_AUTH_PW!=$shellPswd)) { ?> |
Hier doe je een check op $PHP_AUTH_USER en $PHP_AUTH_PW, maar in de email doe je $_SERVER["PHP_AUTH_USER"].quote:if (($PHP_AUTH_USER!=$shellUser)||($PHP_AUTH_PW!=$shellPswd)) {
Goed gezienquote:Op maandag 14 februari 2011 09:38 schreef remi1986 het volgende:
[..]
Hier doe je een check op $PHP_AUTH_USER en $PHP_AUTH_PW, maar in de email doe je $_SERVER["PHP_AUTH_USER"].
Verander dat if statement eens naar de $_SERVER variabelen.
Haha en dat op maandagochtendquote:Op maandag 14 februari 2011 09:38 schreef cablegunmaster het volgende:
[..]
Goed gezien
nu nog wachten op reactie![]()
@GlowMouse; ben nu mijn database aan't omzetten en gebruik de paden (directories) als tags voor de plaatjes, had in een eerste test ruim 300.000 tags en ruim 1,5Miljoen links van plaatjes/tags.quote:Op zaterdag 12 februari 2011 21:24 schreef Chandler het volgende:
Ik ga je naslag werk uitprinten, dit moet ik even laten bezinken denk ik
1 2 3 | <?php $id='optredens.id'; ?> |
1 2 3 | <?php ALTER TABLE tabelnaam ADD $kolomnaam VARCHAR( 3 ) DEFAULT 'o' NOT NULL " ; ?> |
1 2 3 | <?php Zoiets kan ja, maar dat wil je niet. ?> |
Tips waar te beginnen zijn welkom!quote:Je moet je eerst in databases verdiepen voordat je zulke rare dingen doet.
ok..misschien dan wel een tipje welk hoek ik moet zoeken om een kolom toe te voegen met een bepaalde naam?quote:Elke databsetutorial zal helpen. Zodra je variabele kolomnamen gebruikt, doe je wat fout.
1 2 3 | <?php phpMyAdmin bijvoorbeeld. ?> |
Een database is geen spreadsheet!quote:Op maandag 14 februari 2011 15:02 schreef MrNiles het volgende:
[ code verwijderd ]
ja ok..maar voor mijn toepassing lijkt me dat niet handig
of zit ik helemaal verkeerd te denken?
mijn doel:
ik wil per datum een kolom aanmaken waarin mensen hun aanwezigheid kunnen aangeven
die kolom zou ik graag een unieknr geven
Is dit dan niet de goede manier..want het lijkt me niet de bedoeling om met de hand kolommen toe te moeten voegen?
Dit of elke datum een id meegeven, elke persoon een id meegeven en deze aan elkaar koppelen via een tabel. Zo kan een datum meerder personen hebben die aanwezig zijn.quote:Op maandag 14 februari 2011 15:06 schreef KomtTijd... het volgende:
[..]
Een database is geen spreadsheet!
je kunt gewoon twee kolommen maken, <naam> | <datum_aanwezig>. Dat is toch genoeg?
Inderdaad. 'Je moet van links naar rechts lezen, niet van boven naar beneden' zei mijn database leraar altijd.quote:Op maandag 14 februari 2011 15:16 schreef themole het volgende:
[..]
Dit of elke datum een id meegeven, elke persoon een id meegeven en deze aan elkaar koppelen via een tabel. Zo kan een datum meerder personen hebben die aanwezig zijn.
Een kolom is niet gelijk aan een cel.quote:Op maandag 14 februari 2011 15:02 schreef MrNiles het volgende:
[ code verwijderd ]
ja ok..maar voor mijn toepassing lijkt me dat niet handig
of zit ik helemaal verkeerd te denken?
mijn doel:
ik wil per datum een kolom aanmaken waarin mensen hun aanwezigheid kunnen aangeven
die kolom zou ik graag een unieknr geven
Is dit dan niet de goede manier..want het lijkt me niet de bedoeling om met de hand kolommen toe te moeten voegen?
Ja met <naam> bedoel ik natuurlijk een verwijzing naar een naam... Maar een derde koppeltabel lijkt me in dit geval een beetje overdreven, een datum is van zichzelf al herkenbaar, hoeft niet eerst een apart id te krijgen...quote:Op maandag 14 februari 2011 15:16 schreef themole het volgende:
[..]
Dit of elke datum een id meegeven, elke persoon een id meegeven en deze aan elkaar koppelen via een tabel. Zo kan een datum meerder personen hebben die aanwezig zijn.
Nee. Lees dit http://www.w3schools.com/sql/sql_join_inner.asp .quote:Op maandag 14 februari 2011 15:26 schreef MrNiles het volgende:
ik begrijp wat jullie zeggen..denk ik
maar ik was bang voor "vervuiling" van de datatbase
Dus eigenlijk kan ik het best voor mijn toepassing voor elke datum een nieuwe tabel aanmaken
waarin alle gebruikers in worden toegevoegd?
Mijn gedachte om alle gebruikers in een database te hebben en dan elke keer een datum toevoegen...verkeerd om gedacht
Dan heb je niet eens een kolom present nodig. Iedere rij in de database impliceert al dat de gebruiker op die dag aanwezig is. Als iemand niet aanwezig is op een bepaalde dag, komt die combinatie gewoon niet voor.quote:Op maandag 14 februari 2011 15:28 schreef remi1986 het volgende:
Iedere gebruiker heeft een id.
Dan kan je een koppeltabel maken met
date,user_id,present
Als je wil weten welke gebruikers er op een datum komen doe je
SELECT WHERE date=
Als je wil weten op welke datum een bepaalde gebruiker komt
SELECT WHERE user_id =
Zo hoef je geen kolommen of extra tabellen aan te maken
De reden waarom je $kolomnaam krijgt, is omdat je gewoon $kolom in de string hebt staan. Als je de waarde van een php variabele wil, doe jequote:Op maandag 14 februari 2011 14:24 schreef MrNiles het volgende:
omdat ik zat te pielen met
[ code verwijderd ]
en door de opmerking van cablegunmaster over dat php en sql niet door elkaar te gebruiken is (logisch natuurlijk)
heb ik toch nog een vraagje over het toevoegen van een kolom in een tabel
is het volgende niet mogelijk of wel (want het lukt me niet)
[ code verwijderd ]
1 | ALTER TABLE tabelnaam ADD ".$kolomnaam." VARCHAR( 3 ) DEFAULT 'o' NOT NULL " ; |
Heb je helemaal gelijk in. Het was ff snel als idee. Met present kan je misschien nog aangeven of er meerdere personen komen. Maar inderdaad, in mijn uitleg daaronder is de present kolom niet nodig. Excuses...quote:Op maandag 14 februari 2011 15:34 schreef Light het volgende:
[..]
Dan heb je niet eens een kolom present nodig. Iedere rij in de database impliceert al dat de gebruiker op die dag aanwezig is. Als iemand niet aanwezig is op een bepaalde dag, komt die combinatie gewoon niet voor.
Je vergeet de backticks.quote:Op maandag 14 februari 2011 15:34 schreef remi1986 het volgende:
[..]
De reden waarom je $kolomnaam krijgt, is omdat je gewoon $kolom in de string hebt staan. Als je de waarde van een php variabele wil, doe je
[ code verwijderd ]
En wat ik zelf altijd doe, als extra veiligheid is PHP variablen escapen met mysql_real_escape_string().
Ik snap niet helemaal wat de schrijver van die tekst bedoelt. In onderstaande voorbeeld bewijst hij juist toch dat je ze wel moet gebruiken?quote:Op maandag 14 februari 2011 15:43 schreef remi1986 het volgende:
[..]
Backticks gebruik ik nooit
http://www.pfz.nl/wiki/backticks/
Tenzij hij bedoelt dat je geen reserved words als kolomnamen moet gebruiken, maar dan nog maakt het niet uit als je backticks gebruikt.quote:Maar het kan nog veel erger. Gereserveerde woorden hebben in SQL een betekenis. Woorden zoals DELETE en DROP hebben zelfs een gevaarlijke betekenis.
SELECT
`delete`
FROM
tabel;
Dit selecteert de kolom 'delete' uit de tabel.
SELECT
delete
FROM
tabel;
Zonder backticks selecteert dit de uitkomst van de DELETE query die zojuist je tabel heeft geleegd.
1 2 3 4 | CREATE TABLE group ( 'group' INT NOT NULL , 'tekst' INT NOT NULL ) ENGINE = MYISAM |
1 2 3 4 | CREATE TABLE group1 ( 'group1' INT NOT NULL , 'group2' INT NOT NULL ) ENGINE = MYISAM |
1 | ALTER TABLE tabelnaam ADD ".$kolomnaam." VARCHAR( 3 ) DEFAULT 'o' NOT NULL |
Remy1986...als je zegt dat dit werkt..leg me het volgende dan eens uitquote:De reden waarom je $kolomnaam krijgt, is omdat je gewoon $kolom in de string hebt staan. Als je de waarde van een php variabele wil, doe je
[code]ALTER TABLE tabelnaam ADD ".$kolomnaam." VARCHAR( 3 ) DEFAULT 'o' NOT NULL " ; [/code]En wat ik zelf altijd doe, als extra veiligheid is PHP variablen escapen met mysql_real_escape_string().
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php ini_set('display_errors', 'On'); error_reporting(E_ALL); $con = mysql_connect("localhost","login",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("login", $con); $id = "zooi"; $commando="ALTER TABLE optredens_gebruikers ADD ".$id." VARCHAR( 3 ) DEFAULT 'o' NOT NULL " ; mysql_query($commando); mysql_close($con); ?> |
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 37 38 39 | <?php ini_set('display_errors', 'On'); error_reporting(E_ALL); $con = mysql_connect("localhost","login",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("login", $con); $datum=$_POST['datum']; $dagdeel=$_POST['dagdeel']; $wat=$_POST['wat']; $waar=$_POST['waar']; $sql="INSERT INTO optredens(datum, dagdeel, wat, waar) VALUES ('$datum','$dagdeel','$wat','$waar')"; mysql_query($sql); // Formulier succes! echo '<p>Je hebt het optreden succesvol toegevoegd!</p>'.'<br />'; echo " Datum: $datum <br />"; echo " Dagdeel: $dagdeel<br />"; echo " Wat: $wat<br />"; echo " Waar: $waar<br />"; $bla = mysql_insert_id(); echo $bla; $id = $bla; $commando="ALTER TABLE optredens_gebruikers ADD ".$id." VARCHAR( 3 ) DEFAULT 'o' NOT NULL " ; mysql_query($commando); echo "1 record added"; mysql_close($con); ?> |
1 2 3 | <?php $query=mysql_query($commando) or die(mysql_error()); ?> |
is goed...de waarde komt van een auto_incrementquote:Weet je zeker dat $bla goed is? Wat geeft die voor waarde dan?
In de tabel van optredens, heb je daar een auto_increment field? Dan zou het goed moeten gaan....
Daar waar ik nooit numerieke waarden als kolomnaam zou gebruiken heeft GlowMouse gelijk. Je moet daarvoor wel backticks gebruiken.quote:Op dinsdag 15 februari 2011 10:59 schreef MrNiles het volgende:
[..]
is goed...de waarde komt van een auto_increment
bijv 121
testje zal ik later doen..vergadering..en ik ben al te laat..shit
quote:Op maandag 14 februari 2011 15:06 schreef KomtTijd... het volgende:
[..]
Een database is geen spreadsheet!
je kunt gewoon twee kolommen maken, <naam> | <datum_aanwezig>. Dat is toch genoeg?
quote:Op dinsdag 15 februari 2011 11:34 schreef remi1986 het volgende:
Ik zou hier eens zon voorstel voor een databasestructuur moeten maken, waar ik op deze manier kolommen wil toevoegen. Denk dat ik dan op zoek kan naar ander werk
Daarom mijn tip aan jou schrijf het in jip en janneke taal op zodat je laat weten wat je wil.quote:Op dinsdag 15 februari 2011 11:57 schreef MrNiles het volgende:
ik snap het wel...over het aanpassen van de database..en dat het geen spreadsheet is
en ik begrijp ook dat het op een andere manier moet..en dat ga ik ook doen
maar ik was gewoon nieuwsgierig waarom het ene wel lukt en het andere niet...de verklaring dat dat komt omdat het numeriek neem ik meteen voor waarheid aan...
case closed....
mail komt later deze middagquote:Daarom mijn tip aan jou schrijf het in jip en janneke taal op zodat je laat weten wat je wil. (pseudo code).
1 2 3 | <?php if (isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && $_SERVER["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest") ?> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |