quote:Op dinsdag 29 januari 2008 12:51 schreef JortK het volgende:
Hoeveel trager dan?
Ik werk op echt grote omgevingen (MSSQL) maar daar merk ik het echt niet
Wat ik wel merk in performance is of je je joins left in de WHERE of in de FROM
Als je een tabel een of meerdere keren met zichzelf joint dan ontkom je natuurlijk niet aan aliassen... dat het performance kost wist ik ook niet eigenlijk.quote:Op dinsdag 29 januari 2008 11:53 schreef Chandler het volgende:
[..]
Dat wist ik ook nietweer wat geleerd, vind zo ie zo dat aliassen vies zijn, het is imho duidelijker om gewoon de gehele tabelnaam te gebruiken, weet je gelijk wat waar voor dient!
Dat klopt maar als je een tabel meerdere keren koppelt doe je imho iets foutquote:Op dinsdag 29 januari 2008 13:03 schreef Farenji het volgende:
[..]
Als je een tabel een of meerdere keren met zichzelf joint dan ontkom je natuurlijk niet aan aliassen... dat het performance kost wist ik ook niet eigenlijk.
Nee hoor hoeft absoluut nietquote:Op dinsdag 29 januari 2008 13:13 schreef Chandler het volgende:
[..]
Dat klopt maar als je een tabel meerdere keren koppelt doe je imho iets fout
Nee hoor.. in sommige situaties is dat noodzakelijk. Als je met parent_id's werkt bijvoorbeeld.quote:Op dinsdag 29 januari 2008 13:13 schreef Chandler het volgende:
[..]
Dat klopt maar als je een tabel meerdere keren koppelt doe je imho iets fout
Geef eens een voorbeeldquote:
Als jij dat wilt ;)quote:
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 | FROM TBL_MPM LEFT OUTER JOIN TBL_MPM AS TBL_MPM_009 ON TBL_MPM_009.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_009.MPM_TAB='A' AND TBL_MPM_009.MPM_FIELD='009' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_011 ON TBL_MPM_011.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_011.MPM_TAB='A' AND TBL_MPM_011.MPM_FIELD='011' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_016 ON TBL_MPM_016.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_016.MPM_TAB='A' AND TBL_MPM_016.MPM_FIELD='016' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_019 ON TBL_MPM_019.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_019.MPM_TAB='A' AND TBL_MPM_019.MPM_FIELD='019' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_022 ON TBL_MPM_022.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_022.MPM_TAB='A' AND TBL_MPM_022.MPM_FIELD='022' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_023 ON TBL_MPM_023.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_023.MPM_TAB='A' AND TBL_MPM_023.MPM_FIELD='023' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_027 ON TBL_MPM_027.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_027.MPM_TAB='A' AND TBL_MPM_027.MPM_FIELD='027' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_028 ON TBL_MPM_028.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_028.MPM_TAB='A' AND TBL_MPM_028.MPM_FIELD='028' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_032 ON TBL_MPM_032.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_032.MPM_TAB='A' AND TBL_MPM_032.MPM_FIELD='032' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_033 ON TBL_MPM_033.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_033.MPM_TAB='A' AND TBL_MPM_033.MPM_FIELD='033' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_038 ON TBL_MPM_038.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_038.MPM_TAB='A' AND TBL_MPM_038.MPM_FIELD='038' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_039 ON TBL_MPM_039.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_039.MPM_TAB='A' AND TBL_MPM_039.MPM_FIELD='039' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_040 ON TBL_MPM_040.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_040.MPM_TAB='A' AND TBL_MPM_040.MPM_FIELD='040' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_041 ON TBL_MPM_041.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_041.MPM_TAB='A' AND TBL_MPM_041.MPM_FIELD='041' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_037 ON TBL_MPM_037.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_037.MPM_TAB='A' AND TBL_MPM_037.MPM_FIELD='037' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_042 ON TBL_MPM_042.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_042.MPM_TAB='A' AND TBL_MPM_042.MPM_FIELD='042' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_044 ON TBL_MPM_044.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_044.MPM_TAB='A' AND TBL_MPM_044.MPM_FIELD='044' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_045 ON TBL_MPM_045.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_045.MPM_TAB='A' AND TBL_MPM_045.MPM_FIELD='045' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_046 ON TBL_MPM_046.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_046.MPM_TAB='A' AND TBL_MPM_046.MPM_FIELD='046' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_047 ON TBL_MPM_047.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_047.MPM_TAB='A' AND TBL_MPM_047.MPM_FIELD='047' LEFT OUTER JOIN TBL_MPM AS TBL_MPM_048 ON TBL_MPM_048.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_048.MPM_TAB='A' AND TBL_MPM_048.MPM_FIELD='048' WHERE TBL_MPM.MPM_TAB='A' AND TBL_MPM.MPM_FIELD='GRD' |
dat kan met flush();quote:Op dinsdag 29 januari 2008 15:25 schreef Janteh het volgende:
Is het mogelijk om php output te laten sturen terwijl hij nog aan het parsen is? Ik heb een script wat heel lang moet draaien en ik zou graag willen dat ik de voortgang al op mn scherm krijg terwijl hij nog bezig is, of moet ik dan aan de cli gaan denken oid?
Daar sta ik ook van te kijken eigenlijk.... ik maak meestal standaard een alias, eens een benchmarkje maken om te kijken hoeveel het scheeltquote:Op dinsdag 29 januari 2008 13:03 schreef Farenji het volgende:
Als je een tabel een of meerdere keren met zichzelf joint dan ontkom je natuurlijk niet aan aliassen... dat het performance kost wist ik ook niet eigenlijk.
Laat je de uitkomsten weten?quote:Op dinsdag 29 januari 2008 15:56 schreef Xcalibur het volgende:
[..]
Daar sta ik ook van te kijken eigenlijk.... ik maak meestal standaard een alias, eens een benchmarkje maken om te kijken hoeveel het scheelt
Please post the resultsquote:Op dinsdag 29 januari 2008 15:56 schreef Xcalibur het volgende:
[..]
Daar sta ik ook van te kijken eigenlijk.... ik maak meestal standaard een alias, eens een benchmarkje maken om te kijken hoeveel het scheelt
Ja heel leuk, maar niet echt praktijk gericht volgens mij :)quote:Op dinsdag 29 januari 2008 19:41 schreef Xcalibur het volgende:
Ik maak eigenlijk nooit benchmarks, dus ik hoop dat ik een beetje iets zinnigs geproduceerd heb :P
- Tabel met bijna 3940 records
- Query 1: SELECT * FROM clients
- Query 2: SELECT * FROM clients AS clients
- Loop waarin de query 100x uitgevoerd wordt
- PHP microtime die de tijd registreert voor en na de loop
Gemiddelde resultaat over 10 metingen zonder alias: 10,82319 seconden
Gemiddelde resultaat over 10 metingen met alias: 11,13025 seconden
Verschil over 1000 queriesl: 2,83% trager met alias
Dit is natuurlijk een zeer beperkt aantal queries wat ik gedraaid heb, maar ik denk wel dat het redelijk betrouwbaar is... Met alias is iets trager, maar ik denk dat je het op een per-query basis echt niet gaat merken, tenzij je echt veel bezoekers op je site hebt :)
1 |
21 velden per rijquote:Op dinsdag 29 januari 2008 19:46 schreef JortK het volgende:
Hoeveel velden bevat die tabel?
Geen hond. 1 query duurt alleen maar 0,0001 seconde, en dan wordt het verschil zo lastig te maken....quote:Op dinsdag 29 januari 2008 19:46 schreef JortK het volgende:
En wie draait in één script 1000 queries
5.2.5.quote:Op dinsdag 29 januari 2008 20:43 schreef Farenji het volgende:
Klinkt als een geheugenlek. Welke php versie gebruik je?
ongetwijfeld, maar dat zijn andere functies voor dit doeleinde ook niet.quote:Op dinsdag 29 januari 2008 21:26 schreef ralfie het volgende:
In principe wel, maar 300 paginas ophalen met curl is misschien niet iets waar het voor gemaakt is...
je kunt wat kloten met memory_get_usage(), misschien geeft het wat aanwijzingen over waar het fout gaat
Post je script eens?quote:Op dinsdag 29 januari 2008 21:42 schreef Janteh het volgende:
[..]
ongetwijfeld, maar dat zijn andere functies voor dit doeleinde ook niet.
Met memory_get_usage() zie ik heel mooi dat na elk rondje er ongeveer 10 kb bijkomt, wat precies de grootte van de pagina is.
1 |
In mn CSS file staatquote:<td width="100%" valign="top" class="body_outer">
<?php if (mosCountModules('banner')) { ?>
<div class="banner_inner"><?php mosLoadModules( 'banner', 1 ); ?></div>
<?php } ?>
<?php if ( $user1 > 0 ) {?>
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="content_table">
<?php
if ($colspan > 0) {
?>
<tr valign="top">
<?php
if ( $user1 > 0 ) {
?>
<td width="50%">
<div class="user1_inner">
<?php mosLoadModules ( 'user1' ); ?>
</div>
</td>
Hoe kan ik het aanpassen zodat het plaatje gecentreerd staat?quote:#banner_inner {
float: left;
padding: 0px;
height: 70px;
border: 1px solid #FCFCFC;
1 2 3 | sprintf('%01.2f', $variable) ?> |
number_format($getal, 2);quote:Op woensdag 30 januari 2008 11:47 schreef Geqxon het volgende:
Afaik kan dat alleen als string. Mijn tip: Schrijf het als echte integer naar de database, en voeg die 00 (str_pad?) er in de presentatie-laag pas aan toe.
Waar moet ik dat omheen zetten? om mijn hele lus?(Met tabel en alles erbij)quote:Op woensdag 30 januari 2008 13:05 schreef Dreammaster het volgende:
je gooit het met htmlspecialchars(); in de database? dan moet je bij het uitlezen htmlspecialchars_decode(); gebruiken
quote:Op woensdag 30 januari 2008 13:11 schreef Dreammaster het volgende:
in de variabele waar je html in staat... maar ik zie het nut niet echt om iets met htmlspecialchars in de database te zetten om het vervolgens weer de decoden...
1 2 3 4 5 6 7 8 9 | $_POST['name'] = htmlspecialchars($_POST['name']); $_POST['message'] = addslashes($_POST['message']); $_POST['message'] = htmlspecialchars($_POST['message']); if($_POST['name'] && $_POST['message']){ $query = "INSERT INTO reacties(naam, bericht, getID) VALUES ('$_POST[name]', '$_POST[message]', '$_GET[id]')"; mysql_query($query); } |
1 2 3 | $_POST['name'] = mysql_real_escape_string($_POST['name']); ?> |
1 2 3 4 5 6 7 8 9 | $name = $_POST['name']; $message = $_POST['message']; if(is_string($name) && is_string($message) { $query = "INSERT INTO reacties(naam, bericht, getID) VALUES ('" . mysql_real_escape_string($name) . "' , '" . mysql_real_escape_string($message) . "', '$_GET[id]')"; mysql_query($query); } ?> |
1 2 3 4 5 6 7 | $sql = sprintf( "INSERT INTO reacties (naam, bericht, getID) VALUES ('%s', '%s', %d)", mysql_real_escape_string($name), mysql_real_escape_string($message), $_GET['id'] ); mysql_query($sql); ?> |
Dankje, ik probeer het even.quote:
Afaik omsluiten de haakjes een collectie van karakters en tekens van wat er voor mag komen.quote:Op woensdag 30 januari 2008 14:59 schreef Litso het volgende:
[..]
Dankje, ik probeer het even.
Kan je ook uitleggen waarom? Klopt het dat je binnen de [haakjes] staat wat er wél mag? Wat doen dan de slashes en bv. die plus buiten de haakjes, ook in het origineel?
Iemand nog een idee voor dit "probleem"?quote:Op woensdag 30 januari 2008 09:12 schreef -J-D- het volgende:
Op http://85.92.147.131/~obcreunie/ ben ik bezig met het maken van een site in Joomla. Normaal gesproken is het in Joomla niet erg als je van PHP weinig afweet, aangezien er een mooi CMS omheen zit, maar ik heb het nu even nodig.
Op die site je het logo van "Over Betuwe College" in beeld staan. Deze probeer ik te centreren.
Volgens mij wordt deze banner geladen vanuit dit stukje:
[..]
In mn CSS file staat
[..]
Hoe kan ik het aanpassen zodat het plaatje gecentreerd staat?
Niet echt een probleem die hier thuis hoort, aangezien het gaat over css en html. Iig kan je wat proberen met die float:left; maar dat is moeilijk zeggen aangezien niet de gehele code duidelijk is.quote:Op woensdag 30 januari 2008 18:08 schreef -J-D- het volgende:
Iemand nog een idee voor dit "probleem"?
Leer gewoon aan om altijd placeholders te gebruiken voor je sql query argumenten, dat heeft php afgekeken van perl maar met een goede reden. Het is veel beter (en efficienter, als je dezelfde query vaker gebruikt) dan dat ranzige gehack met dat ge-escape enzo want sql injection wordt er automatisch onmogelijk door gemaakt zonder dat je daar zelf nog over in hoeft te zitten.quote:Op woensdag 30 januari 2008 14:17 schreef Geqxon het volgende:
Escapen in de query is persoonlije voorkeur, zelf vind ik het mooier om in een sprintf constructie te werken.
Of gebruik PDO.quote:Op donderdag 31 januari 2008 09:08 schreef Farenji het volgende:
[..]
Leer gewoon aan om altijd placeholders te gebruiken voor je sql query argumenten, [...]
http://www.marksiedle.com/show_article.php?cat=3&id=11
Hmm, ik begrijp niet wat je bedoelt?quote:Op donderdag 31 januari 2008 13:18 schreef Geqxon het volgende:
Binair het verschil tussen oud en nieuw bekijken, en dat in de database wegschrijven? Een tabel genaamd "History" oid?
Dit is interessantquote:Op donderdag 31 januari 2008 09:08 schreef Farenji het volgende:
[..]
Leer gewoon aan om altijd placeholders te gebruiken voor je sql query argumenten, dat heeft php afgekeken van perl maar met een goede reden. Het is veel beter (en efficienter, als je dezelfde query vaker gebruikt) dan dat ranzige gehack met dat ge-escape enzo want sql injection wordt er automatisch onmogelijk door gemaakt zonder dat je daar zelf nog over in hoeft te zitten.
http://www.marksiedle.com/show_article.php?cat=3&id=11
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 | ; ; Generated on 2008-01-31 at 15:22:08 ; ; Size: 620 bytes, Creation date: 2006-03-15 14:34:33, Modification date: 2006-03-15 14:34:33 e59d318ae34e9190f51e10544d17ab9a *POTWDVD019 - Rock Aid America - The Making of Smoke On The Water.md5 ; Size: 2021 bytes, Creation date: 2006-03-15 14:34:34, Modification date: 2006-03-15 14:34:34 a9417892c908eef3c573220b6a24c3bf *POTWDVD019.txt ; Size: 14309 bytes, Creation date: 2006-03-15 14:34:08, Modification date: 2006-03-15 14:34:09 65eccd74397d7a6fa403d871f30870a1 *VIDEO_TS\VIDEO_TS.BUP ; Size: 26597 bytes, Creation date: 2006-03-15 14:34:10, Modification date: 2006-03-15 14:34:11 65eccd74397d7a6fa403d871f30870a1 *VIDEO_TS\VIDEO_TS.IFO ; Size: 73701 bytes, Creation date: 2006-03-15 14:34:12, Modification date: 2006-03-15 14:34:12 196d82e1f7afacc6ea4f4a1caa0dbc2f *VIDEO_TS\VIDEO_TS.VOB ; Size: 114661 bytes, Creation date: 2006-03-15 14:34:13, Modification date: 2006-03-15 14:34:19 f7e5eb930e876929c42064702dc9a111 *VIDEO_TS\VTS_01_0.BUP ; Size: 155621 bytes, Creation date: 2006-03-15 14:34:20, Modification date: 2006-03-15 14:34:23 f7e5eb930e876929c42064702dc9a111 *VIDEO_TS\VTS_01_0.IFO ; Size: 10924005 bytes, Creation date: 2006-03-15 14:34:34, Modification date: 2006-03-15 15:24:07 5defea3427c04218c81dff47ee69f1a0 *VIDEO_TS\VTS_01_0.VOB ; Size: 1083848677 bytes, Creation date: 2006-03-15 15:24:08, Modification date: 2006-03-28 03:14:40 72b9c827ec29e43ce356b8733e5e2957 *VIDEO_TS\VTS_01_1.VOB ; Size: 2156382181 bytes, Creation date: 2006-04-02 13:17:52, Modification date: 2006-04-18 10:15:47 d1db84986d126e5838f167bd52e3be56 *VIDEO_TS\VTS_01_2.VOB ; Size: 3229100005 bytes, Creation date: 2006-04-03 14:09:27, Modification date: 2006-04-16 17:39:54 48e67b2589ddc5e60ef2e156d4e23b0b *VIDEO_TS\VTS_01_3.VOB ; Size: 3329441765 bytes, Creation date: 2006-04-08 06:02:52, Modification date: 2006-04-08 08:19:34 c308f264d32ff5b645e9b9485e7b34c1 *VIDEO_TS\VTS_01_4.VOB |
1 2 3 4 5 6 7 8 9 10 11 | 65eccd74397d7a6fa403d871f30870a1 *VIDEO_TS\VIDEO_TS.BUP 65eccd74397d7a6fa403d871f30870a1 *VIDEO_TS\VIDEO_TS.IFO 196d82e1f7afacc6ea4f4a1caa0dbc2f *VIDEO_TS\VIDEO_TS.VOB f7e5eb930e876929c42064702dc9a111 *VIDEO_TS\VTS_01_0.BUP f7e5eb930e876929c42064702dc9a111 *VIDEO_TS\VTS_01_0.IFO 5defea3427c04218c81dff47ee69f1a0 *VIDEO_TS\VTS_01_0.VOB 72b9c827ec29e43ce356b8733e5e2957 *VIDEO_TS\VTS_01_1.VOB d1db84986d126e5838f167bd52e3be56 *VIDEO_TS\VTS_01_2.VOB 48e67b2589ddc5e60ef2e156d4e23b0b *VIDEO_TS\VTS_01_3.VOB c308f264d32ff5b645e9b9485e7b34c1 *VIDEO_TS\VTS_01_4.VOB |
1 2 3 | filename (uit /md5/.txt) hash (uit /md5/.txt) |
1 |
werkt dat ook met upload?quote:Op donderdag 31 januari 2008 16:44 schreef Farenji het volgende:
- de tekst per regel inlezen
helaas niet echtquote:- als de regel met een ; begint: skippen
- met een regexp de md5 hash en de filename eruitfilteren:
Ongetest:
/^([a-f0-9]{32})/ voor de md5 (het gaat om het gedeelte tussen haakjes)
/\*(.*)$/ voor de filename
De md5 hashcode is (per definitie!) uniek voor een bestand dus die kun je als key gebruiken in je database.
quote:In 2007 is het een groep wetenschappers gelukt om twaalf verschillende PDF-bestanden te maken met dezelfde hashcode. De auteurs hebben daarmee aangetoond dat MD5 beter niet meer gebruikt kan worden als een verificatiemethode.
LIMIT 1?quote:Op donderdag 31 januari 2008 16:42 schreef Timens het volgende:
wederom een klein vraagje:
Weten jullie hoe ik 1 enkele array kan verwijderen uit een tabel?
[ code verwijderd ]
Die query, maar ik wil dus dat de andere arrays met zelfde ID blijven staan, behalve diegene die ik delete..
Ik wil dus niet dat heel homeID 1 verdwijnt, alleen een stukje daarvan...
edit:
$id is een $_GET
het is een DELETE niet een SELECT...?quote:
Als je echt zekerheid wil hebben dat het uniek is moet je een SHA1 hash gebruiken.quote:Op donderdag 31 januari 2008 16:57 schreef qu63 het volgende:
Maar in mijn geval zijn de bestanden uniek genoeg
Opgelost via Fabrik.quote:Op woensdag 30 januari 2008 18:57 schreef -J-D- het volgende:
Ok, dat ga ik proberen.
Andere vraag waar google me nog heeft kunnen helpen:
Hoe benader ik vanuit Joomla een tabel uit de mysql-database? Ik weet de code, dat is het probleem niet. Maar waar in Joomla laat ik die opdracht achter zodat die tabel op een pagina verschijnt?
de kans dat een VTS_01_0.VOB van 0,99 GB van een andere film dezelfde hash heeft lijkt mij vrij kleinquote:Op donderdag 31 januari 2008 17:24 schreef Farenji het volgende:
[..]
Als je echt zekerheid wil hebben dat het uniek is moet je een SHA1 hash gebruiken.
LIMIT 1 werkt ook bij DELETE en lijkt mij ook de juiste oplossing voor jouw vraagquote:Op donderdag 31 januari 2008 17:03 schreef Timens het volgende:
[..]
het is een DELETE niet een SELECT...?
Is er iets anders unieks dat bepaalt welke (van de tig) dingen met homeID=1 weg moet en welke moet blijven staan?quote:Op donderdag 31 januari 2008 16:42 schreef Timens het volgende:
wederom een klein vraagje:
Weten jullie hoe ik 1 enkele array kan verwijderen uit een tabel?
[ code verwijderd ]
Die query, maar ik wil dus dat de andere arrays met zelfde ID blijven staan, behalve diegene die ik delete..
Ik wil dus niet dat heel homeID 1 verdwijnt, alleen een stukje daarvan...
Met LIMIT 1 weet je niet welk item je verwijdert. Als je 1 item wilt verwijderen is het beter om een unique key (of primary key) te gebruiken om de rij te identificeren. Dan heb je echt iets unieks.quote:Op donderdag 31 januari 2008 18:40 schreef Dreammaster het volgende:
[..]
LIMIT 1 werkt ook bij DELETE en lijkt mij ook de juiste oplossing voor jouw vraag
Ook daar zijn collisions gevonden. En met hashes ontkom je niet aan collisions of dubbelen. MD5 is 128 bit, SHA-1 is 160 bit. Er zijn veel meer dan 2160 bestanden en mogelijkheden. Anders kunnen we pas echt ruimte besparen. Complete DVD's (4GB) in 160 bits, leuke compressiequote:Op donderdag 31 januari 2008 17:24 schreef Farenji het volgende:
[..]
Als je echt zekerheid wil hebben dat het uniek is moet je een SHA1 hash gebruiken.
jammer dat je em niet kunt omdraaien omdat je een flink deel van de info weggooit.... maar anders was het een mooie compressiemethode geweestquote:Op donderdag 31 januari 2008 19:15 schreef Light het volgende:
Anders kunnen we pas echt ruimte besparen. Complete DVD's (4GB) in 160 bits, leuke compressie
Weet je nog een andere voor wat grotere scriptsquote:Op vrijdag 1 februari 2008 01:25 schreef Geqxon het volgende:
Notepad 2? Does the trick op kleine scriptjes.
Hmmm....quote:Op vrijdag 1 februari 2008 01:50 schreef Geqxon het volgende:
Deze Notepad2 is het overigens, zo te zien zijn er meerdere.
Voor grotere projecten? Ondanks dat ik er persoonlijk 0,0 ervaring mee heb, een klasgenoot van mij gebruikt deze: http://www.mpsoftware.dk/
gPHPEdit. Werkt geweldig! Supersnelle check van je syntax en een highlighting voor php/javascript/html en nog vele anderen.quote:Op vrijdag 1 februari 2008 00:57 schreef Qunix het volgende:
Weet iemand hier een gratis fatsoenlijk PHP editor programma met highlight code?
Liefst met de volledige PHP library van PHP 5. (hoeft niet maar liever wel zoals dreamweaver van adobe ook heeft.)
Hij vraagt er toch om? Als in, letterlijk?quote:Op vrijdag 1 februari 2008 10:18 schreef SuperRembo het volgende:
He ja, laten we het hele topic weer eens volspammen met alle mogelijke texteditors
Die gebruik ik ook, die auto-completionquote:Op vrijdag 1 februari 2008 01:50 schreef Geqxon het volgende:
Deze Notepad2 is het overigens, zo te zien zijn er meerdere.
Voor grotere projecten? Ondanks dat ik er persoonlijk 0,0 ervaring mee heb, een klasgenoot van mij gebruikt deze: http://www.mpsoftware.dk/
Het is al zo vaak voorbij gekomen. Vaak wordt het niet veel meer dan een enorme opsomming van editors waar je niet veel wijzer van wordt. Er is ook een eigen topic voor: Welke editor voor PHP?quote:Op vrijdag 1 februari 2008 10:45 schreef Litso het volgende:
[..]
Hij vraagt er toch om? Als in, letterlijk?
Misschien is het handig om dat topic ook even in de OP te zettenquote:Op vrijdag 1 februari 2008 12:56 schreef SuperRembo het volgende:
[..]
Het is al zo vaak voorbij gekomen. Vaak wordt het niet veel meer dan een enorme opsomming van editors waar je niet veel wijzer van wordt. Er is ook een eigen topic voor: Welke editor voor PHP?
Gebruikersnaam, pass en db zijn goed ingevoerd.quote:<?php
mysql_connect("localhost", "gebruikersnaam", "pass");
mysql_select_db("db");
$res = mysql_query("SELECT * FROM jos_aanmeldingen");
mysql_free_result($res);
?>
Ik dacht hiermee een overzicht te maken van die tabel. Hij pakt alleen de laatste kolom niet.quote:$res = mysql_query("SELECT * FROM jos_aanmeldingen");
while ($row = mysql_fetch_assoc($res)) {
echo $row["Naam"];
echo $row["Adres"];
echo $row["Woonplaats"];
echo $row["Beginjaar"];
echo $row["Laatsejaar"];
}
mysql_free_result($res);
1 2 3 4 5 | function checkLogin($user = '', $pass = '', $group = 4, $goodRedirect = '', $badRedirect = '') { [code]...[/code] } ?> |
1 2 3 | if (!$classname->checkLogin(2) ){ header("Location: login.php"); die(); } ?> |
Ik neem aan dat je een group checked? dan zul je de eerste twee parameters moeten geven om php te laten merken dat die 2 bij de derde parameter hoortquote:Op zaterdag 2 februari 2008 22:07 schreef Tarabass het volgende:
Ik ben een oop-cms aan het bouwen en had wat voorbeeldjes gedownload omdat ik niet zo thuis ben in oop. Nou kwam ik het volgende tegen waar ik heel vreemd tegen aan kijk.
Ik heb een class die checkt of een user is ingelogd en wat zijn status is. In die class zit een functie die er zo uit ziet:
[ code verwijderd ]
}
?>
[/php]
Nu is één van de pagina's beveiligt en enkel te benaderen door een admin. Die beveiliging ziet er zo uit:
[ code verwijderd ]
Zoals je ziet komen de parameters bij het aanroepen van de functie in de class niet overeen, toch werkt het. Ik begrijp niet wat hier gebeurt en hoe het werkt. Kan iemand mij uitleggen wat hier gebeurt?
1 2 3 | if (!$classname->checkLogin('', '', 2) ){ header("Location: login.php"); die(); } ?> |
1 2 3 | if (!$classname->checkLogin(1) ){ header("Location: login.php"); die(); } ?> |
Als er 1 parameter wordt meegegeven dan wordt dit als eerste parameter doorgegeven. Zie ook bij Example 5.quote:Op zondag 3 februari 2008 11:21 schreef Tarabass het volgende:
@Geqxon
Ik neem aan dat die 2 in de aanroep dan voor de variable group is? Want het vreemde is dat een admin group-nummer 1 heeft, maar het is dus om alleen admins op de pagina te laten. Is de meegegeven parameter dan een maximum? Want geef ik dit mee dan werkt het niet:
[ code verwijderd ]
Editors (group 2) kunnen nu nog steeds op de pagina komen
@ralfie
Tja, dat was juist mijn vraag. Logisch gedacht check ik inderdaad de group en dan hoeven de eerste twee parameters niet meegegeven te worden, want het werkt zoals ik het er neergezet heb. Maar na wat testen begin ik te twijfelen of het wel de group is die ik check.
Ik denk het niet ....quote:Op zondag 3 februari 2008 16:11 schreef Geqxon het volgende:
Kan PHP geen functies met dezelfde namen hebben? Maar dan met een andere parameter-count of andere parameters? Dus dat je twee maal checklogin hebt, maar dan met een andere parameter-count of type parameters?
Je kunt geen echte overloads maken in PHP, maar met default waarden voor parameters of anders met func_get_args () / func_num_args() kan je wel bereiken wat jij wil.quote:Op zondag 3 februari 2008 16:11 schreef Geqxon het volgende:
Kan PHP geen functies met dezelfde namen hebben?
1 2 3 4 5 6 | </li> <li class="cat-item cat-item-4 current-cat"><a href="http://localhost:8080/wordpress/?cat=4" title="View all posts filed under Filmpjes">Filmpjes</a> </li> <li class="cat-item cat-item-5 current-cat"><a href="http://localhost:8080/wordpress/?cat=4" title="View all posts filed under Opmerkelijk">Opmerkelijk</a> </li> |
1 |
1 |
Kan als enum, met 0 een 1.quote:Op maandag 4 februari 2008 14:20 schreef super-muffin het volgende:
In deze richting:
[ code verwijderd ]
Vraagje: Hoe slaan jullie booleans op in een MySQL database? gewoon als 0 als false en 1 als true?
een int en dan gewoon 0 en 1quote:Op maandag 4 februari 2008 14:20 schreef super-muffin het volgende:
In deze richting:
[ code verwijderd ]
Vraagje: Hoe slaan jullie booleans op in een MySQL database? gewoon als 0 als false en 1 als true?
Probeer het nu via JomBackup.quote:Op maandag 4 februari 2008 15:51 schreef -J-D- het volgende:
Ben bezig met een cronjob om een testdatabase te backuppen naar een ftp server en een gmail-adres.
Dit lukt niet echt.
Ik hoop dat iemand zin heeft om te helpen via msn ( msn apenstaart maarten.es )
Dan kan die persoon namens mij misschien inloggen en kijken wat ik fout doen.
1 2 3 4 5 6 7 8 | SELECT c.comp_name FROM whufc_wedstrijden w, whufc_comps c, whufc_teams t WHERE w.wedstrijd_cid = c.comp_id ?> |
1 2 3 4 5 | FROM whufc_comps c LEFT JOIN whufc_wedstrijden AS w ON c.ID = w.wedstrijd_cid LEFT JOIN whufc_teams AS u ON w.HIERHETVELDVOORUITID = u.ID LEFT JOIN whufc_teams AS t ON w.HIERHETVELDVOORTHUISID = t.ID |
Thnx, ga me gelijk weer is inlezen in die joinsquote:Op maandag 4 februari 2008 23:47 schreef Geqxon het volgende:
Ik gok zoiets:
[ code verwijderd ]
Vul de hoofdletters zelf maar in.
Iemand enig idee waar dit aan kan liggen?\quote:SELECT ID, QTY, ARTIST, TITLES, MEDIA, PRICE, CTY FROM producten WHERE ARTIST LIKE 'GOODWIN & OTHERS, RON' OR TITLES LIKE 'GOODWIN & OTHERS, RON' OR LABEL LIKE 'GOODWIN & OTHERS, RON' AND QTY > 0 ORDER BY TITLES ASC
1 2 3 | mysql_query("SELECT ID, ARTIST, TITLES, MEDIA, PRICE, CTY FROM producten WHERE (ARTIST LIKE '%$input%') OR (TITLES LIKE '%$input%') OR (LABEL LIKE '%$input%') AND QTY > 0 ORDER BY TITLES ASC") ?> |
1 2 3 4 5 | FROM producten WHERE ((ARTIST LIKE '%$input%') OR (TITLES LIKE '%$input%') OR (LABEL LIKE '%$input%') ) AND QTY > 0 ORDER BY TITLES ASC |
Het is niet zozeer dat het om alle ORs moet. In jouw geval is het "Het moet voldoen aan (A OF B OF C) EN D". En dan moet je de haakjes plaatsen zoals SuperRembo dat hierboven toont.quote:Op dinsdag 5 februari 2008 13:43 schreef Doc.Brown het volgende:
Ah, in PHP staan wel haakjes om de individuele OR's, maar niet om álle OR's. Zal het eens proberen
Dat werkt, misschien niet de meest nette oplossing dan? Maar het werktquote:WHERE (ARTIST LIKE '%$input%' AND QTY > 0) or (TITLES LIKE '%$input%' AND QTY > 0) or (LABEL LIKE '%$input%' AND QTY > 0)
Hou er wel rekening mee dat query's met like en wildcards aan het begin en eind een van de traagste query's zijn; mysql kan er geen gebruik maken van indexes en dat ga je echt merken als je meer dan een paar records in je tabel hebt zitten. Dan wordt het moddertraag.quote:Op dinsdag 5 februari 2008 13:57 schreef Doc.Brown het volgende:
Ahzo! Het is inmiddels opgelost, een maat van me had iets anders geprobeerd:
[..]
Dat werkt, misschien niet de meest nette oplossing dan? Maar het werkt
In ieder geval bedankt
1 2 3 | file_put_contents($this->errLog, $this->timestamp . " " . implode(',',$this->errors) . "\r\n", FILE_APPEND); ?> |
http://nl3.php.net/manual/en/function.file-put-contents.phpquote:joined with the binary OR (|) operator.
1 2 3 | FILE_APPEND | LOCK_EX ?> |
Je hebt alle benodigde dll's op de aangegeven plaats staan?quote:Op woensdag 6 februari 2008 20:03 schreef Chandler het volgende:
Vraagje, als ik op mijn lokale machine openssl wil toevoegen aan php.ini krijg ik de volgende error
[ afbeelding ]
wat kan ik hier aan doen? tevens werkt openssl dan niet
1 2 3 | print $hexcode . ""; ?> |
1 2 3 | var $hexstring = (string) $hexcode; ?> |
waarom zou je niet char() doen in je database?quote:Op donderdag 7 februari 2008 00:13 schreef wonderer het volgende:
Oooh. Heh. Okee, ga ik proberen, dank je wel.
Edit: weird. ik dacht, laat ik settype() gebruiken. Werkte niet. Toen het trucje met .""; erachter. WErkte ook niet. Even controleren wat voor soort string het is met gettype(): string!
En nu weet ik het niet meerHet is dus een string, waarom slaat hij het niet als zodanig op?
Ze staan op dezelfde plek als ook GD en de rest van de DLL's bestaan gewoon, maar ik vraag me af wat die %1 betekendquote:Op woensdag 6 februari 2008 23:06 schreef Tarabass het volgende:
Je hebt alle benodigde dll's op de aangegeven plaats staan?
http://www.phpbuilder.com/board/showthread.php?t=10337286
http://www.php.net/manual/en/ref.openssl.php
Yeah weet ik maar heeft niet men voorkeurquote:Op donderdag 7 februari 2008 10:31 schreef Xcalibur het volgende:
Ik denk niet dat je het met SQL zelf kunt, maar je kunt natuurlijk wel de records ophalen met die tekst, str_replace eroverheen (in PHP) en de records weer updaten
Tof dankje ff proberen zoquote:Op donderdag 7 februari 2008 10:41 schreef Chandler het volgende:
replace string in all records from a table :
update mytable set myfield = replace (myfield, "one", "two");
display a modified record set
SELECT REPLACE(myfield, 'one', 'two') from mytable;
Hehe moet eerlijk zeggen dat ik de docs niet echt lekker vond smorgens voordat ik postequote:Op donderdag 7 februari 2008 14:25 schreef Chandler het volgende:
Haha WyriHaximus, had niet verwacht dat jij deze niet zou kennen
Je moet ook naar de replace functie kijken, niet naar het replace statementquote:Op donderdag 7 februari 2008 14:33 schreef WyriHaximus het volgende:
[..]
Hehe moet eerlijk zeggen dat ik de docs niet echt lekker vond smorgens voordat ik postehttp://dev.mysql.com/doc/refman/4.1/en/replace.html
Ayequote:Op donderdag 7 februari 2008 15:32 schreef SuperRembo het volgende:
[..]
Je moet ook naar de replace functie kijken, niet naar het replace statement
1 2 3 4 5 6 | <option style="color:#ffffff;" value="ffffff">wit</option> <option style="color:#000080;" value="000080">marine blauw</option> <option style="color:#000099;" value="000099">000099</option> etc |
Dit is hem uiteindelijk geworden:quote:Op maandag 4 februari 2008 23:47 schreef Geqxon het volgende:
Ik gok zoiets:
[ code verwijderd ]
Vul de hoofdletters zelf maar in. :+
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | w.wedstrijd_id AS wid, w.wedstrijd_datum AS datum, t.team_naam AS thuis, u.team_naam AS uit, w.wedstrijd_score AS score, c.comp_name AS compnaam FROM whufc_wedstrijden w INNER JOIN whufc_teams AS t ON w.wedstrijd_thuis = t.team_id INNER JOIN whufc_teams AS u ON w.wedstrijd_uit = u.team_id INNER JOIN whufc_comps AS c ON w.wedstrijd_cid = c.comp_id WHERE w.wedstrijd_sid = $actsid ORDER BY w.wedstrijd_datum |
Top dat het gelukt is!quote:Op donderdag 7 februari 2008 21:01 schreef MrDoegewoon het volgende:
[..]
Dit is hem uiteindelijk geworden:
[ code verwijderd ]
Gaat het fout bij het opslaan of bij het weer uitlezen? Als je eerst opslaat en dan met phpmyadmin kijkt wat er dan staat dan heb je vast meer infoquote:Op donderdag 7 februari 2008 20:42 schreef wonderer het volgende:
Overigens doe ik echo gettype($kleur) en echo $kleur bij het bericht dat het is opgeslagen, en daar klopt de waarde en is het een string. Er gaat dus iets mis bij het opslaan
Opslaan. Hij slaat het als numerieke waarde (of zo) op, namelijk (bijv) 7e+23. En dat is dan 688E25.quote:Op donderdag 7 februari 2008 21:39 schreef Light het volgende:
[..]
Gaat het fout bij het opslaan of bij het weer uitlezen? Als je eerst opslaat en dan met phpmyadmin kijkt wat er dan staat dan heb je vast meer info
Toevoeging: heb je ook de hele query, zoals je die in php opbouwt? Ik denk dat het daar mis gaat namelijk.
Hoe bouw je die query op in php? Als in, wat geef je mysql_query mee? Ik denk dat het daar mis gaat, en dan wel met de quotjes.quote:Op donderdag 7 februari 2008 21:50 schreef wonderer het volgende:
[..]
Opslaan. Hij slaat het als numerieke waarde (of zo) op, namelijk (bijv) 7e+23. En dat is dan 688E25.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $d=connectDB(); $result=runquery("UPDATE chat_handles SET chatname=".quote_smart($chatname,$d).", avatar=".quote_smart($avatar,$d).", kleur=".quote_smart($kleur,$d).", accesskey=".quote_smart($accesskey,$d).", description=".quote_smart($description,$d)." WHERE saveas=".quote_smart($saveas,$d)." AND username=".quote_smart($user,$d),$d); function quote_smart($value,$dblink) { if (get_magic_quotes_gpc()) { $value = stripslashes($value); } if (!is_numeric($value)) { $value = "'" . mysql_real_escape_string($value,$dblink) . "'"; } return $value; } ?> |
1 2 3 4 5 | if (!is_numeric($value) || $force) { $value = "'" . mysql_real_escape_string($value,$dblink) . "'"; } ?> |
Alles wat in een text/(var)char veld in een database moet komen, moet worden voorzien van quotes. En alles wat in een getalveld komt, mag juist geen quotes hebben. Niet dat MySQL zo strikt is, maar 't is beter om het goed aan te wennen.quote:Op donderdag 7 februari 2008 23:22 schreef Arjan321 het volgende:
de is_numeric op (688E25) geeft (waarschijnlijk) true terug, waardoor je dus geen quotes in je query krijgt, en je dus een integer (688E25) in je string kolom`kleur` probeert op te slaan.
Om dit op te lossen kan je bijvoorbeeld een derde optionele parameter maken die forced om toch quotes om je value heen te geven..
[ code verwijderd ]
sowieso kan je op jouw huidige manier (een hoop) onnodige conversies in je database server krijgen, omdat dingen als string worden opgeslagen maar als integer kunnen binnenkomen..
1 2 3 4 5 6 7 8 9 10 11 12 13 | $result=runquery("UPDATE chat_handles SET chatname='".quote_smart($chatname,$d)."', avatar='".quote_smart($avatar,$d)."', kleur='".quote_smart($kleur,$d)."', accesskey='".quote_smart($accesskey,$d)."', description='".quote_smart($description,$d)."' WHERE saveas='".quote_smart($saveas,$d)."' AND username='".quote_smart($user,$d)."'",$d); function quote_smart($value,$dblink) { if (get_magic_quotes_gpc()) { $value = stripslashes($value); } //Het is niet echt erg om een getal te string_escapen, het getal verandert er iig niet door. return mysql_real_escape_string($value,$dblink); } ?> |
eerste regexp doet niks, en de 2e doet het half :{quote:Op donderdag 31 januari 2008 16:44 schreef Farenji het volgende:
- de tekst per regel inlezen
- als de regel met een ; begint: skippen
- met een regexp de md5 hash en de filename eruitfilteren:
Ongetest:
/^([a-f0-9]{32})/ voor de md5 (het gaat om het gedeelte tussen haakjes)
/\*(.*)$/ voor de filename
De md5 hashcode is (per definitie!) uniek voor een bestand dus die kun je als key gebruiken in je database.
1 2 3 4 | preg_match_all("/\*(.*)$/ ",$_POST["hash"],$hash); print_r($hash); ?> |
1 |
1 |
Weet je zeker dat het bestand netjes per regel wordt ingelezen? Het lijkt er op dat het een bestand van 1 regel is, of dat het als zodanig wordt ingelezen.quote:Op vrijdag 8 februari 2008 00:04 schreef qu63 het volgende:
inhoud van $_PST["hash"] is
[ code verwijderd ]
in de textarea staat het over meerdere regels verspreid, maar in de $_POST komt het als 1 regel er uit geloof ik.. Ik ga wel weer wat aanklooienquote:Op vrijdag 8 februari 2008 09:19 schreef Light het volgende:
[..]
Weet je zeker dat het bestand netjes per regel wordt ingelezen? Het lijkt er op dat het een bestand van 1 regel is, of dat het als zodanig wordt ingelezen.
ik heb welquote:Op vrijdag 8 februari 2008 12:01 schreef Xcalibur het volgende:
check eens op \r\n, \r en \n als regeleinden.... :)
1 2 3 4 | preg_match_all("/\*(.*)$/ ",str_replace("\n","<br>",$_POST["hash"]),$hash); print_r($hash); ?> |
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 | ; Size: 2021 bytes, Creation date: 2006-03-15 14:34:34, Modification date: 2006-03-15 14:34:34 a9417892c908eef3c573220b6a24c3bf *POTWDVD019.txt ; Size: 14309 bytes, Creation date: 2006-03-15 14:34:08, Modification date: 2006-03-15 14:34:09 65eccd74397d7a6fa403d871f30870a1 *VIDEO_TS\VIDEO_TS.BUP ; Size: 26597 bytes, Creation date: 2006-03-15 14:34:10, Modification date: 2006-03-15 14:34:11 65eccd74397d7a6fa403d871f30870a1 *VIDEO_TS\VIDEO_TS.IFO ; Size: 73701 bytes, Creation date: 2006-03-15 14:34:12, Modification date: 2006-03-15 14:34:12 196d82e1f7afacc6ea4f4a1caa0dbc2f *VIDEO_TS\VIDEO_TS.VOB ; Size: 114661 bytes, Creation date: 2006-03-15 14:34:13, Modification date: 2006-03-15 14:34:19 f7e5eb930e876929c42064702dc9a111 *VIDEO_TS\VTS_01_0.BUP ; Size: 155621 bytes, Creation date: 2006-03-15 14:34:20, Modification date: 2006-03-15 14:34:23 f7e5eb930e876929c42064702dc9a111 *VIDEO_TS\VTS_01_0.IFO ; Size: 10924005 bytes, Creation date: 2006-03-15 14:34:34, Modification date: 2006-03-15 15:24:07 5defea3427c04218c81dff47ee69f1a0 *VIDEO_TS\VTS_01_0.VOB ; Size: 1083848677 bytes, Creation date: 2006-03-15 15:24:08, Modification date: 2006-03-28 03:14:40 72b9c827ec29e43ce356b8733e5e2957 *VIDEO_TS\VTS_01_1.VOB ; Size: 2156382181 bytes, Creation date: 2006-04-02 13:17:52, Modification date: 2006-04-18 10:15:47 d1db84986d126e5838f167bd52e3be56 *VIDEO_TS\VTS_01_2.VOB ; Size: 3229100005 bytes, Creation date: 2006-04-03 14:09:27, Modification date: 2006-04-16 17:39:54 48e67b2589ddc5e60ef2e156d4e23b0b *VIDEO_TS\VTS_01_3.VOB ; Size: 3329441765 bytes, Creation date: 2006-04-08 06:02:52, Modification date: 2006-04-08 08:19:34 c308f264d32ff5b645e9b9485e7b34c1 *VIDEO_TS\VTS_01_4.VOB ) [1] => Array ( [0] => POTWDVD019 - Rock Aid America - The Making of Smoke On The Water.md5 ; Size: 2021 bytes, Creation date: 2006-03-15 14:34:34, Modification date: 2006-03-15 14:34:34 a9417892c908eef3c573220b6a24c3bf *POTWDVD019.txt ; Size: 14309 bytes, Creation date: 2006-03-15 14:34:08, Modification date: 2006-03-15 14:34:09 65eccd74397d7a6fa403d871f30870a1 *VIDEO_TS\VIDEO_TS.BUP ; Size: 26597 bytes, Creation date: 2006-03-15 14:34:10, Modification date: 2006-03-15 14:34:11 65eccd74397d7a6fa403d871f30870a1 *VIDEO_TS\VIDEO_TS.IFO ; Size: 73701 bytes, Creation date: 2006-03-15 14:34:12, Modification date: 2006-03-15 14:34:12 196d82e1f7afacc6ea4f4a1caa0dbc2f *VIDEO_TS\VIDEO_TS.VOB ; Size: 114661 bytes, Creation date: 2006-03-15 14:34:13, Modification date: 2006-03-15 14:34:19 f7e5eb930e876929c42064702dc9a111 *VIDEO_TS\VTS_01_0.BUP ; Size: 155621 bytes, Creation date: 2006-03-15 14:34:20, Modification date: 2006-03-15 14:34:23 f7e5eb930e876929c42064702dc9a111 *VIDEO_TS\VTS_01_0.IFO ; Size: 10924005 bytes, Creation date: 2006-03-15 14:34:34, Modification date: 2006-03-15 15:24:07 5defea3427c04218c81dff47ee69f1a0 *VIDEO_TS\VTS_01_0.VOB ; Size: 1083848677 bytes, Creation date: 2006-03-15 15:24:08, Modification date: 2006-03-28 03:14:40 72b9c827ec29e43ce356b8733e5e2957 *VIDEO_TS\VTS_01_1.VOB ; Size: 2156382181 bytes, Creation date: 2006-04-02 13:17:52, Modification date: 2006-04-18 10:15:47 d1db84986d126e5838f167bd52e3be56 *VIDEO_TS\VTS_01_2.VOB ; Size: 3229100005 bytes, Creation date: 2006-04-03 14:09:27, Modification date: 2006-04-16 17:39:54 48e67b2589ddc5e60ef2e156d4e23b0b *VIDEO_TS\VTS_01_3.VOB ; Size: 3329441765 bytes, Creation date: 2006-04-08 06:02:52, Modification date: 2006-04-08 08:19:34 c308f264d32ff5b645e9b9485e7b34c1 *VIDEO_TS\VTS_01_4.VOB ) ) |
1 2 3 4 5 6 7 8 | $regular_expression = '#; Size: ([0-9]{1,20}) bytes, '; $regular_expression .= 'Creation date: ([0-9]{4}-[0-9]{2}-[0-9]{2}) ([0-9]{2}:[0-9]{2}:[0-9]{2}), '; $regular_expression .= 'Modification date: ([0-9]{4}-[0-9]{2}-[0-9]{2}) ([0-9]{2}:[0-9]{2}:[0-9]{2})'; $regular_expression .= '\r\n([a-z0-9]{32})'; $regular_expression .= ' \*(.*)\r\n#Us'; preg_match_all($regular_expression, $data, $matches, PREG_SET_ORDER); ?> |
ik heb er nu een textarea van gemaakt ipv een file-upload.quote:Op vrijdag 8 februari 2008 13:16 schreef Xcalibur het volgende:
maar je leest het bestand niet per regel in dan?
Dat lijkt me wel een goed begin namelijk.....
En dan dus per regel de regex eroverheen, dan moet het een stuk overzichtelijker worden
thanks, ik ga daar wel ff mee spelenquote:Op vrijdag 8 februari 2008 13:36 schreef Geqxon het volgende:
qu63, met deze regex krijg ik de uitgebreide variant prima geregext:
[ code verwijderd ]
1 2 3 4 5 | { echo $value="<a href='pizza.php?id=" . $pizzaID . "'>$value</a>"; } |
1 2 3 4 5 6 7 8 9 10 11 | echo "<a href='pizza.php?id=" . $pizzaID . "'>"; foreach ($ingredienten as $key => $value) { echo $value; } echo "</a>"; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //bij dit voorbeeld ga ik er vanuit dat je een array hebt die //oplopende getallen heeft als keys $ingredientenlink = ''; $aantal_ingredienten = count($ingredienten); for($i = 0; $i< $aantal_ingredienten; $i++) { //het stukje na de . kijkt of het het laatste ingredient uit de array is $ingredientenlink .= $ingredienten[$i] . ($i == $aantal_ingredienten ? '' : ', '); } echo '<a href="pizza.php?id=' . $pizzaID . '">' . $ingredientenlink . '</a>'; //bij dit voorbeeld maakt het niet uit wat de keys van je array zijn $ingredientenlink = ''; $aantal_ingredienten = count($ingredienten); $i = 1; foreach($ingredienten as $ingredient) { $ingredientenlink .= $ingredient . ($i == $aantal_ingredienten ? '' : ', '); $i++; } echo '<a href="pizza.php?id=' . $pizzaID . '">' . $ingredientenlink . '</a>'; ?> |
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
[ Bericht 56% gewijzigd door fokME2 op 08-02-2008 15:51:49 ]
Als de PREG_SET_ORDER flag aan staat kan dat met "count($matches)", waarbij $matches de array met gevonden resultaten is.quote:Op vrijdag 8 februari 2008 16:03 schreef qu63 het volgende:
hoe kan ik weten hoeveel matches ik heb met Geqxon's preg_match_all?
ereg_replace("[^A-Za-z0-9]", "", $string);quote:Op vrijdag 8 februari 2008 16:06 schreef Chandler het volgende:
Kleine vraag; hoe kan ik alle karakters uit een stuk test die niet a-Z0-9_- zijn verwijderen?
Ik zie het al. Dat komt zo te zien door de \r\n op het einde. Probeer het eens met deze weggehaald?quote:Op vrijdag 8 februari 2008 16:55 schreef qu63 het volgende:
op de een of andere naier skipped die preg_match_all de laatste .VOB in de lijst
dan pakt ie wel alle bestanden ja, alleen nu werken alleen de hashcodes nog, filename blijft leegquote:Op vrijdag 8 februari 2008 17:01 schreef Geqxon het volgende:
[..]
Ik zie het al. Dat komt zo te zien door de \r\n op het einde. Probeer het eens met deze weggehaald?
O leuk, gaan we golfen? :)quote:
1 2 3 | echo "<a href='pizza.php?id=$pizzaID'>".join(',',$ingredienten)."</a>"; ?> |
"join — Alias of implode()".quote:Op vrijdag 8 februari 2008 18:49 schreef SuperRembo het volgende:
[..]
O leuk, gaan we golfen?
[ code verwijderd ]
quote:Op vrijdag 8 februari 2008 18:49 schreef SuperRembo het volgende:
[..]
O leuk, gaan we golfen?
[ code verwijderd ]
1 |
1 |
1 2 3 4 5 6 7 8 9 10 11 12 | $url = "http://www.google.nl/search?hl=nl&q=een+zoek+woord&aq=een+ander+zoek+woord&meta="; $parameters = parse_url($url, PHP_URL_QUERY); $parameters = explode("&", $parameters); $parameter_array = array(); foreach ($parameters as $parameter){ list($key, $value) = explode("=", $parameter); $parameter_array[$key] = $value; } ?> |
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 | function getmicrotime() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } function php_get_browser($agent = NULL) { $agent = $agent ? $agent : $_SERVER['HTTP_USER_AGENT']; $yu = array(); $q_s = array("#\.#","#\*#","#\?#"); $q_r = array("\.",".*",".?"); $brows = parse_ini_file("browscap.ini", true); foreach ($brows as $k => $t) { if (fnmatch($k, $agent)) { $yu['browser_name_pattern'] = $k; $pat = preg_replace($q_s, $q_r, $k); $yu['browser_name_regex'] = strtolower("^" . $pat . "$"); foreach ($brows as $g => $r) { if ($t['Parent'] == $g) { foreach ($brows as $a => $b) { if ($r['Parent'] == $a) { $yu = array_merge($yu, $b, $r, $t); foreach($yu as $d => $z) { $l = strtolower($d); $hu[$l] = $z; } } } } } break; } } return $hu; } $start = getMicroTime(); if (!function_exists('fnmatch')) { function fnmatch($pattern, $string) { return @preg_match('/^' . strtr(addcslashes($pattern, '/\\.+^$(){}=!<>|'), array('*' => '.*', '?' => '.?')) . '$/i', $string); } } echo '<pre>'; $brouwser = php_get_browser(); $brouwser['browser'] = str_replace("IE", "Internet Explorer", $brouwser['browser']); print_r($brouwser); echo round(getMicroTime() - $start, 2); ?> |
Wat is er zo vreselijk interessant aan welke browser/os een bezoeker precies gebruikt, waarom zou je daar zo veel webserverpower aan verspillen?quote:Op zondag 10 februari 2008 17:34 schreef Chandler het volgende:
Aangezien parsen van vele sites nogal intensief is vraag ik mij af of dit (zie code) te behappen is als je bv 1000 gebruikers p/minuut op je site krijgt.
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 | { [..] foreach ($brows as $g => $r) { [..] foreach ($brows as $a => $b) { [..] $yu = array_merge($yu, $b, $r, $t); foreach($yu as $d => $z) |
Ja ja Brouwserquote:Op zondag 10 februari 2008 19:59 schreef SuperRembo het volgende:
[..]
Wat is er zo vreselijk interessant aan welke browser/os een bezoeker precies gebruikt, waarom zou je daar zo veel webserverpower aan verspillen?
$brouwser![]()
Dan zal je nog het een en ander moeten optimaliseren, want nu haal je nog geen 15 pagina's per seconde.quote:Op zondag 10 februari 2008 20:16 schreef Chandler het volgende:
[..]
Ja ja Brouwser![]()
Maaruh gewoon, ik wil deze statistieken bewaren
1 2 3 4 5 6 | foreach ($brows as $g => $r) { if ($t['Parent'] == $g) { ?> |
Dan is het toch voldoende om $_SERVER['HTTP_USER_AGENT'] op te slaan bij iedere request?quote:Op zondag 10 februari 2008 20:16 schreef Chandler het volgende:
[..]
Ja ja Brouwser![]()
Maaruh gewoon, ik wil deze statistieken bewaren
Is dat niet nog simpeler? Enkel de browser-string opslaan, en pas bij het uitlezen deze "encoden" ?quote:Op zondag 10 februari 2008 23:01 schreef Chandler het volgende:
Ik heb nu een functie gemaakt die idd de meest gangbare browsers detecteerd, maar om er zeker van te zijn ga ik nu ook gewoon de browser string opslaan!
Ps. Is het handig om alle data zoals, dag, maand, jaar, cookies, plugins, referer, zoekwoorden en dergelijke infomatie in 1 tabel te zetten of is het handiger om dit in apparte tabellen te zetten?
Die functie werkt toch ook op basis van de browserstring? Dus meer heb je echt niet nodig.quote:Op zondag 10 februari 2008 23:01 schreef Chandler het volgende:
Ik heb nu een functie gemaakt die idd de meest gangbare browsers detecteerd, maar om er zeker van te zijn ga ik nu ook gewoon de browser string opslaan!
Er zijn legio plugins voor FireFox waar je het mee kan doen, ikzelf gebruik "Modify Headers", kan je alles zelf invullenquote:Op zondag 10 februari 2008 23:47 schreef Light het volgende:
[..]
Die functie werkt toch ook op basis van de browserstring? Dus meer heb je echt niet nodig.
Trouwens, een browserstring is manipuleerbaar. Je kunt er geen 100% garantie uit halen. Ik heb zo snel geen voorbeeld van een programma waar je die string volledig zelf kunt bepalen, maar er zijn vast wel van die programma's.
Edit: Je hebt realtime statistieken die je aanbied oid? Dan schiet het inderdaad niet op.quote:Apache/2.0.59 (Unix) mod_perl/1.99_17-dev Perl/v5.8.6 mod_ssl/2.0.59 OpenSSL/0.9.8e PHP/5.2.3 Server at www.ericbruggema.nl Port 80
Het is niet handig om dat nu allemaal op te slaan. Ten eerste ga je nooit al die info nodig hebben of gebruiken en ten tweede hoef je niet alles te berekenen - sla alleen de data op waaruit je de info kan destilleren,gewoon in ruwe vorm. Dan maak je later wel een scriptje om de benodigde velden te berekenen. Als je het on the fly gaat bereken met dat scriptje dat je hebt gepost dan trek je de server snel op zijn bek denk ik.quote:Op zondag 10 februari 2008 23:01 schreef Chandler het volgende:
Ik heb nu een functie gemaakt die idd de meest gangbare browsers detecteerd, maar om er zeker van te zijn ga ik nu ook gewoon de browser string opslaan!
Ps. Is het handig om alle data zoals, dag, maand, jaar, cookies, plugins, referer, zoekwoorden en dergelijke infomatie in 1 tabel te zetten of is het handiger om dit in apparte tabellen te zetten?
Deze vraag is al vaker langsgeweest, ook op Tweakers.... dus met even zoeken moet je er wel komenquote:Op maandag 11 februari 2008 08:04 schreef Chandler het volgende:
@Iedereen; het scriptje dat browscap.ini parst ga ik niet gebruiken. Aangezien het toch nogal wat preformance vraagt van de server. Ik doe nu gewoon 2 dingen voor mijn statistieken script. 1 is de $_SERVER['HTTP_USER_AGENT'] opslaan plus dat ik deze string op een paar bekende browsers check, en deze sla ik ook weer op.
Iemand nog een antwoord op mijn gebruik van de database? is dit te behappen wat ik doe of moet ik apparte tabellen voor alle onderdelen gebruiken?![]()
[PHP/(My)SQL] voor dummies - deel 55
Draait de webserver toevallig in hetzelfde domain als waar de gebruikers ingelogd zijn?quote:Op maandag 11 februari 2008 11:52 schreef Swetsenegger het volgende:
Daar ben ik weer eens.
Momenteel ben ik met een scriptje bezig waarbij de pagina die je voorgeschotelt krijgt afhankelijk is van welk persoon de pagina bekijkt. Nu kan ik dat uiteraard met een login script doet, maar aangezien het nogal vaak gebruikt moet worden is dat niet erg gebruiksvriendelijk.
Nu zit ik hier op het bedrijfsnetwerk en zijn mensen uiteraard al ingelogd. LDAP dus.
Ondertussen kan ik al info uit de LDAP server lezen, maar ik wil nu de credentials waar mensen mee zijn ingelogd vergelijken met de server om te authenticeren. Maar..., ik dnek dat ik het niet goed benader, want je credentials worden denk ik niet in de header info meegestuurd ofzo? Is dit uberhaupt mogelijk?
1 2 3 | $_SERVER['LOGON_USER'] ?> |
1 2 3 | $_SERVER['AUTH_USER'] ?> |
Hij draait in hetzelfde domain, onder apachequote:Op maandag 11 februari 2008 12:02 schreef Geqxon het volgende:
[..]
Draait de webserver toevallig in hetzelfde domain als waar de gebruikers ingelogd zijn?
[ code verwijderd ]
of
[ code verwijderd ]
is dan een optie. Werkt enkel onder IIS, voor Apache heb je mod_ntlm nodig.
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 | require_once('includes/dbconnector.class.php'); $connector = new DbConnector(); if(isset($_SESSION['user_id'])) { //Login correct, update lastactive in db $connector->query("UPDATE cmsusers SET lastactive=NOW() WHERE id='".$_SESSION['user_id']."'"); } else{ if(isset($_COOKIE['user_id'])) { $result = $connector->query("SELECT pass,thegroup FROM cmsusers WHERE id='".$_COOKIE['user_id']."'"); $row = $connector->fetchArray($result); $dbpass = $row->pass; $dbstatus = $row->thegroup; if($dbpass == $_COOKIE['user_password']) { $_SESSION['user_id'] = $_COOKIE['user_id']; $_SESSION['user_status'] = $dbstatus; } else { setcookie("user_id", "", time() - 3600); setcookie("user_password", "", time() - 3600); echo "Cookies incorrect. Cookies verwijderd."; header("Location: login.php"); } } else{ //Hij blijft hierheen gaan header("Location: login.php"); } } ?> |
Ik had alles blijkbaar al eens geconfigureerd, en de login is nu transparant (met IE, met elke andere browser krijg je gewoon een login prompt). Maar.... ik wil nu de username terug vinden van degene die op de pagina zit. De suggesties van geqxon geeft niets terug en ook $_SERVER['PHP_AUTH_USER'] geeft niets terug.quote:Op maandag 11 februari 2008 13:16 schreef fokME2 het volgende:
@Swetsenegger: Met LDAP authorisatie heb ik ook eens gespeeld en het werkte goed. Ik dacht dat ik er een classe voor had gebruikt. Misschien dat ik het thuis nog kan vinden.
Nee, de authenticatie op zich werkte al, ik kon alleen nog niet achterhalen wie de ingelogde gebruiker was. In principe mag elke gebruiker van het domein op die pagina komen, maar afhankelijk van de gebruiker kan het zijn dat je andere opties hebt.quote:Op maandag 11 februari 2008 13:58 schreef Geqxon het volgende:
Swets, wat mij bij staat is dat als je de boel met .htaccess en .htpasswd beveiligd, dat Internet Explorer dan eerst met de username en password van de domein-gebruiker in probeert te loggen. Misschien een optie?
Laat de login.php eens zien, want volgens mij set je je cookies niet goed.quote:Op maandag 11 februari 2008 13:40 schreef Tarabass het volgende:
Zoals ik al eerder in dit topic aangaf ben ik bezig met een oop-cms. Alles gaat lekker alleen loop ik tegen een probleempje aan. Inloggen gaat goed, session-variables worden geset, en de user wordt doorgestuurd naar de index page. Daar include ik een 'safe-file' die check of de session is aangemaakt, die safe.php ziet er zo uit:
[ code verwijderd ]
Echter blijft de safe-file redirecten naar de login-page. Ik heb getest of de session is geset en dit is zeker weten het geval. Zien jullie wat ik verkeerd doe, want dit is erg frustrerend
ps: Heb deze manier van werken al in een andere website gebruikt en daar werkte het perfect. Met een safe.php en een safe_admin.php beveiligde ik de pages, met een redirect naar login.php. Dit was echter wel zonder classes..
1 2 | header("Location: login.php"); |
Waarschijnlijk gaat het ophalen van de sessie data niet goed in je safe include. Initialiseer je de sessie wel goed?quote:Op maandag 11 februari 2008 13:40 schreef Tarabass het volgende:
Zoals ik al eerder in dit topic aangaf ben ik bezig met een oop-cms. Alles gaat lekker alleen loop ik tegen een probleempje aan. Inloggen gaat goed, session-variables worden geset, en de user wordt doorgestuurd naar de index page. Daar include ik een 'safe-file' die check of de session is aangemaakt, die safe.php ziet er zo uit:
[ code verwijderd ]
Echter blijft de safe-file redirecten naar de login-page. Ik heb getest of de session is geset en dit is zeker weten het geval. Zien jullie wat ik verkeerd doe, want dit is erg frustrerend
ps: Heb deze manier van werken al in een andere website gebruikt en daar werkte het perfect. Met een safe.php en een safe_admin.php beveiligde ik de pages, met een redirect naar login.php. Dit was echter wel zonder classes..
De login gebruikt een functie in een class om in te loggen en eventueel cookies te zetten.quote:Op maandag 11 februari 2008 14:18 schreef Dzy het volgende:
[..]
Laat de login.php eens zien, want volgens mij set je je cookies niet goed.
Edit: En dit gaat uiteraard ook niet werken:
[ code verwijderd ]
Want een header sturen na output is natuurlijk te laat.
Dat is inderdaad de bedoeling. Maar omdat het niet werkte ben ik eerst een stap terug gegaan naar een losse file waarin gecheckt wordt of de sessie wel bestaat. De functionaliteit komt inderdaad in een functie in de sentry-class die ik dan bovenaan de pages aanroep. Maar nogmaals, classes zijn nieuw voor mij en daarom probeer ik eerst op een manier wat duidelijk voor mij is de code uit.quote:Op maandag 11 februari 2008 14:22 schreef Farenji het volgende:
[..]
Waarschijnlijk gaat het ophalen van de sessie data niet goed in je safe include. Initialiseer je de sessie wel goed?
Die safe include is overigens niet echt oop.
Het idee achter OOP is dat je functionaliteit groepeert in logische bouwblokken waaruit je je applicatie opbouwt. Het is dan logisch om een session class te maken, waar je alle session management in regelt. Eventueel zou je die sessie class deel kunnen laten uitmaken van de user class (als in: wel aparte classes maar een user object bevat/encapsuleert een session object). Het idee is dan dat je een objectmethode maakt (bijv $user->isLoggedIn()) die je overal kan gebruiken. Deze methode van de class user kijkt dan in de sessie (maw in het sessie object dat in het user object zit) van betreffende user of alles ok is en geeft dan een 1 (ingelogd) of een 0 (niet ingelogd) terug. Aan de hand daarvan kun je dan de gevraagde pagina tonen of redirecten naar de loginpagina.
Geeft inderdaad NULL, terwijl de linkjes in het menu in het if(isset($_SESSION['user_id'])-statement wel worden weergegeven :Squote:Op maandag 11 februari 2008 14:34 schreef Dzy het volgende:
Als de sessie daadwerkelijk zou bestaan zou hij niet naar login.php gaan. Doe eens een var_dump op $_SESSION en op $_COOKIE boven de if-then-else constructies.
Nee, ik weet al waar het in zat. De session werd gestart in de constructor van de sentry-class, maar die had een verkeerde naam. Nu werkt alles zoals het moet. Erg bedankt voor het meedenken want zo wist ik welke richting ik op moest zoekenquote:Op maandag 11 februari 2008 15:41 schreef Dzy het volgende:
Werd er niet per ongeluk al output gegenereerd? (Denk het niet want dan zou je header redirect ook niet werken maar je weet het maar nooit). Kan ook whitespace zijn.
1 2 3 4 5 6 7 | WHERE id NOT IN ( SELECT id FROM foo ORDER BY created DESC LIMIT 10 ) |
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 | function getLine($page, $keyword, $pattern) { foreach ($page as $line_num => $line) { if(strstr($line, $keyword)){ if(ereg($pattern, $line, $output)){ $result = $line_num; } } } return $result; } // URL van de pagina die doorzocht moet worden $url = "http://auto.marktplaats.nl/audi/132476134-150x-audi-a3-a4-a6-tdi-golf-4-5-tdi-benzine-seat-leon-tdi.html?return=eJwdyEEOgyAQheG7mOiuIJIuxBhDb0KURiLIhBmTpk3v3qGbme9%2FzijzCaaf0Ki7Mg16V9Z92onASHlk8KdIrhwE0TlCcUbpLso35LcFuY5a7JTi8oqz6jacKbfaqlY%2FIh87%2FjVU6SpivQMw8bkhBwvq2DMS7%2Fa8ki9h5cwYuIcO4Jr7Zvr%2BAA4JNF8%3D&fta=eNptVm1uGzkMvcv86G%2FxSxQ1yBX2CoFRp10DTmLETje7Qe5ejuiRVGBRIGheKJKPfCTnUEv9vPqP5f3t%2FPjrcL4uq%2F8qdfk4P8C34%2FXh9lphPUM1%2F4nVaD3f6n%2Bny3r9cbzW9XKraX2%2B1Jf356e30%2Ff1%2FFGREpmt53%2BrYC6E6%2Bv1VPHb5fL%2BkDbnXJfL4efTsp7c8bVSXU5Hj3qokKh%2BntzftVpdgJA1A%2FFuuGGOFEoFNgx3OyZjQ9ww6naKRilvGO9Y9oeU2luZ7LLG2zxjSLJhuscQIvEoG1Z2Oyol59Ji2PQWC2vLeSfCnjUxBpHOhPw5SoA4WeaC1MDORVjBCTawkwFk49SShIkNmHJYdjqIbgwtddBumYATRZ6dEEKyogHujJBLLqW0QNgZpYyg1vLEzsgdkFe5gZ2RgKjlFh07I1A1k9LAzkjZgCh8zowYc%2FicGgRkUU%2FUP5K%2F%2B%2ByMMmQQaAVBG3mqsjZL6oxcsm4YItoZEWlJrsMG4oievCQtT6KhBXMdtjypMxIyUAiwM3K5qVJEzyNPcbU2RqRDIQRQInoZfUeQFNE7I05IaO05pylPL12rPMMfeQZN7oxQsfifGjgYKakEd%2B6MCF3yGpajR5i8nG2ueDAyTUnj%2BaQ6E5YmMC4TqG7dwJ0RFSWy0qokQ3VIHijAzojZhHJ7LqNH2ew%2BMtIZ5eLMpSlZOiMvvc9hamBnJEmdaWyKPGTjC4rjuQ4li9cvno%2FFQFuRIs%2BhOvHB5tajnOYWl1hxecyR7ymJPZXHZrDs%2FWyVzzTRlBJTnHkabSixGfLOyIWYwCB8jh7l5AsjwM4oS1aOec9ltMPdcmOUbci7METjNE0poUrTvMLw6XoIeStOYGFqpVOaQGVqKSnPzzWUrDJbQmot1s6IuKQcI6M6gwUjzzKDEHOkNoMYNMvoEXjqsVjKdIcsSYih9EOUIXGOFpcxRwSC1miWoTp2IUJYDkbmF4rixuReedmSj%2BidkfcS%2FV8Dy3Qafau20pXBKPkaCJqWRuOEOU6PzZdVfEIaOHrki94XYwNptqQ4E8b9QLrs7sNlMhaLOB4%2Bp81QXLOR0pij7NA9z3GPkGw%2FsPY%2FXwCQ0uzUBzzQaZJE7mvVpTI8%2BCxu%2BX9d%2FcrW5fZ6ORyvj%2Benl5%2B3v%2FevCEh1%2Bf7%2B9vZ4ejk%2BfWzoPdbz4eNx%2B37xT5ZjbHCsy%2BGfZf3r%2Ft9f27dMqp9fX78BmNgwHA%3D%3D&fta_ind=1&df=1"; // Naar welk begindeel moet er worden gezocht: $search1 = 'Vermogen'; // Naar welk einddeel moet er worden gezocht: $search2 = 'Cylinderinhoud'; // Wat moeten er van die regel worden opgenomen: // Het patroon maakt gebruik van reguliere expressies //$pattern = '.*'; $pattern = '.*.'; ////// $lines = file($url); $begin = getLine($lines, $search1, $pattern); $end = getLine($lines, $search2, $pattern); for($i=$begin; $i < $end; $i++) { echo $lines[$i]; } ?> |
Handig!quote:Op maandag 11 februari 2008 20:42 schreef SuperRembo het volgende:
[ code verwijderd ]
(Als je niet een hele oude MySQL versie gebruikt)
"created? Geniaal, die maakte ik normaal altijd zelf.quote:Op maandag 11 februari 2008 20:42 schreef SuperRembo het volgende:
[ code verwijderd ]
(Als je niet een hele oude MySQL versie gebruikt)
En die noem ik dus meestal created en modifiedquote:Op maandag 11 februari 2008 21:51 schreef Geqxon het volgende:
O, ik dacht dat MySQL dat veld altijd zelf aanmaakt. In dat geval hou ik het wel zoals ik het nu doe, een veld date_added en een veld date_updated.
Geen probleem. Blij dat het gelukt is.quote:Op maandag 11 februari 2008 18:55 schreef Tarabass het volgende:
[..]
Nee, ik weet al waar het in zat. De session werd gestart in de constructor van de sentry-class, maar die had een verkeerde naam. Nu werkt alles zoals het moet. Erg bedankt voor het meedenken want zo wist ik welke richting ik op moest zoeken
Je hebt het al opgelost, maar er zijn toch nog een paar puntjes waar je op kunt letten:quote:Op maandag 11 februari 2008 13:40 schreef Tarabass het volgende:
Zoals ik al eerder in dit topic aangaf ben ik bezig met een oop-cms. Alles gaat lekker alleen loop ik tegen een probleempje aan. Inloggen gaat goed, session-variables worden geset, en de user wordt doorgestuurd naar de index page. Daar include ik een 'safe-file' die check of de session is aangemaakt, die safe.php ziet er zo uit:
[ code verwijderd ]
Echter blijft de safe-file redirecten naar de login-page. Ik heb getest of de session is geset en dit is zeker weten het geval. Zien jullie wat ik verkeerd doe, want dit is erg frustrerend :(
ps: Heb deze manier van werken al in een andere website gebruikt en daar werkte het perfect. Met een safe.php en een safe_admin.php beveiligde ik de pages, met een redirect naar login.php. Dit was echter wel zonder classes..
1 2 3 4 5 6 7 | $result = $connector->query("SELECT pass,thegroup FROM cmsusers WHERE id='".$_COOKIE['user_id']."'"); $row = $connector->fetchArray($result); $dbpass = $row->pass; $dbstatus = $row->thegroup; ?> |
En als ik nu wel een iets te oude versie hebquote:Op maandag 11 februari 2008 20:42 schreef SuperRembo het volgende:
[ code verwijderd ]
(Als je niet een hele oude MySQL versie gebruikt)
Dan moet je eens kijken naar de mogelijkheden om te upgradenquote:Op dinsdag 12 februari 2008 07:44 schreef Chandler het volgende:
[..]
En als ik nu wel een iets te oude versie heb
Dan moet je het in 2 aparte queries doen: eerst een lijst van de recente records ophalen, en deze vervolgens wissen in een tweede query. Veel queries met subqueries kun je herschrijven tot een enkelvoudige query, maar bovenstaande is een goed voorbeeld waar dat niet kan.quote:Op dinsdag 12 februari 2008 08:30 schreef Chandler het volgende:
True True! maar als die mogelijkheid er nu niet is?
Loginsysteem met challenge-response systeem, sessie management en verschillende userrollen?quote:Op dinsdag 12 februari 2008 13:24 schreef saban het volgende:
* saban heeft nog steeds genoeg vrije tijd over om iets te bouwen .. ben er nog steeds niet uit 'wat'
Gastenboek? Heb je binnen paar uur klaar.
Factuursysteem? Kan, lijkt me leuk met FPDF bijv..
More?
quote:Op maandag 11 februari 2008 20:45 schreef BaggerUser het volgende:
hoi,
ben aan het proberen om advertenties van marktplaats uit te lezen en op die manier ook op een eigen site te zetten (anders moeten ze altijd twee keer worden toegevoegd op twee verschillende sites en dat is nogal een werk.
ik heb op dit moment dit:
[ code verwijderd ]
probleem waar ik mee zit (ik heb even een willekeurige advertentie gepakt, zie link in script)
is dat ik de bovenste info wel kan uitlezen , maar de onderste info (in het 2e kopje dus oa die met cyllinderinhoud) niet. iemand enig idee hoe dat kan?
sowieso, niet iemand die een minder omslachtige manier weet?
Weet je zeker dat je geen typo hebt gemaakt met Cylinder?quote:
Weet je toevallig ook een gratis (webbased) facturatiesysteem?quote:Op dinsdag 12 februari 2008 13:35 schreef Chandler het volgende:
Doe maar een factuursysteem waarbij de facturen ook opgeslagen worden in de database eventueel ook een klanten tabel! plus opslag van facturen om eventueel bij nieuwe layout de facturen in een nieuwe layout te zetten
Was het maar waar, dan zou ik daar zekers gebruik van makenquote:Op dinsdag 12 februari 2008 16:17 schreef saban het volgende:
[..]
Weet je toevallig ook een gratis (webbased) facturatiesysteem?
Dat ken ik. Nog leuker is het als je iets maakt voor een klant en er dan achter komt dat het niet werkt omdat er php-instellingen niet goed staan. Dingen als register_globals en magic_quotes_gpc mogen wmb wel uit, maar sommige hosters laten het niet toe dat aan te passen (zelfs niet met .htaccess bestandjes)quote:Op dinsdag 12 februari 2008 12:01 schreef Farenji het volgende:
Ik zit overigens op mijn werk ook opgescheept met mysql 4.0 (uit debian sarge), die heeft geen subquery support.![]()
Upgraden van tientallen servers en bovendien met software die niet 100% op nieuwere versies draait is niet zo makkelijk. Maar binnenkort moeten we wel, dat wordt dus nog leuk...
Niets, tenzij je zerofill aanzet. En da's een overbodige optie, want dat past beter in een presentatie-layer.quote:Op dinsdag 12 februari 2008 18:05 schreef Chandler het volgende:
Leuke vraag,
Wat is het verschil met tinyint(1) en tinyint(2) etc, zelfde geld voor INT
Dit getal heeft alleen invloed op eventuele padding, en alleen als je ZEROFILL voor de kolom aanzet. Het heeft geen invloed op wat je in het veld kan stoppen of hoeveel ruimte je nodig hebt. Dus als je de waarde 1 in een tinyint(3) stopt in een veld met zerofill, komt dat eruit als 001.quote:Op dinsdag 12 februari 2008 18:05 schreef Chandler het volgende:
Leuke vraag,
Wat is het verschil met tinyint(1) en tinyint(2) etc, zelfde geld voor INT
1 2 3 | ftp-nb-fget ?> |
er van uitgaande dat het veld unsigned is:quote:Op dinsdag 12 februari 2008 18:35 schreef Farenji het volgende:
[..]
Dit getal heeft alleen invloed op eventuele padding, en alleen als je ZEROFILL voor de kolom aanzet. Het heeft geen invloed op wat je in het veld kan stoppen of hoeveel ruimte je nodig hebt. Dus als je de waarde 1 in een tinyint(3) stopt in een veld met zerofill, komt dat eruit als 001.
Goed lezen:quote:Op woensdag 13 februari 2008 12:29 schreef Dreammaster het volgende:
[..]
er van uitgaande dat het veld unsigned is:
een tinyint(1) kan 10 verschillende waardes hebben namelijk 0 t/m 9
een tinyint(2) kan 100 verschillende waardes hebben 0 t/m 99
een tinyint(3) kan 256 verschillende waardes hebben 0 t/m 255
signed:
een tinyint(1) kan 19 verschillende waardes hebben namelijk -9 t/m 9
een tinyint(2) kan 199 verschillende waardes hebben -99 t/m 99
een tinyint(3) kan 256 verschillende waardes hebben -128 t/m 127
-edit- bron
quote:The display width does not constrain the range of values that can be stored in the column, nor the number of digits that are displayed for values having a width exceeding that specified for the column. For example, a column specified as SMALLINT(3) has the usual SMALLINT range of -32768 to 32767, and values outside the range allowed by three characters are displayed using more than three characters.
1 2 3 4 5 6 7 | $GLOBALS['queries']++; $GLOBALS['query'][$GLOBALS['queries']] = array("sql" => $sql, "start" => $start, "end" => $end, "time" => round($end - $start, 2)); ?> |
Dan heb je die variabele waarschijnlijk als global in een functie gebruikt. Dan komt hij namelijk automatisch ook in de $GLOBALS array te staan.quote:Op woensdag 13 februari 2008 17:56 schreef Chandler het volgende:
Was wel een array! maar blijkbaar heeft het gebruik gemaakt van een variabel die ook $query heet! ik heb de namen gerenamed en zag deze error niet meer!.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function MakeTD($tr_start,$width,$height,$bgcolor,$value,$tr_end) { $td = ''; if (!empty($tr_start)) { $td .= '<tr>'; } if (empty($bgcolor)) { $td .= '<td width="'. $width .'" height="'. $height .'">'. $value .'</td>'; } else { $td .= '<td width="'. $width .'" height="'. $height .'" bgcolor="#'. $bgcolor .'">'. $value .'</td>'; } if (!empty($tr_end)) { $td .= '</tr>'; } echo $td; } ?> |
1 2 3 4 5 6 | MakeTD("tr","70","25","000","waarde",""); // output: // <tr><td width="70" height="25" bgcolor="#000">waarde</td> ?> |
1 2 3 4 5 6 7 8 9 10 | MakeTD("","70","25","000","waardes",""); MakeTD("","70","25","000","waardes",""); MakeTD("","70","25","000","waardes",""); // output: // <td width="70" height="25" bgcolor="#000">waardes</td> // <td width="70" height="25" bgcolor="#000">waardes</td> // <td width="70" height="25" bgcolor="#000">waardes</td> ?> |
1 2 3 4 5 6 | MakeTD("","70","25","000","waardes","tr"); // output: // <td width="70" height="25" bgcolor="#000">waardes</td></tr> ?> |
Moet veel overzichten weergevenquote:Op woensdag 13 februari 2008 22:23 schreef Geqxon het volgende:
Wat dacht je ervan om een complete table-array in een object te gooien?
Verder, heb je dan echt zoveel tabellen nodig?
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 | class Menu{ private $selected; public function Menu($selected){ $this->selected = $selected; } public function getOutput(){ global $input_parent; $result = mysql_query(" SELECT Name, HTML FROM mod_parent ORDER BY Sort ASC "); $output = '<ul id="menu">'; if ($result){ $first = true; while ($row = mysql_fetch_assoc($result)){ $selected = ($this->selected == $row['Name']); $classes = array(); if ($first){ $classes[] = 'first'; } if ($selected){ $classes[] = 'selected'; } $first = false; $class = (!empty($classes)) ? ' class="'.implode(" ", $classes).'"' : ''; $output .= sprintf('<li%s><a href="%s?parent=%s">%s</a></li>', $class, BASE_PAGE, mod_format_string($row['Name']), mod_format_string($row['HTML'])); } } $output .= '</ul>'; return $output; } } ?> |
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 | function MakeTable($table_start,$table_width,$table_bgcolor,$tr_start,$td_width,$td_height,$td_bgcolor,$td_value,$tr_end,$table_end) { $table = ''; if (!empty($table_start) AND empty($table_bgcolor)) { $table .= '<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="'. $table_width .'">'; } if (!empty($table_start) AND !empty($table_bgcolor)) { $table .= '<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="'. $table_width .'" bgcolor="#'. $table_bgcolor .'">'; } if (!empty($tr_start)) { $table .= '<tr>'; } if (empty($td_bgcolor)) { $table .= '<td width="'. $td_width .'" height="'. $td_height .'">'. $td_value .'</td>'; } else { $table .= '<td width="'. $td_width .'" height="'. $td_height .'" bgcolor="#'. $td_bgcolor .'">'. $td_value .'</td>'; } if (!empty($tr_end)) { $table .= '</tr>'; } if (!empty($table_end)) { $table .= '</table>'; } echo $table; } MakeTable("table_start","500","000000","tr","100","30","ffffff","waarde van veld 1","",""); MakeTable("","","","","100","30","ffffff","de waarde van veld 2","",""); MakeTable("","","","","100","30","ffffff","de waarde van veld 3","",""); MakeTable("","","","","100","30","ffffff","de waarde van veld 4","",""); MakeTable("","","","","100","30","ffffff","de waarde van veld 5","tr","table_end"); // output: // // <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="500" bgcolor="#000000"> // <tr> // <td width="100" height="30" bgcolor="#ffffff">waarde van veld 1</td> // <td width="100" height="30" bgcolor="#ffffff">de waarde van veld 2</td> // <td width="100" height="30" bgcolor="#ffffff">de waarde van veld 3</td> // <td width="100" height="30" bgcolor="#ffffff">de waarde van veld 4</td> // <td width="100" height="30" bgcolor="#ffffff">de waarde van veld 5</td> // </tr> // </table> ?> |
1 2 3 4 5 6 7 8 9 10 11 | $td_style = array( 'width' => '70px', 'height' => '25px', 'bgcolor' => '#000' ); $td_options = array( 'class' => 'blabla classe' ); MakeTD("waarde",$td_options, $td_style); ?> |
Zo ver ben ik nog niet dat ik met classes kan werken.quote:Op woensdag 13 februari 2008 22:43 schreef fokME2 het volgende:
@saban: Is het geen idee om sommige opties als array mee te geven?
[ code verwijderd ]
Als je dan vaak dezelfde waardes gebruikt kan je het makkelijk aanpassen door een array in je config oid. Je kan het zo gek niet bedenken!![]()
Edit: Je hebt zelf al geklust. Misschien dat het tijd wordt voor classes!![]()
Voor hetgene wat je wil is het gewoon heel geschikt.quote:Op woensdag 13 februari 2008 22:47 schreef saban het volgende:
[..]
Zo ver ben ik nog niet dat ik met classes kan werken.
Ben bezig met teveel dingen tegelijk. Zit ook een beetje te knoeien met CSS
Vandaag mijn eerste 'ontwerp' in CSS met DIV'jes gemaakt
Haha, zou ik niet durven. Heb pas vandaag geleerd hoe CSS (DIV'jes) ongeveer werkt, ga niet gelijk door een validatorquote:Op woensdag 13 februari 2008 23:05 schreef fokME2 het volgende:
[..]
Voor hetgene wat je wil is het gewoon heel geschikt.
@CSS: Gooi het eens door de w3-validator?
escape ofquote:Op donderdag 14 februari 2008 11:27 schreef Chandler het volgende:
Weet iemand een handige functie die het zelfde werkt als addslashes / magic quotes en ga zo maar door!
Als je een functie zoekt die hetzelfde doet als addslashes zou ik toch addslashes willen adviserenquote:Op donderdag 14 februari 2008 11:27 schreef Chandler het volgende:
Weet iemand een handige functie die het zelfde werkt als addslashes / magic quotes en ga zo maar door!
dat kan met mod_rewrite, maar dat is geen php (maar meer een optie van de serversoftware zelf). Google er maar eens op, zat voorbeeldenquote:Op donderdag 14 februari 2008 19:37 schreef Flaccid het volgende:
Ik heb een cms geschreven zelf. Heel simpel, je kan pagina's aanmaken, met titel enzo. Maar hoe kan ik het makkelijkst, en het veiligst die informatie uit een database halen. In zon database staat de inhoud van de pagina, de titel enz. Moet ik dat met een GET doen? Ik dacht zelf aan iets, dat je gewoon een .html moet intypen, maar dat hij dan stiekemin php de pagina pakt. Dus bijvoorbeeld: about.html , moet op een manier, met php een variable about krijgen. Als ik die variable heb, is het genoeg.
dat is pittig. Hoe kan ik het dan het beste doen?quote:Op donderdag 14 februari 2008 19:42 schreef ralfie het volgende:
[..]
dat kan met mod_rewrite, maar dat is geen php (maar meer een optie van de serversoftware zelf). Google er maar eens op, zat voorbeelden
Waarom denk je dat dat veiliger is dan bijvoorbeeld about.php of index.php?page=about?quote:Op donderdag 14 februari 2008 19:37 schreef Flaccid het volgende:
Ik dacht zelf aan iets, dat je gewoon een .html moet intypen, maar dat hij dan stiekemin php de pagina pakt. Dus bijvoorbeeld: about.html , moet op een manier, met php een variable about krijgen. Als ik die variable heb, is het genoeg.
iemand zei dat als je include door get doet, dat het dan mis gaat?quote:Op donderdag 14 februari 2008 19:53 schreef SuperRembo het volgende:
[..]
Waarom denk je dat dat veiliger is dan bijvoorbeeld about.php of index.php?page=about?
1 2 3 | include( 'content/' . $_GET[ 'content' ] . '.php' ); ?> |
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 | # Allowed content $allowed = array( 'home', 'foo', 'bar' ); # Check for content and if content in allowed if( isset( $_GET[ 'content' ] ) AND in_array( $_GET[ 'content' ], $allowed ) ) { # Allowed include( 'content/' . $_GET[ 'content' ] . '.php' ); } elseif( false == isset( $_GET[ 'content' ] ) ) { # Not set } elseif( false == in_array( $_GET[ 'content' ], $allowed ) ) { # Not allowed } ?> |
Ja dat doe ik ook altijd zo.quote:Op donderdag 14 februari 2008 20:09 schreef colourAgga het volgende:
Als jij gewoon
[ code verwijderd ]
Doet dan kan het inderdaad gruwelijk misbruikt worden ja. Als jij echter ook een array gebruikt (of uit de database) met toegestane waarden is het wel redelijk proof hoor
[ code verwijderd ]
Er zijn zat diensten waar je sms-credits in kan kopen en vervolgens met PHP via een API berichten kan versturen.quote:Op donderdag 14 februari 2008 20:14 schreef Flaccid het volgende:
[..]
Ja dat doe ik ook altijd zo.
is het btw ook mogelijk/moeilijk sms berichten te versturen/ontvangen via php?
Had namelijk een idee voor een script:quote:Op donderdag 14 februari 2008 20:15 schreef colourAgga het volgende:
[..]
Er zijn zat diensten waar je sms-credits in kan kopen en vervolgens met PHP via een API berichten kan versturen.
Goed idee, kun je beter zelf bepalen. Ik ga niet naar school. Kijk of er vraag is, zoek eventueel een investeerder, schrijf een goede robuuste applicatie. Kom met een plan om er geld mee te verdienen en gaan!quote:Op donderdag 14 februari 2008 20:20 schreef Flaccid het volgende:
[..]
Had namelijk een idee voor een script:
Een online cijferkaart, waar je je cijfers naar kan toe sms'en, en dat ie dan automatisch het gemiddelde uitrekent en dergelijken. Wat je dan ook weer via sms kan opvragen. Met format: 8.5 nederlands 3x - cijfer , vak, weging. Ook kan je online toevoegen en bekijken. Is het een goed idee of te complex?
Als 16 jarige is dat lastig allemaal.quote:Op donderdag 14 februari 2008 20:24 schreef colourAgga het volgende:
[..]
Goed idee, kun je beter zelf bepalen. Ik ga niet naar school. Kijk of er vraag is, zoek eventueel een investeerder, schrijf een goede robuuste applicatie. Kom met een plan om er geld mee te verdienen en gaan!
Da's helemaal niet zo lastig, als je meer vragen hebt over technisch/financieel haalbaar moet je me maar contacten via mail/msn op adres in mijn profiel anders slibt het hier ook weer zo dichtquote:Op donderdag 14 februari 2008 20:36 schreef Flaccid het volgende:
[..]
Als 16 jarige is dat lastig allemaal.
added @ msnquote:Op donderdag 14 februari 2008 20:38 schreef colourAgga het volgende:
[..]
Da's helemaal niet zo lastig, als je meer vragen hebt over technisch/financieel haalbaar moet je me maar contacten via mail/msn op adres in mijn profiel anders slibt het hier ook weer zo dicht
http://nl3.php.net/ftp/#ftp.examples ?quote:Op donderdag 14 februari 2008 21:09 schreef Dzy het volgende:
Niemand die iets weet van FTP files downloaden en tijdens het downloaden al doorflushen naar de browser?
ik denk dat hij een filmpje aan het downloaden is die op60% is en hij al een deel wil zien?quote:Op donderdag 14 februari 2008 21:28 schreef Geqxon het volgende:
[..]
http://nl3.php.net/ftp/#ftp.examples ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | value ), sum( `count` ) AS counter FROM statreferer WHERE sid = '7' AND TYPE = 'E' AND ( statreferer.year >= '2008' AND statreferer.month >= '08' AND statreferer.day >= '11' ) AND ( statreferer.year <= '2008' AND statreferer.month <= '11' AND statreferer.day <= '19' ) GROUP BY value ORDER BY `counter` DESC LIMIT 0 , 250 |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |