quote:Op vrijdag 17 augustus 2007 14:01 schreef PiRANiA het volgende:
Hollee! Teeveepee!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | if(str_replace(array("n","r",'http://','https://','ftp://'),'',$_SERVER['REQUEST_URI'])!=$_SERVER['REQUEST_URI']) { $tmp_req_uri = $_SERVER['REQUEST_URI']; if(substr($tmp_req_uri,0,7)=='http://') { $tmp_req_uri = substr($tmp_req_uri,7,(strlen($tmp_req_uri)-7)); } elseif(substr($tmp_req_uri,0,8)=='https://') { $tmp_req_uri = substr($tmp_req_uri,8,(strlen($tmp_req_uri)-8)); } elseif(substr($tmp_req_uri,0,6)=='ftp://') { $tmp_req_uri = substr($tmp_req_uri,6,(strlen($tmp_req_uri)-6)); } if(str_replace(array("n","r",'http://','https://','ftp://'),'',$tmp_req_uri)!=$tmp_req_uri) { die("You lose!"); } } ?> |
Ja, in PHP kan dat met date() of getdate()quote:Op vrijdag 17 augustus 2007 15:59 schreef Xtr3mE het volgende:
Is het met PHP mogelijk om de dag te bepalen als je een datum (in de toekomst) hebt?
Dus ik heb in de database een datum, die haal ik eruit en wil dan weten welke dag dat is. (ma, di, woe enz..)
$dag = date(w, mktime(uur,minuut,seconde,maand,dag,jaar));quote:Op vrijdag 17 augustus 2007 15:59 schreef Xtr3mE het volgende:
Is het met PHP mogelijk om de dag te bepalen als je een datum (in de toekomst) hebt?
Dus ik heb in de database een datum, die haal ik eruit en wil dan weten welke dag dat is. (ma, di, woe enz..)
zet je session_start(); ergens in je code waar er nog geen output gegeven is, ergens bovenin dusquote:Op vrijdag 17 augustus 2007 19:12 schreef denB het volgende:
Ik krijg een error op mijn gastenboek pagina. Hij kwam van een andere website, zodat we hem konden testen. Nu hebben we hem op mijn website geplaatst en krijgen we het volgende:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/****/domains/****.nl/public_html/****/gastenboek.php:13) in /home/****/domains/****.nl/public_html/****/config.php on line 5
Zodra we:
// Prepare session
if(!isset($_SESSION)) session_start();
Verwijderen, verdwijnt de text die in te image vertificatie staat.
En krijgen we simpel weg alleen een blank plaatje te zien.
Iemand enige idee hoe dit op te lossen is?
Ik heb die sessions start ergens al bovenaan gezet, maar dat gaf weinig resultaat.quote:Op vrijdag 17 augustus 2007 19:22 schreef PiRANiA het volgende:
[..]
zet je session_start(); ergens in je code waar er nog geen output gegeven is, ergens bovenin dus
Helemaal bovenaan staat de FAQ.quote:Op vrijdag 17 augustus 2007 19:23 schreef PiRANiA het volgende:
Hoe zet je btw op fok nou een php code?
misschien handig om in de OP aan te geven? ;_)
De functie [url=php.net/strtotime]strtotime()[/url] is dan nog makkelijker.quote:Op vrijdag 17 augustus 2007 18:24 schreef PiRANiA het volgende:
[..]
$dag = date(w, mktime(uur,minuut,seconde,maand,dag,jaar));
en dan uur, minuut etcetera invullen
uhm...quote:Op vrijdag 17 augustus 2007 19:33 schreef HuHu het volgende:
Je provider ondersteund het zeer waarschijnlijk wel, maar het staat niet op de juiste plaats in je bestand. Het moet helemaal bovenaan staan.
Nu staat het op regel 13 in gastenboek.php, maar in het bestand config.php wordt op regel 5 al iets gedaan waardoor de sessie niet meer gestart kan worden. Je moet in gastenboek.php je session_start() gewoon helemaal bovenaan zetten.
Vrij duidelijk, je kunt geen lege mappen verwijderen. Dat is standaard, dus eerst de map helemaal leeghalen en dan de rest verwijderen. Een goed FTP programma kan (doet) dat ook automatisch.quote:Op vrijdag 17 augustus 2007 19:48 schreef denB het volgende:
[..]
uhm...
Ik probeerde net die map te deleten met die website en gb er in. en toen kreeg ik dit:
STATUS:> PWD skipped. Current folder: "/public_html/pors".
COMMAND:> RMD dat
550 dat: Directory not empty
ERROR:> Requested action not taken (e.g., file or directory not found, no access).
Krijg er een beetje een slapje janus van...
Preciesquote:Op vrijdag 17 augustus 2007 19:56 schreef HuHu het volgende:
[..]
Vrij duidelijk, je kunt geen NIET lege mappen verwijderen. Dat is standaard, dus eerst de map helemaal leeghalen en dan de rest verwijderen. Een goed FTP programma kan (doet) dat ook automatisch.
Bedankt, dit heeft het probleem op gelost.quote:Op vrijdag 17 augustus 2007 19:54 schreef Xcalibur het volgende:
staat er geen hidden .htaccess in ofzo? Kijk eens of je een filter met ' -a ' kunt instellen of iets dergelijks
* devvertje pakt zijn anti-skiddie beamerquote:Op vrijdag 17 augustus 2007 20:00 schreef HuHu het volgende:
[..]
Die bijdehante kut-devvertjes altijd.
Hey... respect hè. Ik heb namelijk wél een tagjequote:Op vrijdag 17 augustus 2007 20:17 schreef devvertje het volgende:
[..]
* devvertje pakt zijn anti-skiddie beamer
had je nog wat mannetje?![]()
quote:Op vrijdag 17 augustus 2007 20:33 schreef HuHu het volgende:
Hey... respect hè. Ik heb namelijk wél een tagje.
Ik kan nergens een hele simpele en goede JS tuto vindenquote:Op zaterdag 18 augustus 2007 00:05 schreef JeRa het volgende:
@wobbel
Is dat niet gewoon een javascriptvraag? Lijkt me een kwestie van DOM manipulation
Dit is idd gewoon DOM en heeft niks met PHP noch met AJAX te maken. Google eens op createElement, setAttribute en appendChild. W3Schools heeft er ook goede tutorials over.quote:Op zaterdag 18 augustus 2007 10:12 schreef wobbel het volgende:
[..]
Ik kan nergens een hele simpele en goede JS tuto vinden
thx, dat werkt voor mijquote:Op vrijdag 17 augustus 2007 19:35 schreef HuHu het volgende:
[..]
De functie [url=php.net/strtotime]strtotime()[/url] is dan nog makkelijker.
dankje, ga ik eens ff thuisstudie plegenquote:Op zaterdag 18 augustus 2007 11:49 schreef Farenji het volgende:
[..]
Dit is idd gewoon DOM en heeft niks met PHP noch met AJAX te maken. Google eens op createElement, setAttribute en appendChild. W3Schools heeft er ook goede tutorials over.
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 | /*@cc_on @*/ /*@if (@_jscript_version >= 5) // JScript gives us Conditional compilation, we can cope with old IE versions. // and security blocked creation of the objects. try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } @end @*/ if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } function BarcodeCheck(value) { xmlhttp.open("GET", "ajax_check.php?request=barcodecheck&barcode="+value,true);//method, target, async (set always true!) xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { document.getElementById('BarcodeGeldigheid').innerHTML = xmlhttp.responseText; } } xmlhttp.send(null); } |
1 |
1 2 | <script language="javascript">insRow()</script> |
rofl! wist niet dat dat topic bestondquote:Op zondag 19 augustus 2007 20:32 schreef JeRa het volgende:
Volgens mij had je mijn hint nog niet echt begrepen
[Javascript] voor dummies (deel 6)
1 2 3 4 5 6 | $query = "SELECT MAX(ID) AS last_id FROM bestelling"; $result = mysql_query($query); $result = mysql_fetch_array($result); $laatste_id = $result[last_id]; ?> |
quote:Op maandag 20 augustus 2007 11:14 schreef Xtr3mE het volgende:
Ik heb een probleem met het ophalen van de laatste ID in de tabel. Het veld ID is autonummering en is PK.
Als ik met deze code dat doe
[ code verwijderd ]
dan krijg ik altijd op een of ander manier het een na laatste ID
Nu zal je zeggen doe er dan +1 erachter..
maar dat gaat niet omdat het kan voorkomen dat er records worden verwijderd waardoor je na ID 40 bijv 46 krijgt als volgende record.
iemand een idee?
wat ik eigenlijk met deze code wil doen is het laatste toegevogde record uit de tabel halen, dit leek mij een makkelijke oplossing. of is er een andere manier om dit te doen ?>
1 2 3 | SELECT ID AS last_id FROM bestelling ORDER BY ID DESC LIMIT 0,1 ?> |
Is je veld wel van het datatype int?quote:Op maandag 20 augustus 2007 11:28 schreef Xtr3mE het volgende:
nog steeds hetzelfde verhaal..
Lijkt mij zeer onwaarschijnlijkquote:Op maandag 20 augustus 2007 11:28 schreef Xtr3mE het volgende:
nog steeds hetzelfde verhaal..
http://php.net/addslashesquote:Op maandag 20 augustus 2007 13:04 schreef markiemark het volgende:
Ik ben een inlog systeem aan het maken met php voor een systeem waarmee gebruikerers op een veilige manier kunnen inloggen. Nu wil ik de strings die in de mysql query worden geladen beveiligen. Welke php functies kan ik hier het beste voor gebruiken? ik weet iig strip_tags()..
Kan ik ook iets met de crypt() functie om extra te beveiligen?
is dat alles? is het daarmee veilig?quote:
1 2 3 4 5 6 7 8 9 | $titel = $_POST['titel']; $content = $_POST['content']; <div id="preview"> <div id="titel"><h2>= $titel; </h2></div> <div id="content"><p>= $content; </p></div> </div> ?> |
1 2 3 4 5 6 7 8 9 | echo "<form action="" . $_SERVER['PHP_SELF'] . "?admin=paginabeheer&actie=nieuw_uitvoeren&pagina_id=$pagina_id" method="post">n"; echo "<input maxlength="50" name="titel" type="text" /> - Pagina titel<br />n"; echo "<textarea name="content" style="width:300px;" rows="15"></textarea><br />n"; echo "<input type="hidden" name="admin" value="paginabeheer" />n"; echo "<input type="hidden" name="actie" value="nieuw_uitvoeren" />n"; echo "<input type="button" onclick="javascript:popup('preview.php');" value="Voorbeeld" /> <input name="submit" type="submit" value="Pagina maken" /><br />n"; echo "</form>n"; ?> |
1 2 3 4 5 6 7 8 | $query = " INSERT INTO `fok_posts` (`UserID`,`TopicID`,`Message`) VALUES (22942,1064831,'TVP') "; mysql_query($query); ?> |
Omdat je via een javascript je preview pagina oproept zijn de gegevens uit het formulier nog niet gesubmit en dus nog niet op te roepen uit de $_POST array.quote:Op maandag 20 augustus 2007 14:03 schreef Qunix het volgende:
Ik heb een formulier en ik wil een voorbeeld zien voordat het gesubmit wordt via een button. Een voorbeeld verschijnt in een popup... Alle inhoud komt alleen niet aan in de popup. Wat doe ik fout?
Popup:
[ code verwijderd ]
formulier
[ code verwijderd ]
Bvd
Hmm...quote:Op maandag 20 augustus 2007 14:11 schreef unox_worst het volgende:
[..]
Omdat je via een javascript je preview pagina oproept zijn de gegevens uit het formulier nog niet gesubmit en dus nog niet op te roepen uit de $_POST array.
Ik denk dat dit met een javascript wel te doen is.
Hier misschien, en anders google of het javascript topicquote:Op maandag 20 augustus 2007 14:12 schreef Qunix het volgende:
[..]
Hmm...
Ik ben niet geweldig met JavaScript.
thanksquote:Op maandag 20 augustus 2007 14:22 schreef unox_worst het volgende:
[..]
Hier misschien, en anders google of het javascript topic![]()
Wil je gegevens van de gebruikers beveiligen of wil je het systeem beveiligen van de gebruiker? In elk geval is het een must er voor te zorgen dat je query wordt uitgevoerd zoals jouw bedoeling is en dat er dus geen extra, mogelijk schadelijke SQL wordt toegevoegd. Hoewel addslashes al genoemd was zou ik toch gaan voor mysql_real_escape_string bij het gebruik van externe data binnen queries, hoe knullig de naam van die functie ook mag zijnquote:Op maandag 20 augustus 2007 13:04 schreef markiemark het volgende:
Ik ben een inlog systeem aan het maken met php voor een systeem waarmee gebruikerers op een veilige manier kunnen inloggen. Nu wil ik de strings die in de mysql query worden geladen beveiligen. Welke php functies kan ik hier het beste voor gebruiken? ik weet iig strip_tags()..
Kan ik ook iets met de crypt() functie om extra te beveiligen?
Echte mannen gaan er vanuit dat hun scripts werken.quote:Op maandag 20 augustus 2007 17:45 schreef super-muffin het volgende:
[..]
Geen fouten afhandeling of iets dergelijks? Nog niet eens een die(); Erg slecht.
Er zijn een aantal dingen die niet kloppen (geeft je PHP trouwens geen foutmelding :? )quote:Op maandag 20 augustus 2007 14:03 schreef Qunix het volgende:
Ik heb een formulier en ik wil een voorbeeld zien voordat het gesubmit wordt via een button. Een voorbeeld verschijnt in een popup... Alle inhoud komt alleen niet aan in de popup. Wat doe ik fout?
Popup:
[ code verwijderd ]
formulier
[ code verwijderd ]
Bvd :)
1 2 3 4 5 6 7 8 9 | $titel = $_POST['titel']; $content = $_POST['content']; echo '<div id="preview">'; echo ' <div id="titel"><h2>=' . $titel; . ' </h2></div>'; echo ' <div id="content"><p>=' . $content; . '</p></div>'; echo '</div>'; ?> |
1 2 3 4 5 6 7 8 9 | echo '<form action="' . $_SERVER['PHP_SELF'] . '?admin=paginabeheer&actie=nieuw_uitvoeren&pagina_id=$pagina_id" method="post">'; echo '<input maxlength="50" name="titel" type="text" /> - Pagina titel<br />'; echo '<textarea name="content" style="width:300px;" rows="15"></textarea><br />'; echo '<input type="hidden" name="admin" value="paginabeheer" />'; echo '<input type="hidden" name="actie" value="nieuw_uitvoeren" />'; echo '<input type="button" onclick="javascript:popup(\'preview.php\');" value="Voorbeeld" /> <input name="submit" type="submit" value="Pagina maken" /><br />'; echo '</form>'; ?> |
quote:Op maandag 20 augustus 2007 19:41 schreef Geqxon het volgende:
[..]
Echte mannen gaan er vanuit dat hun scripts werken.
FOK! doet af en toe rare dingen met backslashes, dus die kunnen verdwijnen.quote:Op maandag 20 augustus 2007 20:46 schreef w3bm4st3r het volgende:
Ik neem aan dat je met de 'n' aan het einde van elke regel een '\n' bedoelt?
(stripslashes() vindt \n niet leuk (met één slash))
quote:Op maandag 20 augustus 2007 20:42 schreef w3bm4st3r het volgende:
[..]
Er zijn een aantal dingen die niet kloppen (geeft je PHP trouwens geen foutmelding)
De volgende code zal allicht beter werken, je kunt html niet zomaar tussen PHP tags zetten zonder echo of print oid te gebruiken.
Popup:
[ code verwijderd ]
Het andere gedeelte code moet ook aangepast worden, je gebruikt hetzelfde aanhalingsteken voor html en PHP.
Formulier:
[ code verwijderd ]
Ik neem aan dat je met de 'n' aan het einde van elke regel een 'n' bedoelt?
Inderdaad. Verder is mijn code goed hoorquote:Op maandag 20 augustus 2007 21:16 schreef HuHu het volgende:
[..]
FOK! doet af en toe rare dingen met backslashes, dus die kunnen verdwijnen.
1e pagina van google resultaten.quote:Op dinsdag 21 augustus 2007 11:33 schreef hornage het volgende:
Mensen,
Hier ff probleempje. Ik wil rtf files inlezen met php en dan alleen de plain tekst eruit halen. Ik kan wel veel dingen vinden over rtf en php, maar die zijn vooral gericht op het genereren van rtf bestanden met php.
Weet iemand een site of class die de plaintext uit een rtf kan inlezen met php?
Unsorted-list. In Word.quote:Op dinsdag 21 augustus 2007 11:56 schreef JortK het volgende:
Wat gebruiken jullie trouwens bij je projecten om je bugs en todo zaken bij te houden?
Ik merk aan mezelf dat ik hier namelijk nogal moeite mee heb
Bugzillaquote:Op dinsdag 21 augustus 2007 11:56 schreef JortK het volgende:
Wat gebruiken jullie trouwens bij je projecten om je bugs en todo zaken bij te houden?
Ik merk aan mezelf dat ik hier namelijk nogal moeite mee heb
Bugzillaquote:Op dinsdag 21 augustus 2007 11:56 schreef JortK het volgende:
Wat gebruiken jullie trouwens bij je projecten om je bugs en todo zaken bij te houden?
Ik merk aan mezelf dat ik hier namelijk nogal moeite mee heb
Dan kan ik je een PDF-class aanraden.quote:Op dinsdag 21 augustus 2007 12:15 schreef Xtr3mE het volgende:
Is het mogelijk met PHP om een pagina af te drukken waarbij alles al vooringesteld is zodra je op de print knop/link drukt en dus gelijk gaat printen (op de standaard printer).
Van belang is dat de pagina liggend is en er géén kop en voettexten zijn..
ik neem aan dat die class een PDF genereerd..? Maar als ik een PDF wil afdrukken dan moet je alsnog instellingen e.d. opgeven toch? Of zit ik totaal verkeerd?quote:Op dinsdag 21 augustus 2007 12:17 schreef Geqxon het volgende:
[..]
Dan kan ik je een PDF-class aanraden.
Je kunt toch ook een stel standaard instellingen meegeven aan een PDF printerquote:Op dinsdag 21 augustus 2007 12:24 schreef Xtr3mE het volgende:
[..]
ik neem aan dat die class een PDF genereerd..? Maar als ik een PDF wil afdrukken dan moet je alsnog instellingen e.d. opgeven toch? Of zit ik totaal verkeerd?
Niet dat ik niet dankbaar ben, maar waar zie jij op jouw gegeven link code of een class staan waarmee je plaintext uit een rtf kan halen?quote:Op dinsdag 21 augustus 2007 11:47 schreef unox_worst het volgende:
[..]
1e pagina van google resultaten.
Er staat idd geen class, maar met de informatie op die pagina kun je wel het een en ander met rtf documenten doen.quote:Op dinsdag 21 augustus 2007 12:32 schreef hornage het volgende:
[..]
Niet dat ik niet dankbaar ben, maar waar zie jij op jouw gegeven link code of een class staan waarmee je plaintext uit een rtf kan halen?
1 2 3 4 5 | b [MESSAGE] b0par b [MESSAGE] b0par b [MESSAGE] b0par } |
Iets simpels als een liggende pagina instellen is in je browser niet mogelijk, dit wordt domweg niet ondersteuntquote:Op dinsdag 21 augustus 2007 12:15 schreef Xtr3mE het volgende:
Is het mogelijk met PHP om een pagina af te drukken waarbij alles al vooringesteld is zodra je op de print knop/link drukt en dus gelijk gaat printen (op de standaard printer).
Van belang is dat de pagina liggend is en er géén kop en voettexten zijn..
Precies, zodra CSS3 word ondersteund is het mogelijk....quote:Op dinsdag 21 augustus 2007 13:50 schreef Xcalibur het volgende:
[..]
Iets simpels als een liggende pagina instellen is in je browser niet mogelijk, dit wordt domweg niet ondersteunt
1 2 3 4 5 6 | SELECT (SELECT COUNT(*) FROM posts WHERE UserID = u.ID) AS Postcount, (u.Regdate / Postcount) AS AvgPostcount FROM Users AS U ?> |
Je users een post count veld geven en die updaten als er iets met zijn/haar posts veranderd? En dan met een join de postcount daar uit trekken?quote:Op woensdag 22 augustus 2007 10:08 schreef Geqxon het volgende:
Aangezien ik hier al langer mee vecht:
[ code verwijderd ]
Dit werkt dus niet. Zodra ik de Regdate door het Postcount deel, weet hij spontaan niet meer wat Postcount ook alweer deed. Iets zegt mij dat dit heeft te maken met de volgorde van afhandelen die MySQL gebruikt, maar heeft iemand tips hoe ik "Postcount" in mijn verdere query kan herbruiken, zonder de subquery telkens te moeten gebruiken?
Ja lijkt mij wel, misschien dat JortK het weet die is een stuk beter met SQLquote:Op woensdag 22 augustus 2007 10:27 schreef Geqxon het volgende:
In dit geval een optie (al heb ik liever geen berekende data in mijn tabel).... maar dit is slechts een voorbeeld. Ik zoek dus een manier om een zojuist berekend veld in een ander deel van mijn query te gebruiken. Kan ik hiervoor een variabele oid gebruiken?
1 2 3 4 5 | SELECT (u.Regdate / a.postcount) AS AvgPostcount FROM Users u, (SELECT COUNT(*) postcount FROM posts WHERE UserID = u.ID) a ?> |
1 2 3 4 5 | SELECT (a * b * c) AS result_one (result_one * d) AS result_two ?> |
1 2 3 4 5 | SELECT (a * b * c) AS result_one ((a * b * c) * d) AS result_two ?> |
Maar waarom als je velden meerdere keren wil gebruiken die je zelf aanmaakt, zet je die subquery niet in je FROM, zodat je hem in je hele query als tabel kunt gebruiken?quote:Op woensdag 22 augustus 2007 11:18 schreef Geqxon het volgende:
Om een beter geschikt voorbeeld te pakken:
[ code verwijderd ]
In dit geval zal hij zeggen dat er geen colum genaamd 'result_one' bestaat, en zal ik het dus op moeten lossen als:
[ code verwijderd ]
Nu is dit een klein voorbeeld, maar dit word erg snelzeer lelijk..
Ps: Jort, idee nummer twee waar ik het gister over had is bijna klaar. Ik stuur je nog wel een PM met de verdere query's / html-output
Subquery? Excuse me for my stupidity, maar nu volg ik het niet meer helemaal.quote:Op woensdag 22 augustus 2007 11:26 schreef JortK het volgende:
[..]
Maar waarom als je velden meerdere keren wil gebruiken die je zelf aanmaakt, zet je die subquery niet in je FROM, zodat je hem in je hele query als tabel kunt gebruiken?
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.Werkt!![]()
quote:Op woensdag 22 augustus 2007 11:46 schreef Geqxon het volgende:
[..]
Subquery? Excuse me for my stupidity, maar nu volg ik het niet meer helemaal.
Ps:Waar blijft de PM danSPOILEROm 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.Werkt!![]()
1 2 3 4 5 6 7 8 9 | setcookie("cookname", "", time()-70*60*24*100, "/"); setcookie("cookpass", "", time()-70*60*24*100, "/"); if(isset($_SESSION['username']) || isset($_SESSION['password'])){ unset($_SESSION['username']); unset($_SESSION['password']); $_SESSION = array(); session_destroy(); } |
quote:Op woensdag 22 augustus 2007 21:54 schreef Dzy het volgende:
Oh en nog een vraagje, hoe zorg ik dat bepaalde pagina's altijd refreshen en niet uit het cache laden? :)
Volgens mij worden sessie-cookies verwijderd zodra de browser wordt afgesloten. Of doe je dat ook?quote:Op woensdag 22 augustus 2007 21:44 schreef Dzy het volgende:
Ik heb een vraagje, ik heb nu een werkend login script, met een remember functie met cookies en zonder met alleen sessions, en dat werkt allemaal prima maar er is iets mis met de logout functie, hij verwijdert namelijk de cookies niet..
hier is de logout code:
[ code verwijderd ]
Wat doe ik verkeerd? Als ik de remember functie niet gebruik (dus alleen de sessies) wil hij wel gewoon uitloggen.
Heeft je cookie dezelfde tijdsduur als de originele?quote:Op woensdag 22 augustus 2007 21:44 schreef Dzy het volgende:
Ik heb een vraagje, ik heb nu een werkend login script, met een remember functie met cookies en zonder met alleen sessions, en dat werkt allemaal prima maar er is iets mis met de logout functie, hij verwijdert namelijk de cookies niet..
hier is de logout code:
[ code verwijderd ]
Wat doe ik verkeerd? Als ik de remember functie niet gebruik (dus alleen de sessies) wil hij wel gewoon uitloggen.
1 2 | setcookie("cookpass", $_SESSION['password'], time()+60*60*24*100, "/"); |
Een cookie setten en dan een header location: werkt ook prima dan word je cookie ook gezetquote:Op donderdag 23 augustus 2007 08:03 schreef Xcalibur het volgende:
Volgens mij moet je bij het zetten van een cookie altijd content outputten naar de browser, omdat hij em anders niet zet. Ik vermoed dat het bij het weghalen hetzelfde is.... dus vandaar mijn vraag
3e optie je maakt een tabel met stappen, een tabel met users en een tabel waarom je een user_id en een step_id invoegt voor iedere stap die een user heeft gedaan. Voordeel hier van is dat je heel makkelijk nieuwe stappen kan toevoegen. Nadeel is dat je queries wat ingewikkelder wordenquote:Op donderdag 23 augustus 2007 08:07 schreef Xcalibur het volgende:
Even een theoretisch vraagje voor de afwisseling
Ik ben bezig met het ontwikkelen van een inschrijfsysteem, waarbij ik van iedere inschrijving moet weten hoe ver deze is. De deelnemer moet in een aantal stappen informatie invoeren, de inschrijving wordt al dan niet goedgekeurd, en daarna ontvangt de deelnemer een aantal keer informatie van de organisatie.
Waar ik mee zit is de manier waarop ik dit bij ga houden. Volgens mij heb ik twee opties:
- Veld 'voortgang', numeriek, waarbij ik iedere stap een nummer geef, en deze steeds met 1 ophoog.
- Aparte velden voor iedere stap, enum, waarbij ik iedere stap true of false geef.
Voordeel van 1 veld is dat je direct kunt zien waar je bent, nadeel is dat je later geen stap kunt toevoegen, of de volgorde veranderen zonder een hoop gedoe en aanpassingen.
Voordeel van aparte velden is dat je extra stappen kunt toevoegen zonder problemen, maar dat je een x-aantal velden moet gaan checken om te weten bij welke stap de deelnemer is.
Suggesties?
Daarmee voorkom je SQL injections tot op zekere hoogtequote:Op maandag 20 augustus 2007 13:36 schreef markiemark het volgende:
[..]
is dat alles? is het daarmee veilig?
Beste keuzequote:Op donderdag 23 augustus 2007 08:11 schreef WyriHaximus het volgende:
[..]
3e optie je maakt een tabel met stappen, een tabel met users en een tabel waarom je een user_id en een step_id invoegt voor iedere stap die een user heeft gedaan. Voordeel hier van is dat je heel makkelijk nieuwe stappen kan toevoegen. Nadeel is dat je queries wat ingewikkelder worden.
Het voordeel is ook dat je exact kunt zien wie er op welk tijdstip een bepaalde stap deed. Klinkt control-freakish, maar zelf plak ik aan elke nuttige tabel een DateAdded en DateUpdated veld.quote:Op donderdag 23 augustus 2007 08:11 schreef WyriHaximus het volgende:
[..]
3e optie je maakt een tabel met stappen, een tabel met users en een tabel waarom je een user_id en een step_id invoegt voor iedere stap die een user heeft gedaan. Voordeel hier van is dat je heel makkelijk nieuwe stappen kan toevoegen. Nadeel is dat je queries wat ingewikkelder worden.
De derde optie is helemaal niet zo'n slecht idee iddquote:Op donderdag 23 augustus 2007 09:23 schreef Geqxon het volgende:
Het voordeel is ook dat je exact kunt zien wie er op welk tijdstip een bepaalde stap deed. Klinkt control-freakish, maar zelf plak ik aan elke nuttige tabel een DateAdded en DateUpdated veld.
1 2 3 4 5 6 | if ($zoek_klantnummer != "") { $query = "SELECT * FROM reservering WHERE Klantnummer = '$zoek_klantnummer'"; $result = mysql_query($query) or die ("Kan opdracht niet uitvoeren"); ?> |
Dan doe je iets fout met het fetchen van je queryquote:Op vrijdag 24 augustus 2007 14:59 schreef Xtr3mE het volgende:
een snel vraagje:
waarom kan ik met deze SQL query niet meer dan 1 resultaat uitlezen uit de tabel:
[ code verwijderd ]
Er zijn nu 2 records in de tabel (in de toekomst komen hier wel meer bij) die hetzelfde klantnummer hebben.
Als uitvoer krijg ik altijd maar 1 te zien en terwijl ik die in de SQL van bijv. phpMyAdmin doe dan krijg ik ze wel alle 2...
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 | echo "<table width="80%" cellpadding="0" cellspacing="2">"; echo "<tr><td colspan='200'></td></tr>"; echo "<tr> <td><strong>Reserveringsnummer</strong></td> <td><strong>Klantnummer</strong></td> <td><strong>Klantnaam</strong></td> <td><strong>Huurdatum</strong></td> <td><strong>tot</strong></td> <tr><td colspan='40'><hr></td></tr>"; while (@$row = mysql_fetch_array($result)) { extract($row); ... echo "<tr> <td><a href='wijzigen.php?reserveringsnummer=" . urlencode($Reserveringsnummer) ."'>$Reserveringsnummer</a></td> <td>$Klantnummer</td> <td>$Klantnaam</td> <td>$Datum_begin</td> <td>$Datum_eind</td> <td>$Postcode</td> <td>$Plaats</td> </tr>n"; } echo "</table>n"; $gevonden = ""; if ($Klantnummer == "") { $gevonden = "Geen reserveringen gevonden die aan de zoekcriteria voldoen"; } } ?> |
Probeer dit eensquote:Op vrijdag 24 augustus 2007 15:03 schreef Xtr3mE het volgende:
oke hier dan de rest van de code:
[ code verwijderd ]
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 | echo "<table width="80%" cellpadding="0" cellspacing="2">"; echo "<tr><td colspan='200'></td></tr>"; echo "<tr> <td><strong>Reserveringsnummer</strong></td> <td><strong>Klantnummer</strong></td> <td><strong>Klantnaam</strong></td> <td><strong>Huurdatum</strong></td> <td><strong>tot</strong></td> <tr><td colspan='40'><hr></td></tr>"; while ($row = mysql_fetch_assoc($result)) { extract($row); ... echo "<tr> <td><a href='wijzigen.php?reserveringsnummer=" . urlencode($row['Reserveringsnummer']) ."'>$row['Reserveringsnummer']</a></td> <td>$row['Klantnummer']</td> <td>$row['Klantnaam']</td> <td>$row['Datum_begin']</td> <td>$row['Datum_eind']</td> <td>$row['Postcode']</td> <td>$row['Plaats']</td> </tr>n"; } echo "</table>n"; $gevonden = ""; if ($Klantnummer == "") { $gevonden = "Geen reserveringen gevonden die aan de zoekcriteria voldoen"; } } ?> |
1 2 3 4 5 6 7 | //klantnaam uit andere tabel halen $query = "SELECT Klantnaam FROM klant WHERE Klantnummer = '$Klantnummer'"; $result = mysql_query($query) or die ("Kan opdracht niet uitvoeren"); $Klantnaam = mysql_result($result, 0, "Klantnaam"); ?> |
Dat werkt, dank je wel.quote:Op vrijdag 24 augustus 2007 21:01 schreef Farenji het volgende:
select * from artikelen a inner join tags t on a.ID = t.artikelID where a.ID = ? and t.tag = ?
oid
joins;quote:Op vrijdag 24 augustus 2007 22:48 schreef -Orion- het volgende:
Ik ben bezig met een forum, en heb een tabel 'topics' met de volgende velden:
"topic_id, topic_titel, forum_id, user_id, topic_views, topic_status, topic_type, last_post"
last_post geeft het id weer van de laatste post, waarvan hij dan weer het userid en tijd ophaalt. Maar ik heb dan 2x een user_id, van de topicstarter, en van de last_post.
Hoe kan ik het oplossen dat ik beide kan krijgen met 1 query!?![]()
MySQL heeft ook een en enorm handige ON DUPLICATE functionaliteit, misschien biedt dat wat je nodig hebtquote:Op zondag 26 augustus 2007 16:42 schreef qu63 het volgende:
ah hier!
Hoi!
meteen een vraagje,
je kan met MySQL ook met IF/ELSE/WHEN enzo werken, dus ik ga dat leuk proberen, alleen nu werkt het dus niet...
Ik heb 3 rijen, 1) ID 2) mms_ID 3) IP
nu is het de bedoeling dat ik controleer of het IP-adres al in de database staat, en zo niet, deze toevoegd.
Ik kan dat wel doen dmv php en mysql (dus uit de database halen, controleren, en dan er weer in), maar dit leek me sneller. Iemand tips over hoe ik het moet doen
1 2 3 | header("HTTP/1.0 404 Not Found"); ?> |
je bedoelt dus:quote:Op zondag 26 augustus 2007 16:49 schreef Xcalibur het volgende:
kan je dat niet gewoon met een REPLACE doen, ipv INSERT?
Komt het wel op neer jaquote:
Moet je alleen je IP-adres uniek maken, maar dat is net het punt volgens mijquote:REPLACE works exactly like INSERT, except that if an old row in the table has the same value as a new row for a PRIMARY KEY or a UNIQUE index, the old row is deleted before the new row is inserted.
1 2 3 4 5 6 | header ("content-type: image/jpeg"); $signature = imagecreatefromjpeg ( "np_1.jpg" ); imagejpeg ( $signature, "", 100 ); imagedestroy ( $signature ); ?> |
1 2 | RewriteRule index/([^/]*)/(.*)$ /index.php?page=$1&wat=$2 |
quote:Op maandag 27 augustus 2007 12:37 schreef Swetsenegger het volgende:
Hoe kan ik mssql fouten onderdrukken in php?
1 |
Idd je moet wel goed opletten als je het gebruikt aangezien o.a. IE (met JS vooral) debiel is en veel bots ook (die snappen de tag helamaal niet) (let wel op dat de bots waar hem om gaat (google, yahoo, MS etc) geen problemen hebben, het gaat vooral om hack/spam etc bots).quote:Op zondag 26 augustus 2007 23:30 schreef wobbel het volgende:
je kan een base tag gebruiken
<base href="http://forum.fok.nl/" />
bijv.... alleen dat werkt niet altijd lekker (ik gebruik zelf ook index.php/nieuws/35) dus ik heb overal en altijd het volledig pad staan (dmv een #variable aangezien ik een template parser gebruik)
Ja dat word lastig. Kan je geen test database regelen dan?quote:Op maandag 27 augustus 2007 12:51 schreef Swetsenegger het volgende:
[..]
ik weet niet of dat werktKan helaas lastig testen in een live MSSQL database.
Niet op korte termijn.quote:Op maandag 27 augustus 2007 12:53 schreef WyriHaximus het volgende:
[..]
Ja dat word lastig. Kan je geen test database regelen dan?
probeer dit eens....quote:Op zondag 26 augustus 2007 20:06 schreef ralfie het volgende:
ben een beetje aan het experimenteren met htaccess en mod_rewrite, maar kom even ergens niet uit
ik heb de volgende url
http://localhost/index.php?page=news&wat=anders
dit wil ik omzetten naar
http://localhost/index/news/anders
lukt me op zich wel met:
[ code verwijderd ]
Maar wanneer ik dat doe werken alle relatieve links op die pagina (plaatjes, css, etc) niet meer. (gaat om links als 'css/base.css' en 'img/test.jpg' op die pagina) Kan dit in htaccess gefixed worden zonder al die relatieve links te moeten aanpassen? Zie ik iets doms over het hoofd?
1 2 | RewriteBase / |
Een @-teken voor een functie onderdrukt alle foutmeldingen tot en met het niveau van een warning; daarboven (zoals fatal errors) komen er gewoon door. Het is verder niet zo dat het @-teken de functionaliteit van je script aanpast, dus je kunt het gewoon proberen (alhoewel het dus in een liveomgeving niet echt wenselijk is).quote:Op maandag 27 augustus 2007 12:51 schreef Swetsenegger het volgende:
[..]
ik weet niet of dat werktKan helaas lastig testen in een live MSSQL database.
Ik heb met 100 als kwaliteit ook wel eens rare problemen gehad. Vervangen door 99 deed de trick.quote:Op zondag 26 augustus 2007 17:50 schreef wobbel het volgende:
Waarom levert het voglende script een plaatje op met kut brakke kwaliteit?
[ code verwijderd ]
Ik ga het gewoon proberen. Het is toch een database die alleen ikzelf gebruikquote:Op maandag 27 augustus 2007 13:31 schreef JeRa het volgende:
[..]
Een @-teken voor een functie onderdrukt alle foutmeldingen tot en met het niveau van een warning; daarboven (zoals fatal errors) komen er gewoon door. Het is verder niet zo dat het @-teken de functionaliteit van je script aanpast, dus je kunt het gewoon proberen (alhoewel het dus in een liveomgeving niet echt wenselijk is).
Je kunt het beter anders benaderen; je kunt de result set van je eerste query cachen (opslaan in een array bijvoorbeeld) en die bij het verwerken van de result set van je tweede query benaderenquote:Op dinsdag 28 augustus 2007 11:54 schreef Swetsenegger het volgende:
[..]
Andere vraag. Kan ik in een whilelus van mijn query results eenvoudig kijken wat de resultaten zijn in de volgende loop?
Nee, het gat niet om een 2e query.quote:Op dinsdag 28 augustus 2007 17:11 schreef JeRa het volgende:
[..]
Je kunt het beter anders benaderen; je kunt de result set van je eerste query cachen (opslaan in een array bijvoorbeeld) en die bij het verwerken van de result set van je tweede query benaderen
Misschien denk ik iets te simpel, maar toch een poging:quote:Op dinsdag 28 augustus 2007 18:09 schreef Swetsenegger het volgende:
[..]
Nee, het gat niet om een 2e query.
De resultaten van een query worden in een while lus uitgelezen, record voor record.
En als die whilelus nu bij record 11 is, wil eigenlijk weten wat er in record 12 staat.
Dit ivm presentatie.
Mjah, zou kunnen werken inderdaad, maar ik vind 'm niet chiquequote:Op dinsdag 28 augustus 2007 18:24 schreef Geqxon het volgende:
[..]
Misschien denk ik iets te simpel, maar toch een poging:
-Alles in een numeric array
-Met een "for ( $i = 0, $i < sizeof($array), $i ++) " alles uitlezen
-$array[$i + 1] voor de volgende rij.
?
1 2 3 4 5 6 7 8 9 10 | while (var $ref = mysql_fetch_assoc($result)) { var $veld1 = $ref["veld1"] // etc if ($counter == 11) { var $ref2 = mysql_fetchrow($result); var $veld1 = $ref2["veld1"] // etc } } |
Goed idee om alles in één keer mee te nemen. Werkt zoiets als het volgende voor je?quote:Op dinsdag 28 augustus 2007 18:09 schreef Swetsenegger het volgende:
[..]
Nee, het gat niet om een 2e query.
De resultaten van een query worden in een while lus uitgelezen, record voor record.
En als die whilelus nu bij record 11 is, wil eigenlijk weten wat er in record 12 staat.
Dit ivm presentatie.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $resultSet = ... // definieer de eerste rij $row = mysql_fetch_assoc($resultSet); // zolang de meest recent gelezen rij geldig is while($row) { // haal de volgende rij op $nextRow = mysql_fetch_assoc($resultSet); // als $nextRow niet false is, is $row niet de laatste rij if($nextRow) { // vergelijk $row tegen $nextRow } else { // doe eventueel iets leuks met $row als laatste rij } // zet de huidige rij op de volgende rij om de loop compleet te maken $row = $nextRow; } |
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 | $ii = 0; while($row = mysql_fetch_array($result)){ $url() = split("/", $row("referer")); $site = $url(1) . $url(2) . $url(3) . $url(4); $i = 1 ; $getelt = 0 ; while($i<=&ii){ if ($siteteller($i,0) = $site){ $siteteller($i,1) = $siteteller($i,1) + 1;} $getelt = 1; $i = $i + 1; } if ($getelt = 0){ $ii = $ii + 1; $siteteller($ii,0) = $site; $siteteller($ii,1) = 1; } } $i = 1 while ($i <= $ii){ echo $siteteller($i,0); echo $siteteller($i,1); } |
line 25 denk ik.... geen puntkomma op line 24quote:Op donderdag 30 augustus 2007 13:14 schreef BunnyHunter het volgende:
[ code verwijderd ]
de foutcode:
Parse error: syntax error, unexpected T_WHILE in /home/sites/site3850/web/bestanden/sites.php on line 35
in dit geval line 3
wat moet de code doen::
Ik split een url string, die ik weer aan elkaar koppel tot ik aleen een domein string over hou, daarna controleer ik of de string al eens eerder is voorgekomen en als dat niet zo is maak ik een nieuwe teller aan.
ik ben gewend om ASP of VB te programeren, en ik word een beetje gek van PHP om eerlijk te zijn![]()
Voor zover ik kan zien staan de accolades goed, alleen een beetje onoverzichtelijkquote:Op donderdag 30 augustus 2007 13:30 schreef unox_worst het volgende:
Regel 24 mis je een punt-komma, voor de rest zie ik in dit stukje code geen fouten.
Edit:
Je mist helemaal onderaan idd een accolade.
Daar moet == staan ipv =quote:Op donderdag 30 augustus 2007 13:36 schreef unox_worst het volgende:
Die if statement of regel 12 klopt volgens mij ook niet helemaal, zal straks is kijken wat ook alweer precies de bedoeling was enzo.
Bevestigd, vijf openingsaccolades en vijf sluitingsaccolades.quote:Op donderdag 30 augustus 2007 13:36 schreef Dreammaster het volgende:
[..]
Voor zover ik kan zien staan de accolades goed, alleen een beetje onoverzichtelijk
Ik heb hier een groot deel van de kvk-database geïmporteerd, dat waren 780.000 records ongeveer.quote:Op donderdag 30 augustus 2007 15:47 schreef markiemark het volgende:
Even een heel simpel vraagje... Hoeveel rijen kan een MySQL tabel maximaal aan, wat is aan te raden om als maximum te houden?
Of is het afhankelijk van de grootte van de schijf in de server en de prestaties die deze kan leveren?
http://dev.mysql.com/doc/refman/5.0/en/features.htmlquote:Op donderdag 30 augustus 2007 15:47 schreef markiemark het volgende:
Even een heel simpel vraagje... Hoeveel rijen kan een MySQL tabel maximaal aan, wat is aan te raden om als maximum te houden?
Of is het afhankelijk van de grootte van de schijf in de server en de prestaties die deze kan leveren?
quote:Handles large databases. We use MySQL Server with databases that contain 50 million records. We also know of users who use MySQL Server with 60,000 tables and about 5,000,000,000 rows.
Ja klopt maar dat zijn foutjes waar ik achterkom met testen normaal.quote:Op donderdag 30 augustus 2007 13:41 schreef Dreammaster het volgende:
en de laatste while loop is infinite
met 60.000 tabellen moet je je database echt eens op orde brengenquote:Op donderdag 30 augustus 2007 15:49 schreef Geqxon het volgende:
[..]
http://dev.mysql.com/doc/refman/5.0/en/features.html
[..]
Hetzelfde met 3500 kolommen op een tabel.quote:Op donderdag 30 augustus 2007 16:00 schreef Catch22- het volgende:
[..]
met 60.000 tabellen moet je je database echt eens op orde brengen
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 | $ii = 0; while($row = mysql_fetch_array($result)){ $url = split("/", $row("referer")); $site = $url(1) . $url(2) . $url(3) . $url(4); $i = 1 ; $getelt = 0 ; while($i<=$ii){ if ($siteteller($i,0) == $site){ $siteteller($i,1) = $siteteller($i,1) + 1; $getelt = 1; } $i = $i + 1; } if ($getelt = 0){ $ii = $ii + 1; $siteteller($ii,0) = $site; $siteteller($ii,1) = 1; } } $i = 1; while ($i <= $ii){ echo $siteteller($i,0); echo $siteteller($i,1); $i = $i + 1; } |
Ik denk dat dat meer problemen geeft dan het oplost omdat die data dan niet meer toegankelijk is. Ik werk met databases waar soms tabellen met miljoenen records in zitten, en dat is goed te doen. Alleen doorzoeken kan lang duren, afhankelijk wat je zoekt; tabellen met miljoenen rows met elkaar joinen, daar staat ie meestal wel even op te stampen. Je kan de tijd verkorten door goed db ontwerp en slim van mysql indices gebruik te maken maar voor de applicaties waar ik mee werk is dat nog niet genoeg. De oplossing die gebruikt wordt is het maken van een aparte index tabel, een zgn datamart, waar je de data bijelkaar zet die je snel boven water wil toveren. Die moet je dan wel bijv elke dag opnieuw genereren.quote:Op donderdag 30 augustus 2007 15:52 schreef markiemark het volgende:
In principe kan ik er dus echt wel best wat in kwijt.. hehe
Het gaat mij om de opslag van tijden met daarbij behorende info, een soort logboek. Er komen waarschijnlijk best wel grote aantallen records in de tabel 'log' te staan. Is het verstandig om na bijv. 1 miljoen (ik noem maar een aantal..) records de data te kopieren naar een andere tabel? Of naar een andere database eventueel?
Dit ziet er uit als een slechte poging om een asp scriptje om te zetten naar php.quote:Op donderdag 30 augustus 2007 16:40 schreef BunnyHunter het volgende:
Ik heb dus alle fouten die aangegeven waren eruit gehaalt maar hij geeft me dus nu de foutmelding
Parse error: syntax error, unexpected '=' in /home/sites/site3850/web/bestanden/sites.php on line 45
dat is bij dit stukje code op 14 in dit bericht
$siteteller($i,1) = $siteteller($i,1) + 1;
ik denk zelf dat hij het niet ziet als een integer, ik kan het aleen niet testen omdat ik zo snel geen convert functie vind daarvoor.
[ code verwijderd ]
daar ben ik dus mee bezig.. dus als je me vertelt wat ik fout doequote:Op donderdag 30 augustus 2007 18:34 schreef SuperRembo het volgende:
[..]
Dit ziet er uit als een slechte poging om een asp scriptje om te zetten naar php.
Of leer php òf zoek een andere hobby.
Begin eens bij w3schools.com. De fouten die hier in zitten zijn echt te basic om uit te leggen.quote:Op donderdag 30 augustus 2007 18:43 schreef BunnyHunter het volgende:
daar ben ik dus mee bezig.. dus als je me vertelt wat ik fout doeanders
![]()
ik zoek alles op op w3schools maargoed ik kloot wel wat verder aanquote:Op donderdag 30 augustus 2007 19:17 schreef SuperRembo het volgende:
[..]
Begin eens bij w3schools.com. De fouten die hier in zitten zijn echt te basic om uit te leggen.
ja kijk daar had ik het net dus over met iemand in de kantine.. ik dacht dus dat die array's gewoon net zo werkte als in asp en etc. maar hij werkt dus zoals de session array variabalen werken bij asp.quote:Op donderdag 30 augustus 2007 21:19 schreef SuperRembo het volgende:
Het grootste probleem is dat $siteteller een array van array's zou moeten zijn. Voor php ziet $siteteller($i,1) er uit als functie aanroep, niet als element in een array. En daar kan je geen waarde aan toe kennen met $siteteller($i,1) = 1, vandaar de syntax error "unexpected '=' ".
alleen het begin van het bestand dus... Hoe kan ik dit verhelpen?quote:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xml:lang="en-us" lang="en-us" xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="pics-label" content="(pics-1.1 "http://www.icra.org/ratingsv02.html" l gen true for "http://www.msn.com" r (cz 1 lz 1 nz 1 oz 1 vz 1) gen true for "http://msn.com" r (cz 1 lz 1 nz 1 oz 1 vz 1) gen true for "http://stb.msn.com" r (cz 1 lz 1 nz 1 oz 1 vz 1) gen true for "http://stc.msn.com" r (cz 1 lz 1 nz 1 oz 1 vz 1) gen true for "http://stj.msn.com" r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://www.msn.com" r (n 0 s 0 v 0 l 0)gen true for "http://msn.com" r (n 0 s 0 v 0 l 0)gen true for "http://stb.msn.com" r (n 0 s 0 v 0 l 0) gen true for "http://stc.msn.com" r (n 0 s 0 v 0 l 0) gen true for "http://stj.msn.com" r (n 0 s 0 v 0 l 0))" /><link rel="SHORTCUT ICON" href="http://hp.msn.com/global/c/hpv10/favicon.ico" type="image/x-icon" /><meta name="ROBOTS" content="NOODP" /><link rel="search" type="application/opensearchdescription+xml" title="Live Search" href="http://www.live.com/live/search/search.xml" /><meta name="description" content="MSN's all-in-one Internet portal, the home of Hotmail, MSN Messenger, MSNBC News, Fox Sports, Slate Magazine and more information you care about" /><title>MSN.com</title><style type="text/css">@import url("http://stc.msn.com/br/hp/en-us/css/31/ushpw.css");@import url("http://stc.msn.com/br/hp/en-us/css/31/ovrN.css");</style><!--[if IE]><style type="text/css">@import url("http://stc.msn.com/br/
de 8192 veranderen zeker...quote:Op vrijdag 31 augustus 2007 13:27 schreef PiRANiA het volgende:
$handle = fopen ($row['href'], "r"); #Open pagina
$datavar="ERROR";
$datavar = fread ($handle, 8192);
if($datavar=="ERROR"){ #Er is niks opgehaald: break
mysql_query("DELETE FROM `ahref` WHERE `href`='".$row['href']."' ");
break;
}
1 2 3 4 5 6 7 8 9 | // http://php.net/fread $handle = fopen("http://www.example.com/", "rb"); $contents = ''; while (!feof($handle)) { $contents .= fread($handle, 8192); } fclose($handle); ?> |
Alleen is de filesize een beetje lastig bij een webpaginaquote:Op vrijdag 31 augustus 2007 20:24 schreef Farenji het volgende:
uit de php documentatie:
[ code verwijderd ]
Allicht de "Content-length" uit de HTTP-headers halen?quote:Op vrijdag 31 augustus 2007 20:34 schreef SuperRembo het volgende:
[..]
Alleen is de filesize een beetje lastig bij een webpagina
1 2 3 4 5 6 7 8 9 10 11 12 | // sessies vernietigen session_start(); session_destroy(); session_unset(); // cookies verwijderen setcookie("email", "", 0); setcookie("password", "", 0); header("Location: ../index.php"); ?> |
Je zal altijd met een beperkte timeout te maken houden en files van een paar mb duren gewoon lang om te uploaden, dus krijg je met de timeout van doen, als je refreshed ben je je post data kwijt...quote:Op zondag 2 september 2007 13:19 schreef Chivu het volgende:
Ik wil via een formulier meerdere files (1 tot in de praktijk 10) uploaden. Met kleine bestanden gaat dit prima. Met een 10-tal 'grote' bestanden (foto's uit een digitale camera, 1 a 2mb per stuk) duurt dit waarschijnlijk te lang en krijg ik na een (beperkt aantal? 15-20) seconden de originele uploadpagina weer te zien. De $_POST wordt dus niet meegegeven, anders kreeg ik de resultatenpagina te zien.
Nu heb ik me rot gezocht op GoT of het mogelijk is om tussen elke uploadactie de pagina te refreshen.
1. Upload formulier met 10 input type=file elementen
2. Upload $_FILES[0]
3. Refresh
4. Upload $_FILES[1]
5. Refresh
6. Upload $_FILES[2]
7. Refresh
8. Upload $_FILES[3]
9. etc. etc.
10. Klaar, toon de resultatenpagina
Hiervoor moeten de $_POST en $_FILES variabelen dus keer op keer doorgegeven worden bij de refresh, inclusief een teller-variabele om telkens de volgende $_FILES[$teller] af te lopen.
Is dit mogelijk en hoe doe ik dit precies? Ik wil liever niet afhankelijk zijn van php.ini settings, zodat onafhankelijk van de server de website gewoon werkt met de standaard PHP instellingen.
je kunt ook gewoon de max_execution_time omhoog gooienquote:Op zondag 2 september 2007 13:19 schreef Chivu het volgende:
Ik wil via een formulier meerdere files (1 tot in de praktijk 10) uploaden. Met kleine bestanden gaat dit prima. Met een 10-tal 'grote' bestanden (foto's uit een digitale camera, 1 a 2mb per stuk) duurt dit waarschijnlijk te lang en krijg ik na een (beperkt aantal? 15-20) seconden de originele uploadpagina weer te zien. De $_POST wordt dus niet meegegeven, anders kreeg ik de resultatenpagina te zien.
Nu heb ik me rot gezocht op GoT of het mogelijk is om tussen elke uploadactie de pagina te refreshen.
1. Upload formulier met 10 input type=file elementen
2. Upload $_FILES[0]
3. Refresh
4. Upload $_FILES[1]
5. Refresh
6. Upload $_FILES[2]
7. Refresh
8. Upload $_FILES[3]
9. etc. etc.
10. Klaar, toon de resultatenpagina
Hiervoor moeten de $_POST en $_FILES variabelen dus keer op keer doorgegeven worden bij de refresh, inclusief een teller-variabele om telkens de volgende $_FILES[$teller] af te lopen.
Is dit mogelijk en hoe doe ik dit precies? Ik wil liever niet afhankelijk zijn van php.ini settings, zodat onafhankelijk van de server de website gewoon werkt met de standaard PHP instellingen.
1 2 3 | ini_set('max_execution_time', 120); ?> |
dat is echt een instelling in je php zelfquote:htaccess (hypertext access) is the default name of Apache's directory-level configuration file. It provides the ability to customize configuration for requests to the particular directory.
.htaccess files are commonly used for:
* Authorization, authentication: .htaccess files are often used to specify the security restrictions for the particular directory, hence the filename "access". The .htaccess file is often accompanied by an .htpasswd file which stores valid usernames and their passwords.
* Customized error responses: Changing the page that is shown when a server-side error occurs, for example HTTP 404 Not Found.
* Rewriting URLs: Various server-side PHP scripts use .htaccess to rewrite "ugly" URLs to shorter and prettier ones.
Dat dacht ik al. Ik hou het maar gewoon op een check dat bestanden van meer dan 2mb niet geupload mogen worden. Ik gebruik liever niet iets als JUpload vanwege overige bewerkingen die daarna nog met de plaatjes uitgevoerd moeten worden, dus dan wordt het maar gewoon maximaal 3-5 plaatjes uploaden. Daar moet wel genoeg tijd voor zijn, en dan maar met die ini-setquote:Op maandag 3 september 2007 14:40 schreef Catch22- het volgende:
Je zal altijd met een beperkte timeout te maken houden en files van een paar mb duren gewoon lang om te uploaden, dus krijg je met de timeout van doen, als je refreshed ben je je post data kwijt...
wellicht handig om het via ajax te doen om te voorkomen dat de gebruiker de pagina gaat refreshen omdat het hem te lang duurtquote:Op maandag 3 september 2007 15:36 schreef Chivu het volgende:
[..]
Dat dacht ik al. Ik hou het maar gewoon op een check dat bestanden van meer dan 2mb niet geupload mogen worden. Ik gebruik liever niet iets als JUpload vanwege overige bewerkingen die daarna nog met de plaatjes uitgevoerd moeten worden, dus dan wordt het maar gewoon maximaal 3-5 plaatjes uploaden. Daar moet wel genoeg tijd voor zijn, en dan maar met die ini-setBedankt.
AJAX heb je binnen 5 minuten geleerd. Maar in principe heb je wel gelijk natuurlijk.quote:Op maandag 3 september 2007 16:06 schreef Chivu het volgende:
Ik vind Ajax heel lief, maar ik heb me nog niet in AJAX verdiept. Bovendien moet een gedisabled uploadknopje en een animatie+melding genoeg zijn om mensen te laten wachten.
kun je het binnen 5 min typen leren? zo ja, dan zou ik zeggen.. succes!quote:Op maandag 3 september 2007 16:49 schreef Dreammaster het volgende:
[..]
AJAX heb je binnen 5 minuten geleerd. Maar in principe heb je wel gelijk natuurlijk.
De timeout geldt niet voor file uploads. Zolang er nog een upload loopt naar de server, telt de max_execution_time van PHP nog niet af.quote:Op maandag 3 september 2007 14:40 schreef Catch22- het volgende:
je moet het absoluten pad in je header location zetten. Firefox doet blijkbaar wat lastiger als hij geen base_href meekrijgt
[..]
Je zal altijd met een beperkte timeout te maken houden en files van een paar mb duren gewoon lang om te uploaden, dus krijg je met de timeout van doen, als je refreshed ben je je post data kwijt...
Als er toch een time-out op treedt, is dat waarschijnlijk een time-out vanuit de webserver en niet vanuit PHP.quote:The maximum execution time is not affected by system calls, stream operations etc. Please see the set_time_limit() function for more details.
You can not change this setting with ini_set() when running in safe mode. The only workaround is to turn off safe mode or by changing the time limit in the php.ini.
Your web server can have other timeouts. E.g. Apache has Timeout directive, IIS has CGI timeout function, both default to 300 seconds. See the web server documentation for meaning of it.
Ah, je hebt er verstand van, dat zie ik alquote:Op maandag 3 september 2007 16:49 schreef Dreammaster het volgende:
[..]
AJAX heb je binnen 5 minuten geleerd. Maar in principe heb je wel gelijk natuurlijk.
Hoezo 'het hoort niet'?quote:Op maandag 3 september 2007 15:27 schreef Catch22- het volgende:
het hoort niet, als het al gaat werken.
Google op 'gmail api'. Er lijken verschillende libraries te zijn waarmee je gmail-functionaliteit kunt gebruiken. Verder geen ervaring mee eigenlijk.quote:Op dinsdag 4 september 2007 14:03 schreef PiRANiA het volgende:
Ik heb een vraagje.
Hoe haalt hyves (en anders websites) je adresboek van je mailaccount af?
Logt de server in op gmail, opent dan 'contacts' en haalt dan alles er af?
Of doen ze dat anders?
Ik wil het wel weten, want het lijkt me handig voor mijn site
Ook voor php?quote:Op dinsdag 4 september 2007 14:48 schreef GVRuud het volgende:
[..]
Google op 'gmail api'. Er lijken verschillende libraries te zijn waarmee je gmail-functionaliteit kunt gebruiken. Verder geen ervaring mee eigenlijk.
Heh moet je je username en password opgeven zeker?quote:Op dinsdag 4 september 2007 14:03 schreef PiRANiA het volgende:
Ik heb een vraagje.
Hoe haalt hyves (en anders websites) je adresboek van je mailaccount af?
Logt de server in op gmail, opent dan 'contacts' en haalt dan alles er af?
Of doen ze dat anders?
Ik wil het wel weten, want het lijkt me handig voor mijn site
ja inderdaad. Maar wat gebeurt er dan?quote:Op dinsdag 4 september 2007 15:52 schreef WyriHaximus het volgende:
[..]
Heh moet je je username en password opgeven zeker?
Nee er wordt gebruik gemaakt van een API van google, die is als het goed is wel ergens te downloaden denk ik. Alles wat je met gmail wil doen kun je dan via die API doen.quote:Op dinsdag 4 september 2007 15:56 schreef PiRANiA het volgende:
[..]
ja inderdaad. Maar wat gebeurt er dan?
Wordt gmail geopend?
Ja zo of via een API gebeurt dat meestalquote:Op dinsdag 4 september 2007 15:56 schreef PiRANiA het volgende:
[..]
ja inderdaad. Maar wat gebeurt er dan?
Wordt gmail geopend?
Zolang er maar niet mee gespammed word. Want dat soort mensen zouden ze achter een motor aan over de snelweg moeten slepenquote:Op woensdag 5 september 2007 09:06 schreef unox_worst het volgende:
[..]
Nee er wordt gebruik gemaakt van een API van google, die is als het goed is wel ergens te downloaden denk ik. Alles wat je met gmail wil doen kun je dan via die API doen.
Ook voor PHP: http://sourceforge.net/projects/gmail-lite/quote:Op dinsdag 4 september 2007 15:40 schreef PiRANiA het volgende:
[..]
Ook voor php?
En hoe zit het met andere mailsystemen?
Aan de screenshots te zien bijvoorbeeld handig voor op een PDA ofzoquote:Op woensdag 5 september 2007 09:38 schreef GVRuud het volgende:
[..]
Ook voor PHP: http://sourceforge.net/projects/gmail-lite/
Neem aan dat er voor een boel andere mailaanbieders ook wel zoiets zal zijn...
Zeker tof. Alleen het jammere aan de POP3 support van Gmail is dat ze niet de read/delete acties die je op je pop uitvoerd ook op je gmail door voerenquote:Op woensdag 5 september 2007 09:55 schreef JortK het volgende:
[..]
Aan de screenshots te zien bijvoorbeeld handig voor op een PDA ofzo
Ehm, POP3 hoort dat ook niet te doen. Bedoel je niet IMAP?quote:Op woensdag 5 september 2007 13:55 schreef WyriHaximus het volgende:
[..]
Zeker tof. Alleen het jammere aan de POP3 support van Gmail is dat ze niet de read/delete acties die je op je pop uitvoerd ook op je gmail door voeren.
Dat ondersteund Gmail nietquote:Op woensdag 5 september 2007 14:14 schreef JeRa het volgende:
[..]
Ehm, POP3 hoort dat ook niet te doen. Bedoel je niet IMAP?
Jaquote:Op woensdag 5 september 2007 15:40 schreef Chivu het volgende:
Misschien een retorische vraag, maar 'beveiligen' jullie elk invoerveld op een pagina met strip_tags, htmlspecialchars etc? En zijn er nog andere obvious zaken waar ik op moet letten?
voor sql doe ikquote:Op woensdag 5 september 2007 15:46 schreef WyriHaximus het volgende:
[..]
Ja. Maar ook met XSS scans om dat soort mensen gelijk te bannen. Of intval is ook handig voor nummers
. Ow addlsashes voor SQL (en het liefst die de database libs leveren).
Dat is die van MySQL ja postgre laat het toe het via een sprintf meganisme te werken voor variablesquote:Op woensdag 5 september 2007 15:58 schreef PiRANiA het volgende:
[..]
voor sql doe ik
mysql_real_escape (dacht ik)...
Hoe bedoel je dat, sprintf op zich voorkomt geen sql-injectie?quote:Op woensdag 5 september 2007 15:59 schreef WyriHaximus het volgende:
[..]
Dat is die van MySQL ja postgre laat het toe het via een sprintf meganisme te werken voor variables.
quote:Op woensdag 5 september 2007 18:34 schreef SuperRembo het volgende:
[..]
Hoe bedoel je dat, sprintf op zich voorkomt geen sql-injectie?
1 2 3 4 | $input = '13 OR 1 OR 13'; $query = sprintf('SELECT %d', $input); ?> |
Dit doet sprintf toch niet anders dan een doodgewone string met "..." . $var . "..." ?quote:Op woensdag 5 september 2007 18:48 schreef JeRa het volgende:
[..]
[ code verwijderd ]
Op zich wel dus. Desalniettemin is het een beter idee om alle input te checken of naar een type te forceren, of gewoon prepared statements te gebruiken.
Als er %s stond wel. Nu staat er %d.quote:Op woensdag 5 september 2007 18:53 schreef Geqxon het volgende:
[..]
Dit doet sprintf toch niet anders dan een doodgewone string met "..." . $var . "..." ?
Ja, dat is afgekeken van perl, daar werk je eigenlijk altijd met placeholders waar values automatisch ge-escaped en gequote worden. Daardoor wordt iets als dit volkomen veilig, geen sql injection meer mogelijk:quote:Op woensdag 5 september 2007 19:06 schreef WyriHaximus het volgende:
Doelde eingelijk hier op: http://www.php.net/manual/en/function.pg-send-prepare.php afaik worden de vars daar ook netjes automatish voor je geescaped enzo :).
1 2 3 4 | my $dbh = DBH->connect; my $sth = $dbh->prepare("select * from blaat where ID = ?"); $sth->execute($ID) or die $sth->errstr; |
1 2 3 4 5 6 7 | if (isset($object)){ echo $object->$veld; }else{ echo "hallo"; } } |
1 2 3 4 5 6 7 8 | if ($object != "empty"){ return $object->$veld; }else{ $empty_value = ""; return $empty_value; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function getFormValue($veld, &$object) { if($object) { if(isset($object->$value)) { return $object->$value; } else { return false; } } else { return false; } } ?> |
De variabele moet een value hebben, vandaar dat ik het zo (op mijn manier) heb gedaan.. Het gaat namelijk om value="" variabelen in een formulier..quote:
Er zijn scriptjes voor.. Ik heb op google gezocht naar php ping script, daar vond ik dit:quote:Op woensdag 5 september 2007 22:21 schreef h.henkie het volgende:
Hoi,
Ik ben eens wat structuur aan aanbrengen in mijn chaotisch veel gebruikte linkjes. Op deze pagina wil ik ook de status van mijn eigen ftp server en sqlserver. En de mailserver van mijn domein hebben. Als voorbeeld klik. Dit is dan ook wat ik in mijn gedachte heb als uitvoer.
Kan iemand me op weg helpen hier mee. Oh ja ik gebruik php 5.0.4
Dank hier voorquote:Op woensdag 5 september 2007 22:27 schreef markiemark het volgende:
[..]
Er zijn scriptjes voor.. Ik heb op google gezocht naar php ping script, daar vond ik dit:
http://www.phphulp.nl/php/scripts/7/216/
1 2 3 4 5 6 7 8 9 10 11 12 13 | $ip = "xxx.xxx.xxx.xxx"; // domein $poort = "xx"; // poort $fp = @fsockopen($ip, $poort ,$errno,$errstr, 20); if (!$fp) { echo '<img src="im/Red.gif" alt="2" width="10" height="10" border="0" />'; } else { echo '<img src="im/Green.gif" alt="4" width="10" height="10" border="0" />'; } ?> |
20 sec zekerquote:Op woensdag 5 september 2007 23:29 schreef h.henkie het volgende:
[..]
Dank hier voor
Oke ik heb even doorgezocht en wat aan de broncode verbouwd. Uiteindelijk kwam ik op dit uit:
[ code verwijderd ]
Ik ga later een experimenteren met de poorten. Ik heb dit getest met mijn ftp server. Het valt op de als de ftp server offline is, dat het lang duurt voordat er resultaat is.
lolquote:
Ik zou er 5 van makenquote:Op donderdag 6 september 2007 09:00 schreef Dzy het volgende:
Haha inderdaad, ik zou die laatste parameter van fsockopen even op 1 of 2 zetten
minuten?quote:Op donderdag 6 september 2007 10:07 schreef Dzy het volgende:
Als je hem op 2 zet heeft hij toch meer dan genoeg tijd om te reageren? Kan me niet voorstellen dat je na meer dan 2 minuten alsnog een response krijgt. En je bent in die tussentijd wel aan het wachten met de pagina laden. Misschien kan je oplossen via AJAX? (weet daar weinig vanaf) Bv dat je alle lampjes op oranje zet, voor elk een los scriptje laat draaien en zodra je weet of het is gelukt of niet hem omzet naar groen/rood?
quote:Op donderdag 6 september 2007 10:07 schreef Dzy het volgende:
Als je hem op 2 zet heeft hij toch meer dan genoeg tijd om te reageren? Kan me niet voorstellen dat je na meer dan 2 minuten alsnog een response krijgt. En je bent in die tussentijd wel aan het wachten met de pagina laden. Misschien kan je oplossen via AJAX? (weet daar weinig vanaf) Bv dat je alle lampjes op oranje zet, voor elk een los scriptje laat draaien en zodra je weet of het is gelukt of niet hem omzet naar groen/rood?
quote:
quote:Op donderdag 6 september 2007 10:46 schreef Dzy het volgende:
Eh. Nog niet helemaal wakker :$ Sla die post maar gewoon over5 sec is inderdaad wel ok
Waarom zou je voor AJAX gaan als je dat ook met een plaatje kan doen? Scheelt je een nutteloze request naar de server toe ;). Plus dat je pagina er al is en niet op de andere server hoeft te wachten :Y .quote:Op donderdag 6 september 2007 11:07 schreef Dzy het volgende:
Koffie is wel prima, net zelf ook maar gezet :P Maar 5 seconden is dus wel goed. Stel nou dat een ftp server zo sloom was dat hij pas na 2 minuten zou reageren, zou die oplossing met ajax dan mogelijk zijn? Hoe zou dat precies in z'n werk gaan dan? Los scriptje voor elke server en dan zodra hij antwoord heeft de image veranderen? Ik probeer AJAX een beetje te begrijpen.
1 |
1 2 3 4 5 6 7 8 9 10 11 | header('Content-type: image/jpeg'); if($serveronline) { die(file_get_contents('online.jpeg')); } else { die(file_get_contents('offline.jpeg')); } ?> |
Browser dependant maar dat gaat rap genoeg om er bijna niks van te merkenquote:Op donderdag 6 september 2007 11:18 schreef Dzy het volgende:
Ah, dat is wel een mooie oplossing ja. Wist niet dat dat zo kon. Maar is het zo niet zo dat hij de latere images pas gaat laden als hij alle info binnen heeft? Of stuurt hij de request van alle images tegelijk? Of is dat browser dependant?
Ik heb de invoer graag zoals door de gebruiker ingevoerd in de database. Pas wanneer ik de waarde ga afbeelden gooi ik er htmlspecialchars() of welke functie dan ook overheen. Voordat ik het in de database opsla, substr ik de invoer wel, zodat deze niet groter dan de veldlengte in de database is. Eventuele getalinvoer wordt met een intval() omgezet. En verder wordt de waarde natuurlijk geescaped, zodat de query niet in de soup loopt.quote:Op woensdag 5 september 2007 15:40 schreef Chivu het volgende:
Misschien een retorische vraag, maar 'beveiligen' jullie elk invoerveld op een pagina met strip_tags, htmlspecialchars etc? En zijn er nog andere obvious zaken waar ik op moet letten?
Maar is het dan niet zo dat als je een server park van 500 servers laat zien waarvan er zeg 40 offline zijn, hij dan bij elke offline server weer 5 seconden (niet minuten!) wacht en daarna pas de volgende image gaat laden?quote:Op donderdag 6 september 2007 11:26 schreef WyriHaximus het volgende:
[..]
Browser dependant maar dat gaat rap genoeg om er bijna niks van te merken.
Ja dat klopt, maar over het algemeen behoren die servers binnen een enkele seconde te reageren. Mocht je 500 servers gaan uitzoeken dan zal dat dus ook met een timeout van een seconde je 500 secondes kosten. Je kan de timeout natuurlijk nog krapper gaan nemen. Wat je eventueel ook nog zou kunnen doen is de servers in een array stoppen, en als ze binnen een bepaalde tijd niet reageren te verschuiven naar later in de array of een andere array om op het einde de trage servers nog eens te checken.quote:Op donderdag 6 september 2007 11:36 schreef Dzy het volgende:
[..]
Maar is het dan niet zo dat als je een server park van 500 servers laat zien waarvan er zeg 40 offline zijn, hij dan bij elke offline server weer 5 seconden (niet minuten!) wacht en daarna pas de volgende image gaat laden?
Wou het net zeggen jaquote:Op donderdag 6 september 2007 13:46 schreef colourAgga het volgende:
[..]
Ja dat klopt, maar over het algemeen behoren die servers binnen een enkele seconde te reageren. Mocht je 500 servers gaan uitzoeken dan zal dat dus ook met een timeout van een seconde je 500 secondes kosten. Je kan de timeout natuurlijk nog krapper gaan nemen. Wat je eventueel ook nog zou kunnen doen is de servers in een array stoppen, en als ze binnen een bepaalde tijd niet reageren te verschuiven naar later in de array of een andere array om op het einde de trage servers nog eens te checken.
Je kan natuurlijk flush() gebruiken om je output buffers te flushen zodat je output hebt terwijl het script draait (anders geeft hij pas na alle servers langslopen je output door).
Het is makkelijker om een script te gaan maken en dit in een cronjob op te nemen om op vaste intervallen dit script al je servers te laten pollen en dit weg te schrijven naar een database/bestand. Zodat als je de site bezoekt je gewoon de meest recente informatie direct te zien krijgt. Mocht je dan handmatig willen verversen dan kan dat.
Ja dat was een in koppertjequote:
Ook al aande lange kant, bij mij gaan servers als ze niet binnen 500 ms (0.5 seconde) niet reageren al in het 'slow reply' bakje en als ze er langer dan 1000 ms (1 seconde) over doen is het over en sluitenquote:Op donderdag 6 september 2007 16:10 schreef h.henkie het volgende:
[..]
Ja dat was een in koppertje. Ik zag het later staan, en inmmiddels al op 3 gezet.
![]()
1 |
Timestamp lijkt me op zich geen geheel onlogische keuze.quote:Op donderdag 6 september 2007 20:28 schreef markiemark het volgende:
ik heb in php een timestamp gemaakt. kijk:
[ code verwijderd ]
welk datatype moet ik gebruiken in mysql om dit op te slaan?
Maar die slaat de datum in xxxx-xx-xx formaat op. Dan heb je toch niks meer aan de timestamp?quote:Op donderdag 6 september 2007 21:14 schreef Farenji het volgende:
[..]
Timestamp lijkt me op zich geen geheel onlogische keuze.
int(11)quote:Op donderdag 6 september 2007 20:28 schreef markiemark het volgende:
ik heb in php een timestamp gemaakt. kijk:
[ code verwijderd ]
welk datatype moet ik gebruiken in mysql om dit op te slaan?
dat is datetime geloof ik.quote:Op donderdag 6 september 2007 21:17 schreef wonderer het volgende:
[..]
Maar die slaat de datum in xxxx-xx-xx formaat op. Dan heb je toch niks meer aan de timestamp?
Timestamp ook. Die fout maakte ik namelijk zelf ookquote:Op donderdag 6 september 2007 21:27 schreef super-muffin het volgende:
[..]
dat is datetime geloof ik.
Intern wordt ie als timestamp opgeslagen, itt tot een datetime. Een timestamp wordt als een datum weergegeven maar je kan er gewoon mee rekenen zoals je met timestamps kan.quote:Op donderdag 6 september 2007 21:17 schreef wonderer het volgende:
[..]
Maar die slaat de datum in xxxx-xx-xx formaat op. Dan heb je toch niks meer aan de timestamp?
of je zet een now() in je datetime en haat het terug met strtotimequote:Op vrijdag 7 september 2007 14:42 schreef colourAgga het volgende:
Je kan inderdaad zoals ik eerder al zei net zo goed (of beter) een int(11) gebruiken. Daar sla je dan je time() in op. Dat is handiger dan DATE, DATETIME en TIMESTAMP aangezien je meer met de tijden kan doen. TIMESTAMP kun je beter niet gebruiken omdat de resultaten nogal verschillen tussen verschillende MySQL versies en de modi waarin een MySQL server draaitZie ook de MySQL Manual.
Of je doet gewoon opslaan als integer en dan ben je die extra handelingen kwijtquote:Op zaterdag 8 september 2007 09:37 schreef PiRANiA het volgende:
[..]
of je zet een now() in je datetime en haat het terug met strtotime
1 |
quote:Op zaterdag 8 september 2007 23:34 schreef The_Terminator het volgende:
Weet iemand toevallig hoe ik de topics hier op Fok uit een bepaald sub-forum kan rippen? Dus topic naam en ID in een array.
Ik ben al met preg_match_all aan het vogelen geweest maar weet niet welke pattern ik moet gebruiken om de topics te rippen. Het ophalen van de data gaat dmv het donwloaden van de index van een forum naar een txt bestand, vervolgens lees ik dit betand en plaats het in een string. De string bevat dus de gehele HTML waar de pagina uit bestaat.
Wat ik wil rippen is het volgende:
[ code verwijderd ]
En bovenstaande dus voor alle topics in het KLB subforum onderverdeeld in een array.
1 2 3 4 5 6 7 8 9 10 | $forum_html = file_get_contents('http://forum.fok.nl/forum/' . $forum_id); $ex = explode('topic(',$forum_html); unset($ex[0],$ex[(count($ex)-1)]); foreach($ex as $key => $value) { $ex2 = explode(',',$value); $topic_list[$row['forum']][intval($ex2[0])] = $ex2[1]; } ?> |
Werkt perfect, thanksquote:Op zaterdag 8 september 2007 23:51 schreef WyriHaximus het volgende:
[..]
[ code verwijderd ]
Enjoy($forum_id moet het forum id zijn van het subforum wat je wilt uilezen
.)
Niet perfect, want hij split bijvoorbeeld ook op komma's die in strings (de topic titel) voorkomenquote:
Mwoh, dat kan ik wel aanpassen. De basis is er in iedergevalquote:Op zondag 9 september 2007 00:17 schreef SuperRembo het volgende:
[..]
Niet perfect, want hij split bijvoorbeeld ook op komma's die in strings (de topic titel) voorkomen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function customexplode($invoer, $max){ $uitnr=0; $startpos=0; do { preg_match('/[^\',][^,\']*|\'([^\'\\\\]|\\\\[\s\S])*\'/', substr($invoer, $startpos), $matches, PREG_OFFSET_CAPTURE); if (count($matches)>0) { $t = $matches[0][0]; if (substr($t,0,1)=="'") $t=substr($t,1,strlen($t)-2); $uitvoer[$uitnr]=$t; $startpos += $matches[0][1] + strlen($matches[0][0]); $uitnr++; } } while ((count($matches)>0) && ($uitnr <= $max)); return $uitvoer; } ?> |
Daar zeg je idd watquote:Op zondag 9 september 2007 00:17 schreef SuperRembo het volgende:
[..]
Niet perfect, want hij split bijvoorbeeld ook op komma's die in strings (de topic titel) voorkomen
Je zou ook de php eval() kunnen gebruiken, dat scheelt een boel gekloot met regexps.quote:Op zondag 9 september 2007 10:25 schreef WyriHaximus het volgende:
Daar zeg je idd wat. De regex dinges hierboven verhelpt dat wel
.
(Wow iemand die eval() suggereerdquote:Op zondag 9 september 2007 11:05 schreef SuperRembo het volgende:
[..]
Je zou ook de php eval() kunnen gebruiken, dat scheelt een boel gekloot met regexps.
Ik denk dat preg_match_all met #\d+|'(\'|[^'])*?'# genoeg moet zijn voor een lijst van getallen en strings. (niet getest)quote:Op zondag 9 september 2007 00:55 schreef Igen het volgende:
Ai, ik heb dat ook eens gedaan. Het was een enorm gepuzzel om de juiste reguliere expressie te vinden, maar uiteindelijk toch gelukt:
[ code verwijderd ]
Er zitten wel wat rare dingen in je regexp. [\s\S] (whitespace of non-whitespace) dat is toch gewoon elk willekeurig teken? [^',][^,']* is hetzelfde als [^',]+. Je regexp zou beter leesbaar zijn als je voor de regexp zelf dubbele quotes zou gebruiken, dan hoef je de enkele quotes in de regexp niet te escapen.quote:Op zondag 9 september 2007 11:32 schreef Igen het volgende:
Gaat dat niet fout als \\' in een string voorkomt?
Ik heb heus wel nagedacht over mijn regexp hoor!
Ik had het al op een andere manier opgelost:quote:Op zondag 9 september 2007 00:55 schreef Igen het volgende:
Ai, ik heb dat ook eens gedaan. Het was een enorm gepuzzel om de juiste reguliere expressie te vinden, maar uiteindelijk toch gelukt:
[ code verwijderd ]
Als je het 'topic(' aan het begin, en ');' aan het einde, al eraf hebt gehakt, en je dus zoiets overhoudt:
1,10,4372847328,8239,'Igen',32198,'Slecht \'topic\', enzo',0
dan kun je deze functie gebruiken om de eerste $max velden op te vragen.
Werkt perfect voor Fok!Silver, voor de topic-list en voor de topics zelf. :)
1 2 3 4 5 6 7 8 9 10 11 12 13 | $forum_html = file_get_contents('http://forum.fok.nl/forum/5'); $ex = explode('topic(',$forum_html); unset($ex[0],$ex[(count($ex)-1)]); foreach($ex as $key => $value) { $ex2 = explode(",'",$value); echo stripslashes(rtrim($ex2[1], "'")) . "<br>"; $topic_list[$row['forum']][intval($ex2[0])] = $ex2[1]; } ?> |
Nee, ik bedoel te zeggen dat je met een regular expression helemáál niet moeilijk hoeft te doen om een topicregel te matchen, omdat er maar één waarde in topic() een apostrofe kan bevatten. Je matcht dan het stuk waar de regels in voorkomen met preg_match_all() met een regex als deze:quote:Op zondag 9 september 2007 14:20 schreef Igen het volgende:
Om het bestand in regels op te delen kun je toch ook gewoon file() gebruiken, in plaats van file_get_contents() ?
Maar dan moet je nog steeds iets met elke regel doen, en daarvoor moet je die toch echt bij de juiste komma's in stukken hakken. Of begrijp ik je nu helemaal verkeerd?
Een dedicated databaseserver en een parttime crawler die afhankelijk van de situatie bij mij thuis of in Amsterdam op het datacentrum draaitquote:Op zondag 9 september 2007 19:24 schreef PiRANiA het volgende:
JeRa, dat heb je waarschijnlijk op een server draaien.
Hoe pak je dat aan? Heb je het op een lokale server?
Met een crontab.quote:En hoe zorg je dat het script blijft draaien en niet aangeroepen hoeft te worden door een browser?
Ik heb een jaar of wat geleden een framework geschreven om heel FOK! te indexeren, in eerste instantie voor een uitgebreide zoekmachine (die niet in gebruik werd genomen vanwege de nieuwe zoeken.fok.nl van Roönaän) en vervolgens voor de statistieken en andere willekeurige dingenquote:Op zondag 9 september 2007 19:31 schreef Xcalibur het volgende:
Wat doen jullie verder met die scripts btw?
Dat blocken is wat lastiger omdat mijn crawler zich bijvoorbeeld niet veel anders voordoet dan de gemiddelde niet-ingelogde bezoeker (ik stuur wat minder headers mee om zo het aantal packets mogelijk te verminderen). Ze zouden dan geen onderscheid moeten maken tussen een crawler en een bezoeker die als een gek topics aan het doorspitten isquote:Op zondag 9 september 2007 19:41 schreef Xcalibur het volgende:
Ah ok...
Dat indexeren door x-aantal man is wel suf idd, kan FOK dat soort verkeer niet blocken dan?
Volgens mij zitten die tools meestal gewoon bij je hosting pakketquote:Op maandag 10 september 2007 12:01 schreef markiemark het volgende:
Over crons.. Kan ik die dmv een php script aanmaken? En kan ik deze ook zo instellen dat ze eenmalig draaien?
Zelf zie ik geen probleem in een proxy blokkeren. Als die misbruikt word ga ik mijn site daar niet voor openstellen. Mochten users die ook achter die proxy daar problemen mee hebben dan gaan ze maar bij de eigenaar van die proxy klagen . Het handje vol bezoekers wat ik daar mee uitsluit neem ik wel voor liefquote:Op maandag 10 september 2007 13:06 schreef Igen het volgende:
Wordt lastig. Anonieme gebruikers zijn alleen te traceren met hun IP-adres, dus dan moet je voor elk IP-adres gaan bijhouden wanneer hoeveel pagina's zijn opgevraagd, en daarmee belast je de database ook weer. Bovendien heb je nog het probleem dat mensen die dezelfde proxy-server gebruiken allemaal hetzelfde IP-adres lijken te hebben, dacht ik.
En sowieso, 100 aanvragen per minuut!?
Daar kom ik niet eens in de buurt. Je zou 10 aanvragen per minuut kunnen zeggen. Maar dan krijg je weer dat mensen onterecht geblokkeerd worden omdat ze achter een proxy-server zitten, of omdat ze in Firefox ineens al hun actieve topics in een nieuwe tab openen.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |