Voor elke character wordt deze code ge-evalled:quote:
1 | ++$u % 2 ? $0 & ~" " : $0 | " " |
Een tilde is een bit inverse / NOT-operator. 1011 wordt dus 0100.quote:Op zondag 2 oktober 2005 20:21 schreef Swetsenegger het volgende:
[..]
Met uitleg graag
[ code verwijderd ]
++$u%2
Hier kijk je in ieder geval of iets even is. het 'iets' ontgaat me alleen.
Zoja, dan vervang je door $0&~" " dus het karakter ga je AND'en met tilde spatie
Zo nee, dan vervang je door $0|" " dus het karakter ga je orren met spatie.
wat de neuk is ++$u?quote:Op zondag 2 oktober 2005 20:28 schreef JeRa het volgende:
[..]
Een tilde is een bit inverse / NOT-operator. 1011 wordt dus 0100.
++$u wordt 1, 2, 3, 4 en met % 2 wordt dat dus 1, 0, 1, 0 omdat % een modulus-operator is
$u = 0;quote:
Ja ik begrijp ++ ervoor en erachter wel.quote:Op zondag 2 oktober 2005 20:31 schreef JeRa het volgende:
[..]
$u = 0;
$a = $u++;
echo $a;
$u = 0;
$a = ++$u;
echo $a;
Voer deze code eens uit++ achter de variabele geeft de oude waarde terug, ++ voor de variabele geeft de nieuwe waarde terug. ++ voor de variabele is tevens iets sneller omdat de oude waarde niet onthouden hoeft te worden
Als in PHP een variabele nog niet bestaat, en je doet er een integer-operatie op (++), dan is ie standaard nulquote:Op zondag 2 oktober 2005 20:33 schreef Swetsenegger het volgende:
[..]
Ja ik begrijp ++ ervoor en erachter wel.
Maar waar komt $u vandaan
Ik begreep het toen ik 'm overlasquote:Op zondag 2 oktober 2005 20:34 schreef JeRa het volgende:
[..]
Als in PHP een variabele nog niet bestaat, en je doet er een integer-operatie op (++), dan is ie standaard nul
Dus dit als eerste statement in een PHP-bestand:
$u++;
Is hetzelfde als dit:
$u = 0;
$u++;
$u bestond dus gewoonweg nog niet
Dit is een A: 10000001quote:Op zondag 2 oktober 2005 20:44 schreef JeRa het volgende:
in PHP is vrijwel alles true, behalve 0 wat naar false evalueert.
Dat wat jij gevonden hebt is maar vaag, want je moet namelijk de spatie setten of unsetten
Ik ben toch wel benieuwd waar er dan nog 3 weg zouden kunnen.quote:Op zondag 2 oktober 2005 20:13 schreef JeRa het volgende:
[..]
Hele mooie oplossing, maar daar kunnen er nog 3 vanaf*niet zegt waar*
Sterker nogquote:Op zondag 2 oktober 2005 21:13 schreef Light het volgende:
[..]
Ik ben toch wel benieuwd waar er dan nog 3 weg zouden kunnen.
Klopt, ik had 'm iets aangedragen waardoor het geheel twee tekentjes kleiner kon, maar ik vond het nogal triviaalquote:Op zondag 2 oktober 2005 21:16 schreef Swetsenegger het volgende:
[..]
Sterker nog
SR zegt op phpfreakz 'm in 59 te hebben
Mjah, voor die van light kan er misschien nog een masker verzonnen worden waardoor je bij het eerste karakter maar 1 bitwise manipulatie nodig hebt (inverse spatie XOR'en ofzo), maar daar winnen we maar 1 karakter meequote:Op zondag 2 oktober 2005 21:18 schreef JeRa het volgende:
[..]
Klopt, ik had 'm iets aangedragen waardoor het geheel twee tekentjes kleiner kon, maar ik vond het nogal triviaal(daarom zegt ie ook 'als ie goedgekeurd wordt').
XOR'en gaat niet werken omdat je dan áltijd de character van case verandert, ongeacht wat het ervoor wasquote:Op zondag 2 oktober 2005 21:30 schreef Swetsenegger het volgende:
[..]
Mjah, voor die van light kan er misschien nog een masker verzonnen worden waardoor je bij het eerste karakter maar 1 bitwise manipulatie nodig hebt (inverse spatie XOR'en ofzo), maar daar winnen we maar 1 karakter mee
Ja ik heb al een blaadje vol met 1'en en 0'en, maar omzowel uppercase als lowercase zo te maskeren met 1 AND of OR dat er altijd uppercase uitkomt EN dat universeel is voor elk karakter valt nog niet meequote:Op zondag 2 oktober 2005 21:32 schreef JeRa het volgende:
[..]
XOR'en gaat niet werken omdat je dan áltijd de character van case verandert, ongeacht wat het ervoor was
Alt-223. Maar om de een of andere reden werkt die code niet in mijn editor. En ook het teken erin plakken werkt niet goed. Maar goed, 't scheelt hooguit 1 teken.quote:Op zondag 2 oktober 2005 21:30 schreef Swetsenegger het volgende:
[..]
Mjah, voor die van light kan er misschien nog een masker verzonnen worden waardoor je bij het eerste karakter maar 1 bitwise manipulatie nodig hebt (inverse spatie XOR'en ofzo), maar daar winnen we maar 1 karakter mee
OE, samen met ALT 223 kom je dan al op 62 Lightquote:Op zondag 2 oktober 2005 21:58 schreef Nevermind het volgende:
was next($_POST) al aangedragen als alternatief voor $_POST[string]? Weer twee winst
Dan moeten er nog 3 af, ergens.quote:Op zondag 2 oktober 2005 22:03 schreef Swetsenegger het volgende:
[..]
OE, samen met ALT 223 kom je dan al op 62 Light
-edit- geeft een parse error
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | stat - naam van de statistiek stat_user - gebruikers naam ennuh psw :P statbrowser - voor opslag browser naam statcolor - * statcountry - * statdate - hierin gaat de datum, tijd, etc stathost - * stathour - * statip - ip van de gebruiker en de laatste visit statkeywords - * statlanguage - * statlast - laatste gebruikers online (max 25) statonline - wie zijn der online!? statos - * statreferer - * statresolution - * met * zijn dezelfde type tabel (id, statistic id, value en count van het aantal users) ik heb ze opgesplit omdat ik dacht dat dat wel handig was ivm uitlezen (grote tabellen worden slomer als ze voller raken, tenminste dat leek me logisch) |
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | CREATE TABLE `stat` ( `id` int(4) NOT NULL auto_increment, `name` varchar(32) NOT NULL default '', `user_id` int(11) NOT NULL default '0', `title` varchar(75) NOT NULL default '', `referer` varchar(75) NOT NULL default '', `active` tinyint(1) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM; CREATE TABLE `stat_user` ( `id` int(11) NOT NULL auto_increment, `username` varchar(32) NOT NULL default '', `password` varchar(64) NOT NULL default '', `user_level` tinyint(1) NOT NULL default '0', `last_login` datetime NOT NULL default '0000-00-00 00:00:00', KEY `id` (`id`) ) TYPE=MyISAM; CREATE TABLE `statdate` ( `id` int(4) NOT NULL auto_increment, `sid` int(4) NOT NULL default '0', `day` char(2) NOT NULL default '', `weekday` char(2) NOT NULL default '', `week` char(2) NOT NULL default '', `month` char(2) NOT NULL default '', `year` varchar(4) NOT NULL default '', `count` bigint(20) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM; CREATE TABLE `statip` ( `id` int(4) NOT NULL auto_increment, `sid` int(4) NOT NULL default '0', `value` varchar(75) NOT NULL default '', `lastdate` varchar(10) default NULL, `count` bigint(20) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM; CREATE TABLE `statkeywords` ( `sid` tinyint(4) NOT NULL default '0', `lastupdate` datetime NOT NULL default '0000-00-00 00:00:00', `keyword` varchar(25) NOT NULL default '', `count` bigint(20) NOT NULL default '0', KEY `sid` (`sid`) ) TYPE=MyISAM; CREATE TABLE `statlast` ( `id` bigint(20) NOT NULL auto_increment, `sid` tinyint(4) NOT NULL default '0', `lasttime` timestamp(14) NOT NULL, `date` datetime NOT NULL default '0000-00-00 00:00:00', `ip` varchar(15) NOT NULL default '', `host` varchar(255) NOT NULL default '', `referer` varchar(255) NOT NULL default '', `os` varchar(75) NOT NULL default '', `browser` varchar(75) NOT NULL default '', `country` varchar(75) NOT NULL default '', `color` varchar(75) NOT NULL default '', `resolution` varchar(75) NOT NULL default '', KEY `id` (`id`,`sid`) ) TYPE=MyISAM; CREATE TABLE `statonline` ( `id` int(4) unsigned zerofill NOT NULL auto_increment, `sid` tinyint(4) NOT NULL default '0', `session_id` varchar(255) NOT NULL default '', `activity` datetime NOT NULL default '0000-00-00 00:00:00', `member` enum('y','n') default 'n', `ip_address` varchar(255) NOT NULL default '', `cururl` varchar(255) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM; CREATE TABLE `statreferer` ( `sid` int(4) NOT NULL default '0', `date` date NOT NULL default '0000-00-00', `value` varchar(75) NOT NULL default '', `count` bigint(20) NOT NULL default '0', `type` enum('I','E') NOT NULL default 'I' ) TYPE=MyISAM; CREATE TABLE `statbrowser` ( `id` int(4) unsigned zerofill NOT NULL auto_increment, `sid` int(4) NOT NULL default '0', `value` varchar(75) NOT NULL default '', `count` bigint(20) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM; CREATE TABLE `statcolor` ( `id` int(4) NOT NULL auto_increment, `sid` int(4) NOT NULL default '0', `value` varchar(75) NOT NULL default '', `count` bigint(20) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM; CREATE TABLE `statcountry` ( `id` int(4) NOT NULL auto_increment, `sid` int(4) NOT NULL default '0', `value` varchar(75) NOT NULL default '', `count` bigint(20) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM; CREATE TABLE `stathost` ( `id` int(4) NOT NULL auto_increment, `sid` int(4) NOT NULL default '0', `value` varchar(75) NOT NULL default '', `count` bigint(20) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM; CREATE TABLE `stathour` ( `id` int(4) NOT NULL auto_increment, `sid` int(4) NOT NULL default '0', `value` varchar(75) NOT NULL default '', `count` bigint(20) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM; CREATE TABLE `statlanguage` ( `id` int(4) NOT NULL auto_increment, `sid` int(4) NOT NULL default '0', `value` varchar(75) NOT NULL default '', `count` bigint(20) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM; CREATE TABLE `statos` ( `id` int(4) NOT NULL auto_increment, `sid` int(4) NOT NULL default '0', `value` varchar(75) NOT NULL default '', `count` bigint(20) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM; CREATE TABLE `statresolution` ( `id` int(4) NOT NULL auto_increment, `sid` int(4) NOT NULL default '0', `value` varchar(75) NOT NULL default '', `count` bigint(20) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM; |
Welk gedeelte? next($_POST) heb ik getest en werkt.quote:Op zondag 2 oktober 2005 22:03 schreef Swetsenegger het volgende:
[..]
OE, samen met ALT 223 kom je dan al op 62 Light
-edit- geeft een parse error
Ja, daar heb ik mee getest. Door het hidden field gebruik ik next ipv pos, zodat ie het tweede veld pakt ("string") in plaats van het hidden field.quote:Op zondag 2 oktober 2005 22:45 schreef Swetsenegger het volgende:
@Nevermind, heb je wel getest MET het fform uit de opgave. Daar staat ook nog een hidden field in.
Maar sowieso kreeg ik een parseerror wanneer ik next($_POST) gebruikte.
1 | <?=preg_replace('/\w\s?\w?/e','ucfirst("$0")',strtolower(next($_POST))); |
Die next($_POST) werkt hier wel goedquote:Op zondag 2 oktober 2005 22:45 schreef Swetsenegger het volgende:
@Nevermind, heb je wel getest MET het fform uit de opgave. Daar staat ook nog een hidden field in.
Maar sowieso kreeg ik een parseerror wanneer ik next($_POST) gebruikte.
Dan zijn goede indexen zeker van belang. De forumreactiestabel zal wel het predikaat "groot" meekrijgen, maar lijkt me toch nog redelijk snelquote:@Chandler.
16 tabellen voor statistiekenIk zou eens een paar tutorials lezen over normalisatie, want het lijkt me dat dat efficienter kan.
Ow en grote tabellen welke trager worden als ze voller raken.
Ik denk dat MySQL efficienter data uit 1 grote tabel haalt, dan uit 16 relationele tabellen. En hoe groot wordt je tabel? Bij mysql spreken ze pas over 'groot' bij miljoenen records.
1 2 3 4 5 6 7 8 | CREATE TABLE `statcounts` ( `id` int(4) NOT NULL auto_increment, `statid` int(4) NOT NULL default '0', `propertyid` INT(4) NOT NULL default '0', `value` varchar(75) NOT NULL default '', `count` bigint(20) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM; |
Tijdsduur filmpjes is variabelquote:Op maandag 3 oktober 2005 09:53 schreef Chandler het volgende:
@LeeHarveyOswald; wat denk je van een frame die je met een bepaalde timer (als het filmpje geladen is) vervangt door een ander filmpje? want ook in javascript kan je werken met timers
Zodat een redacteur eerst moet kijken hoelang zijn / haar filmpje is, en dat nog is extra in moet voerenquote:Op maandag 3 oktober 2005 10:35 schreef Chandler het volgende:
kan je toch ook in de database zetten? dan geef je die ook als variabel mee..!!
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 | <body> <?php include('connect.php'); $query = "SELECT * FROM forum_$f_$t"; $query2 = "SELECT naam FROM naam_fora WHERE forumnummer=$f"; $query3 = "SELECT naam FROM forum_$f WHERE topicnummer=$t"; $rs = mysql_query($query); $rs2 = mysql_query($query2); $rs3 = mysql_query($query3); $a = mysql_fetch_array($rs3); $b = mysql_fetch_array($rs2); ?> <div class="header">ERIK FORUM</div> <div class="content"><h1 class="index"><?php echo $a[naam];?></h1> <a href="/erikforum.php">Index</a> >> <a href="/forum.php?f=<?php echo $f ?>"><?php echo $b[naam] ?></a> >> <a href="/topic.php?f=<?php echo $f ?>&t=<?php echo $t?>"><?php echo $a[naam] ?></a> <table width="626" height="36"> <?php while($z = mysql_fetch_array($rs)) { ?> <tr> <td width="618"><?php echo $z[berichten] ?></td> </tr> <?php } ?> </table> </div> <?php mysql_close(); ?> </body> </html> |
Eh nee, dat werkt ook niet wanneer PHP tenminste standaard geinstalleerd is en superglobals uit staan.quote:Op maandag 3 oktober 2005 16:07 schreef Lamme_Sterfkanarie het volgende:
je kunt niet zomaar $f ofzo in een query gebruiken
WHERE topicnummer = '" . $t . "'
zou wel moeten werken. Maar je mist nog wel meer dingen die wel erg basis zijn.
jah duh.. dat weet ik ook wel. Dit was gewoon het eerste ding wat me opviel van $random aantal foutenquote:Op maandag 3 oktober 2005 16:09 schreef Swetsenegger het volgende:
[..]
Eh nee, dat werkt ook niet wanneer PHP tenminste standaard geinstalleerd is en superglobals uit staan.
WHERE topicnummer = '" . $_GET['t'] . "'
werkt wel, maar is 'levens gevaarlijk' aangezien je je userinput totaal niet gecontroleerd heb.
nou, bij een ander document doet hij het wel met forum_$f oid.quote:Op maandag 3 oktober 2005 16:07 schreef Lamme_Sterfkanarie het volgende:
je kunt niet zomaar $f ofzo in een query gebruiken
WHERE topicnummer = '" . $t . "'
zou wel moeten werken. Maar je mist nog wel meer dingen die wel erg basis zijn.
Ik heb het tot nu zo gedaan, omdat ik een paar probleempjes mee had omdat het niet werkte, maar zo werkte het wel bij andere documenten.quote:Op maandag 3 oktober 2005 16:11 schreef Lamme_Sterfkanarie het volgende:
[..]
jah duh.. dat weet ik ook wel. Dit was gewoon het eerste ding wat me opviel van $random aantal fouten
wat nog meer dan?
nou.
je database opzet klopt niet. Dit kan in minder queries. Kijk eens naar LEFT JOIN en JOIN in het algemeen.
Lees een dingen over $_POST en $_GET en hoe je moet voorkomen dat mensen sql injections doen omdat je totaal geen waarden controleert. tip: is_numeric()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php $query = " SELECT woei FROM table WHERE woei_id= '" . $_GET['iets'] . "' "; mysql_query ( $query ); if ( mysql_errno () > 0 ) { trigger_error ( "MySQL Error!!<br><br>" . mysql_error () . "<br>in query:<br>$query" ); } ?> |
Er is ook niet zoveel dat er kan gebeuren als mensen die waardes gaan veranderen. Of heb jij een ander idee hoe ik het kan doen met een link die zich aanpast aan de URL waar je vandaan komt en dan de output verandert?quote:Op maandag 3 oktober 2005 16:09 schreef Swetsenegger het volgende:
[..]
Eh nee, dat werkt ook niet wanneer PHP tenminste standaard geinstalleerd is en superglobals uit staan.
WHERE topicnummer = '" . $_GET['t'] . "'
werkt wel, maar is 'levens gevaarlijk' aangezien je je userinput totaal niet gecontroleerd heb.
*mompelt iets over subqueries en het DROP-commandoquote:Op maandag 3 oktober 2005 16:21 schreef freiss het volgende:
[..]
Er is ook niet zoveel dat er kan gebeuren als mensen die waardes gaan veranderen. Of heb jij een ander idee hoe ik het kan doen met een link die zich aanpast aan de URL waar je vandaan komt en dan de output verandert?
Overigens geeft die code een foutmelding als ik hem er op zet (en ja, dat van dat woei enz. heb ik weggehaaldquote:Op maandag 3 oktober 2005 16:20 schreef Lamme_Sterfkanarie het volgende:
je kunt je queries beter zo opzetten:
[ code verwijderd ]
Dan zie je direct waar het mis gaat.
1 | pagina.php?t=1; DROP TABLE users |
en dan niet van dat hoort zo, maar een parse error.quote:Op maandag 3 oktober 2005 16:28 schreef freiss het volgende:
[..]
Overigens geeft die code een foutmelding als ik hem er op zet (en ja, dat van dat woei enz. heb ik weggehaald)
oh ok, ik zal het onthouden.quote:Op maandag 3 oktober 2005 16:30 schreef Lamme_Sterfkanarie het volgende:
als jij zomaar de waarde $t accepteert en in je query gebruikt zonder dat je checked of er alleen info in staat die jij wil hebben kan ik iets doen als
[ code verwijderd ]
en weg zou je tabel users zomaar kunnen zijn.
Check daarom of $_GET['t'] een getal is en niets anders. Dit kun je doen met bijvoorbeeld is_numeric()
Vertrouw nooit data ingevoerd door je gebruikers.
hij doet het trouwens nu. dankjequote:Op maandag 3 oktober 2005 16:07 schreef Lamme_Sterfkanarie het volgende:
je kunt niet zomaar $f ofzo in een query gebruiken
WHERE topicnummer = '" . $t . "'
zou wel moeten werken. Maar je mist nog wel meer dingen die wel erg basis zijn.
Als hij het met deze exacte setting doet, kan ik je garanderen dat hij op een andere server, of wanneer je hoster eens gaat updaten, het niet doetquote:Op maandag 3 oktober 2005 16:34 schreef freiss het volgende:
[..]
hij doet het trouwens nu. dankjeIk zal mijn leven beteren
![]()
![]()
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |