| 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 | <?php date_default_timezone_set('GMT'); function serverToGMTStamp() { // replaces time return time();//-((date("O") / 100)*60*60);// server timestamp to gmt timestmap } function userInputToGMTStamp($userStamp,$userTimeZone) { // to be saved to database return $userStamp-($userTimeZone*60*60);// user timestamp to gmt timestmap } function gmtToUserTime($gmtStamp,$userTimeZone,$format="d-m-Y H:i") { // displayed date /time in user timezone return date($format,$gmtStamp+($userTimeZone*60*60)); } function inputTimetoStamp($input){ if($input){ list($date, $time) = explode(' ',$input); list($hour, $minute) = explode(':',$time); list($month, $day, $year) = explode('/',$date); $input = mktime ($hour, $minute, 0, $day, $month, $year); return $input; } } $databaseDate = '04/06/2012 20:00'; //date in database already $userTimeZone = 1; //compared to gmt $databaseDateTimestamp = 1333742400; // gmt stamp from database $databaseDateTimestampToUser = $databaseDateTimestamp+($userTimeZone*60*60); // to user timezonestamp $serverToGMTStamp = serverToGMTStamp(); $serverToUserGMTtoUser = $serverToGMTStamp+($userTimeZone*60*60); // to user timezonestamp echo 'databaseDateTimestamp (gmt): '.$databaseDateTimestamp.'<br />'; echo 'databaseDateTimestamp date (gmt): '.date("m/d/Y, H:i",$databaseDateTimestamp).'<br /><br />'; echo 'databaseDateTimestamp (user): '.$databaseDateTimestampToUser.'<br />'; echo 'databaseDateTimestamp date (user): '.date("m/d/Y, H:i",$databaseDateTimestampToUser).'<br /><br />'; echo 'serverTimeStamp (gmt): '.$serverToGMTStamp.'<br />'; echo 'serverTimeStamp date (gmt): '.date("m/d/Y, H:i",$serverToGMTStamp).'<br /><br />'; //echo 'serverTimeStamp (user): '.$serverToUserGMTtoUser.'<br />'; //echo 'serverTimeStamp date (user): '.date("m/d/Y, H:i",$serverToUserGMTtoUser).'<br /><br />'; if($serverToUserGMTtoUser>$databaseDateTimestampToUser) { echo 'input time already past by '.(($serverToUserGMTtoUser-$databaseDateTimestampToUser)/(60*60)); } else{ echo 'input time not past'; } exit(); |
| 1 2 3 4 5 | <?php function serverToGMTStamp() { // replaces time return time(); } ?> |
Voordat je denkt dat je iets fout doet terwijl het niet zo is; momenteel is het voor ons GMT +2 omdat het zomertijd is.quote:Op zaterdag 7 april 2012 18:24 schreef Darkomen het volgende:
Heren,
Ik hoop dat jullie me weer eens kunnen helpen.
Ik ben iets aan het bouwen dat de usertabellen van vbullentin 4 gebruikt.
Hierin staat de usertimezone welke het verschil van hun tijd zone met GMT. bijvoorbeeld voor mijzelf +1
| 1 2 3 4 5 6 7 8 9 10 11 12 | <?php $wallPosts = array(); $wallPosts=file('wallPost.txt', FILE_IGNORE_NEW_LINES); if(!in_array($_SESSION['uid'], $wallPost)) { $onload = "onload=\"postToWall();\""; $fp = fopen('wallPost.txt', 'a'); fwrite($fp, $_SESSION['uid']."\r\n"); fclose($fp); echo $onload; } ?> |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $wallPosts = array(); $wallPosts=file('wallPost.txt', FILE_IGNORE_NEW_LINES); print_r($wallPosts); // dit geeft een array terug met de sessieID die HIERONDER geschreven wordt if(!in_array($_SESSION['uid'], $wallPost)) { $onload = "onload=\"postToWall();\""; // wordt niet uitgevoerd $fp = fopen('wallPost.txt', 'a'); //wordt wel uitgevoerd fwrite($fp, $_SESSION['uid']."\r\n"); //wordt wel uitgevoerd fclose($fp); // wordt wel uitgevoerd echo $onload; } ?> |
Nee hij is niet leeg, anders kan hij die ook niet schrijven naar de txt file op regel 8...quote:Op woensdag 11 april 2012 14:50 schreef GlowMouse het volgende:
$_SESSION['uid'] zal wel leeg zijn, maar dat is standaard debugwerk. Regel 2 is overbodig.
string(15) "100003526677056" NULLquote:Op woensdag 11 april 2012 15:01 schreef GlowMouse het volgende:
var_dump($_SESSION['uid'], $wallPost)
Script loopt gewoon door. UID wordt in de txt file geschreven maar geen 'die'quote:Op woensdag 11 april 2012 15:26 schreef GlowMouse het volgende:
wijzig echo $onload; in die($onload), dan kun je hem niet missen
| 1 2 3 4 5 6 7 8 9 10 11 | <?php $wallPosts=file('wallPost.txt', FILE_IGNORE_NEW_LINES); if(!in_array($_SESSION['uid'], $wallPosts)) { $onload = "onload=\"postToWall();\""; $fp = fopen('wallPost.txt', 'a'); fwrite($fp, $_SESSION['uid']."\r\n"); fclose($fp); die($onload); } ?> |
Je bent gewoon genaaidquote:Op woensdag 11 april 2012 19:42 schreef boem-dikkie het volgende:
Hehe ja weet ik wel maar ik had geen zin om voor één of twee keer gebruik dat te doen.
Maar goed, misschien maar wel gewoon doen.
http://php.net/manual/en/function.htmlentities.php zet double_encode op false.quote:Op zaterdag 14 april 2012 23:38 schreef Keiichi het volgende:
Ik ben nog verder met character encodings aan het kloten, ik heb nu het volgende.
De huidige pagina is ISO-8859-1. Ik ben er achter gekomen dat goede browsers automatisch UTF-8 of karakters buiten ISO omzet naar htmlentities. Hierdoor leek het altijd of UTF8 nooit een probleem geweest is. Probleem is dat ik de output uit de database overal door htmlentities ga afvangen, waardoor data onbruikbaar is (alle &'s worden vervangen door & waardoor eerder gemaakt htmlentities() letterlijk getoond worden. Daar kan niemand wat mee.
Is er een mogelijkheid om htmlentities die bestaan met rust laten en alle ander karakters die geen htmlentitiy vormen wel door htmlentities()
quote:Op zondag 15 april 2012 00:49 schreef Sitethief het volgende:
[..]
http://php.net/manual/en/function.htmlentities.php zet double_encode op false.
Ik weet niet wat voor veld je bedoelt, maar als ik jou was en je wil weten wat je mag toepassen , dan zou ik alle velden bijlangs gaan en een lijst met Karakters samenstellen die er wel in mogen.quote:Op zondag 15 april 2012 01:49 schreef Keiichi het volgende:
[..]dat deed de truc.
Iets anders, welke karacters kunnen er in latin1 voorkomen? Ik heb een veld waar iemand gepresteerd heeft dit karakter in te zetten: http://www.fileformat.info/info/unicode/char/2018/index.htm
-edit-
Ik word vaak gebeten door karakter encoding nu ik alles naar UTF8 probeer te brengen.![]()
Is die collation daar niet voor bedoeld om ongeldige karakters niet (of anders) op te slaan? Nu lijkt het alsof dat ene specifieke UTF8 geldige karakter gewoon in latin1 voor kan komen.quote:Op zondag 15 april 2012 03:23 schreef cablegunmaster het volgende:
[..]
Ik weet niet wat voor veld je bedoelt, maar als ik jou was en je wil weten wat je mag toepassen , dan zou ik alle velden bijlangs gaan en een lijst met Karakters samenstellen die er wel in mogen.Om dit soort karakters te voorkomen.
| 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 | <form id="contact-form" name="contact-form" method="post" action="submit.php"> <table width="100%" border="0" cellspacing="0" cellpadding="5"> <tr> <td width="15%"><label for="name">Naam</label></td> <td width="70%"><input type="text" class="validate[required,custom[onlyLetter]]" name="door" id="door" value="<?php=$_SESSION['post']['name']?>" /></td> <td width="15%" id="errOffset"> </td> </tr> <tr> </tr> <tr> <td valign="top"><label for="bericht">Bericht</label></td> <td><textarea name="bericht" id="bericht" class="validate[required]" cols="35" rows="5"><?php=$_SESSION['post']['message']?></textarea></td> <td valign="top"> </td> </tr> <tr> <td><label for="captcha"><?php=$_SESSION['n1']?> + <?php=$_SESSION['n2']?> =</label></td> <td><input type="text" class="validate[required,custom[onlyNumber]]" name="captcha" id="captcha" /></td> <td valign="top"> </td> </tr> <tr> <td valign="top"> </td> <td colspan="2"><input type="submit" name="button" id="button" value="Submit" /> <input type="reset" name="button2" id="button2" value="Reset" /> |
Je hebt nu het html gedeelte zelf af. de ACTION leid naar een php file. Deze zal je moeten aanmaken. Is dit de eerste keer met php? In dit bestand maak je de verwerking richting de DB en waar je de pagina daarna naartoe leid.quote:Op zondag 15 april 2012 19:03 schreef drumminggod het volgende:
Hoi.
Ik heb een gastenboek gemaakt. Alleen nu heb ik een probleempje. Ik heb 3 velden.
• Naam
• Bericht
• captcha code
Nu heb ik alles ingevoerd en moet hij naar mijn mysql gaan. Ik heb even een paar scripts bekeken maar wordt er niet wijzer van.
Moet dit met:
[ code verwijderd ]
?
Bvd
[ code verwijderd ]
Ik heb wel aardig ervaring met php. Maar dit wist ik niet!. Ik moet dus een .php maken. Daar naartoe linken en in de .php het gaan plaatsen in mijn database? (ik zal even op w3schools kijken van je linkje!)quote:Op zondag 15 april 2012 19:09 schreef cablegunmaster het volgende:
[..]
Je hebt nu het html gedeelte zelf af. de ACTION leid naar een php file. Deze zal je moeten aanmaken. Is dit de eerste keer met php? Waarin je de verwerking maakt met de Database. Je hebt nu een SQL insert query nodig , een verbinding met je SQL database.
Connect:
http://www.w3schools.com/php/php_mysql_connect.asp
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | <form id="contact-form" name="contact-form" method="post" action="submit.php"> <table width="100%" border="0" cellspacing="0" cellpadding="5"> <tr> <td width="15%"><label for="name">Naam</label></td> <td width="70%"><input type="text" class="validate[required,custom[onlyLetter]]" name="door" id="door" value="<?php=$_SESSION['post']['name']?>" /></td> <td width="15%" id="errOffset"> </td> </tr> <tr> </tr> <tr> <td valign="top"><label for="bericht">Bericht</label></td> <td><textarea name="bericht" id="bericht" class="validate[required]" cols="35" rows="5"><?php=$_SESSION['post']['message']?></textarea></td> <td valign="top"> </td> </tr> <tr> <td><label for="captcha"><?php=$_SESSION['n1']?> + <?php=$_SESSION['n2']?> =</label></td> <td><input type="text" class="validate[required,custom[onlyNumber]]" name="captcha" id="captcha" /></td> <td valign="top"> </td> </tr> <tr> <td valign="top"> </td> <td colspan="2"><input type="submit" name="button" id="button" value="Submit" /> <input type="reset" name="button2" id="button2" value="Reset" /> <?php=$str?> <img id="loading" src="img/ajax-load.gif" width="16" height="16" alt="loading" /></td> </tr> </table> </form> <?php=$success?> </div> <div class="tutorial-info">. </div> </div> </body> </html> <?php mysql_connect("xxx",xxx,xxx); // zelf in te vullen mysql_select_db(gastenboek); // zelf in te vullen if(isset($_POST['door']) and isset($_POST['bericht']) and $_POST['door']!='Typ hier uw naam' and $_POST['bericht']!='Typ hier uw bericht!' ) { $bericht = $_POST['bericht']; $door = $_POST['door']; $datum = date("d-m-Y H:i:s", time()); $bericht = str_replace("\n", "<br>", $bericht); $query = "INSERT INTO gastenboek(bericht, door , datum) VALUES ('".$bericht."', '".$door."', '".$datum."')"; $sql=mysql_query($query) or die (mysql_error()); } $query = "SELECT * FROM gastenboek ORDER BY id DESC"; $sql=mysql_query($query) or die (mysql_error()); while ($obj=mysql_fetch_object($sql)) { $door = $obj->door; $datum = $obj->datum; $bericht = $obj->bericht; ?> |
Je kan het naar zichzelf laten verwijzen door de pagina naam het eigen te maken.quote:Op zondag 15 april 2012 19:13 schreef drumminggod het volgende:
[..]
Ik heb wel aardig ervaring met php. Maar dit wist ik niet!. Ik moet dus een .php maken. Daar naartoe linken en in de .php het gaan plaatsen in mijn database? (ik zal even op w3schools kijken van je linkje!)
Dit is mijn totale code:
[ code verwijderd ]
| 1 2 3 4 5 6 7 8 9 | <?php if(isset($_POST)){ echo " Dank u voor uw bijdrage"; }else{ ?> // Formulier <?php } ?> |
Goed punt : ) en daarom ook altijd: http://php.net/manual/en/function.mysql-real-escape-string.php om je variabelen die je invoert.quote:
Enkele simpele code en ik kon je DB verwijderen / Tabel verwijderen.quote:Op zondag 15 april 2012 19:20 schreef drumminggod het volgende:
Nou. Dan ben ik vanaf nu een eerste klas dummie.. Want ik zit nu dus echt totaal vast. Ik dacht data en gasennboekj wmet eeMicaptcha code een eitje was... Mijn beveiliging is dus zo lek als een mandje?
| 1 2 3 4 5 | <?php function esc($string){ return mysql_real_escape_string($string); } ?> |
Oei. Dat klinkt niet goedquote:Op zondag 15 april 2012 19:22 schreef cablegunmaster het volgende:
[..]
Enkele simpele code en ik kon je DB verwijderen / Tabel verwijderen.
Om eerlijk gezegd te zijn ziet je code eruit als copy en paste van een online projectje.quote:Op zondag 15 april 2012 19:26 schreef drumminggod het volgende:
[..]
Oei. Dat klinkt niet goed. Maar ik zit dus nu echt compleet vast.. Het formulier is verder wel goed en zo?
| 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 | <form id="contact-form" name="contact-form" method="post" action="submit.php"> <table width="100%" border="0" cellspacing="0" cellpadding="5"> <tr> <td width="15%"><label for="name">Naam</label></td> <td width="70%"><input type="text" class="validate[required,custom[onlyLetter]]" name="door" id="door" value="<?php=$_SESSION['post']['name']?>" /></td> <td width="15%" id="errOffset"> </td> </tr> <tr> </tr> <tr> <td valign="top"><label for="bericht">Bericht</label></td> <td><textarea name="bericht" id="bericht" class="validate[required]" cols="35" rows="5"><?php=$_SESSION['post']['message']?></textarea></td> <td valign="top"> </td> </tr> <tr> <td><label for="captcha"><?php=$_SESSION['n1']?> + <?php=$_SESSION['n2']?> =</label></td> <td><input type="text" class="validate[required,custom[onlyNumber]]" name="captcha" id="captcha" /></td> <td valign="top"> </td> </tr> <tr> <td valign="top"> </td> <td colspan="2"><input type="submit" name="button" id="button" value="Submit" /> <input type="reset" name="button2" id="button2" value="Reset" /> <?php=$str?> <img id="loading" src="img/ajax-load.gif" width="16" height="16" alt="loading" /></td> </tr> </table> </form> <?php=$success?> </div> <div class="tutorial-info">. </div> </div> </body> </html> |
| 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 | // Submit.php <?php mysql_connect("xxx",xxx,xxx); // zelf in te vullen mysql_select_db(gastenboek); // zelf in te vullen if(isset($_POST['door']) && isset($_POST['bericht']) && $_POST['door'] !='Typ hier uw naam' && $_POST['bericht']!='Typ hier uw bericht!' ) { $bericht = $_POST['bericht']; $door = $_POST['door']; $datum = date("d-m-Y H:i:s", time()); $bericht = str_replace("\n", "<br>", $bericht); $query = "INSERT INTO gastenboek (bericht, door , datum) VALUES ('".esc($bericht)."', '".esc($door)."', '".esc($datum)."')"; $sql=mysql_query($query) or die (mysql_error()); } $query = "SELECT * FROM gastenboek ORDER BY id DESC"; $sql=mysql_query($query) or die (mysql_error()); while ($obj=mysql_fetch_object($sql)) { $door = $obj->door; $datum = $obj->datum; $bericht = $obj->bericht; } function esc($string){ return mysql_real_escape_string($string); } ?> |
Ik heb de basis van internet. Dat kloptquote:Op zondag 15 april 2012 19:29 schreef cablegunmaster het volgende:
[..]
Om eerlijk gezegd te zijn ziet je code eruit als copy en paste van een online projectje.
[ code verwijderd ]
[ code verwijderd ]
Dat maakt je niet meteen een PHP expertquote:Op zondag 15 april 2012 19:33 schreef drumminggod het volgende:
[..]
Ik heb de basis van internet. Dat klopt
| 1 2 3 4 5 6 7 8 | <?php while ($obj=mysql_fetch_object($sql)) { $door = $obj->door; $datum = $obj->datum; $bericht = $obj->bericht; } ?> |
Het is verstandig om hem helemaal opnieuw te maken?quote:Op zondag 15 april 2012 19:34 schreef cablegunmaster het volgende:
[..]
Dat maakt je niet meteen een PHP expert. meestal pak ik voor de datum eerder now() dan dat ik date pak. makkelijker om meteen in de DB te stoppen.
![]()
| 1 2 3 | <?php if(isset($_POST['door']) && isset($_POST['bericht']) && $_POST['door'] !='Typ hier uw naam' && $_POST['bericht']!='Typ hier uw bericht!' ) { ?> |
| 1 2 3 | <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') ?> |
Antwoord staat er al tussen om post met standaard bericht te voorkomen.quote:Op zondag 15 april 2012 19:36 schreef Pakspul het volgende:
Waarom trouwens
[ code verwijderd ]
En niet gewoon:
[ code verwijderd ]
Zoek de php for dummies boek op , download XAMPP en ga daar mee bezig met experimenteren.quote:Op zondag 15 april 2012 19:39 schreef drumminggod het volgende:
Oke.. Ik begin helemaal overnieuw. Volgens mij is deze code echt bagger. Haha.
Ik snap de waarom vragen namelijk niet
Ik heb MAMP. Dat is ook een localhost serverquote:Op zondag 15 april 2012 19:40 schreef cablegunmaster het volgende:
[..]
Zoek de php for dummies boek op , download XAMPP en ga daar mee bezig met experimenteren.![]()
Xampp is je localhost server. waarmee je op je eigen pc een website in php kan vertalen naar een normale webpagina. (webside scripting). Rest staat wel in het dummy boekje.
Ik ben zelf ook geen PHP-god, maar dit zinnetje in combinatie met jouw posts in dit topic deed me glimlachenquote:
Ik werk er veel mee (school), maar blijkbaar snap ik er gewoon geen drol van. Altijd fijn als je denkt dat je het kan!quote:Op zondag 15 april 2012 19:59 schreef Sitethief het volgende:
[..]
Ik ben zelf ook geen PHP-god, maar dit zinnetje in combinatie met jouw posts in dit topic deed me glimlachen.
isset is wel mooier, anders krijg je een warning bij error_reporting(E_ALL);quote:Op zondag 15 april 2012 19:38 schreef cablegunmaster het volgende:
[..]
Antwoord staat er al tussen om post met standaard bericht te voorkomen.
De Isset is overbodig inderdaad.kan beter !empty zijn
.
quote:Op zondag 15 april 2012 20:15 schreef drumminggod het volgende:
Oke. Ik heb nu iets. Alleen als ik nu mijn naam NIET heb ingevuld. Of een bericht niet. Dan moet er eigenlijk een foutmelding komen... Alleen nu plaatst hij gewoon lege vakken in mijn db.. Zal wel iets kleins zijn maar voor mij onvindbaar op ww3schools
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php If(!empty($_POST['VELDNAAM'])) { $error = "Er is geen BLABLABLABLA ingevuld"; } //Om je query heen invullen. if(!isset($error)){ // Insert Query uitvoeren. } //bij je formulier. if(!empty($error)){ echo $error; } ?> |
quote:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php $errorlog = array(); if ( empty($_POST['veldnaam']) === false ) { $errorlog[] = "<li>error omschrijving</li>"; } if ( count($errorlog) == 0 ) { // do database work } else { echo "<ul>" . join("", $errorlog) . "</ul>"; } ?> |
Een string met alleen een spatie is niet empty.quote:Op zondag 15 april 2012 21:44 schreef totalvamp het volgende:
Ik zou geen empty gebruiken. Dan werkt een spatie alleen ookDoe een betere check met strlen
Nee dat is mijn punt. Je moet dus een adequate check doen op je POST. strlen() + trim() + weetikveel()quote:Op maandag 16 april 2012 21:17 schreef Light het volgende:
[..]
Een string met alleen een spatie is niet empty.
Maar voordat je iets gaat doen met een post-variable, moet je wel controleren of de variable bestaat. Dat voorkomt notices, en ook die moet je niet willen.quote:Op maandag 16 april 2012 23:53 schreef totalvamp het volgende:
[..]
Nee dat is mijn punt. Je moet dus een adequate check doen op je POST. strlen() + trim() + weetikveel()
Daarvoor gebruik je isset() niet empty. Zoals eerder aangegeven, maar alleen een isset is natuurlijk niet voldoende, net als empty dat niet is.quote:Op dinsdag 17 april 2012 00:13 schreef Light het volgende:
[..]
Maar voordat je iets gaat doen met een post-variable, moet je wel controleren of de variable bestaat. Dat voorkomt notices, en ook die moet je niet willen.
Yep. Volgens mij bedoelen we hetzelfde maar omschrijven we het anders.quote:Op dinsdag 17 april 2012 00:23 schreef totalvamp het volgende:
[..]
Daarvoor gebruik je isset() niet empty. Zoals eerder aangegeven, maar alleen een isset is natuurlijk niet voldoende, net als empty dat niet is.
Dit is inderdaad een belangrijk punt, tevens kun je controleren of je formulier wel goed over komt. Je kunt dus andere acties ondernemen als ze niet ge-set zijn. Dit kan betekenen dat er met het formulier is gerommeld.quote:Op dinsdag 17 april 2012 00:13 schreef Light het volgende:
[..]
Maar voordat je iets gaat doen met een post-variable, moet je wel controleren of de variable bestaat. Dat voorkomt notices, en ook die moet je niet willen.
Bedankt! Het werkt!quote:Op zondag 15 april 2012 20:47 schreef Pakspul het volgende:
[..]
[ code verwijderd ]
Zo kun je meerdere velden checken
| 1 | <input type="submit" value="Toevoegen" onClick=<a href="javascript:location.reload(true)" /> |
Wat is er mis mee? Dat je een tool nodig bent?quote:Op maandag 16 april 2012 13:58 schreef wipes66 het volgende:
Weet iemand nog een goede tool om php code mee te analyseren? Bv om ongebruikte variable/functies, foutieve opmaak etc mee te detecteren. Het liefst eentje met een webinterface (geen cli).
Na het schrijven naar de database de gebruiker doorsturen naar de goede pagina header("Location xxx"); ?quote:Op dinsdag 17 april 2012 10:31 schreef drumminggod het volgende:
[..]
Bedankt! Het werkt!
nog 1 resterend probleempje... Bij het herladen van mijn pagina verstuurd hij mijn berichtje net zo vaak als dat f5 wordt ingedrukt. Ik heb deze code:
[ code verwijderd ]
maar als ik op toevoegen heb geklikt en druk op f5 komt hij dus twee keer! (of meerdere malen)
Wat is er fout? Ik dacht aan buffer legen... alleen geen idee hoe dat netjes moet.
1. Simpelste oplossing is een redirectquote:Op dinsdag 17 april 2012 10:31 schreef drumminggod het volgende:
[..]
Bedankt! Het werkt!
nog 1 resterend probleempje... Bij het herladen van mijn pagina verstuurd hij mijn berichtje net zo vaak als dat f5 wordt ingedrukt. Ik heb deze code:
[ code verwijderd ]
maar als ik op toevoegen heb geklikt en druk op f5 komt hij dus twee keer! (of meerdere malen)
Wat is er fout? Ik dacht aan buffer legen... alleen geen idee hoe dat netjes moet.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php function esc($string){ return mysql_real_escape_string($string); } //Dit eronder ff opzoeken hoe je het aanpakt maar het generale idee is er wel :). $test = $db->fetchAssoc($db->query("Select * from table where text = ".esc($_POST['text'])."")); if(empty($test[0]['text'])) { // execute insert query. } redirect("pagina.php"); ?> |
Headers mogen geen output daarvoor hebben dus een reeks html + vervolgens de header kan tot fouten leiden.quote:Op dinsdag 17 april 2012 11:39 schreef Pakspul het volgende:
[..]
Na het schrijven naar de database de gebruiker doorsturen naar de goede pagina header("Location xxx"); ?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php //==== Redirect... Try PHP header redirect, then Java redirect, then try http redirect.: function redirect($url){ if (!headers_sent()){ //If headers not sent yet... then do php redirect header('Location: '.$url); exit; }else{ //If headers are sent... do java redirect... if java disabled, do html redirect. echo '<script type="text/javascript">'; echo 'window.location.href="'.$url.'";'; echo '</script>'; echo '<noscript>'; echo '<meta http-equiv="refresh" content="0;url='.$url.'" />'; echo '</noscript>'; exit; } }//==== End -- Redirect |
Liever gewoon code waarbij er niks wordt getoond tot op het einde als alles verwerkt isquote:Op dinsdag 17 april 2012 11:40 schreef cablegunmaster het volgende:
[..]
1. Simpelste oplossing is een redirect. Dan stuurt hij door naar de volgende pagina en dan mogen ze zo veel F5 drukken als ze willen maar dan herhaalt hij niet.
2. een Check inbouwen dat als de text precies zo al voorkomt dat hij niet meer een Insert uitvoert maar doorgaat met redirecten.
[ code verwijderd ]
[..]
Headers mogen geen output daarvoor hebben dus een reeks html + vervolgens de header kan tot fouten leiden.
[ code verwijderd ]
Prefereer daarom liever Redirect![]()
Dit, tussen door stukken al in elkaar zetten en op het laatste even layoutje er omheen rammen en er uit gooien. Dan kun je er zelf voor kiezen of er uberhaupt iets geprint moet worden en kun je veilig omgaan met header functies.quote:Op dinsdag 17 april 2012 12:09 schreef totalvamp het volgende:
[..]
Liever gewoon code waarbij er niks wordt getoond tot op het einde als alles verwerkt isdan heb je die problemen ook niet
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php //pseudo code. om +1 te krijgen. function Switch_ID($id) { $sourceid = $db->Assocfetch($db->query("select * from categorie where id = " '.esc($id) .' " limit 1 " )); $id++; $target = $db->Assocfetch($db->query("select * from categorie where id = " '.esc($id) .' " limit 1" )); if(!isset($target)) { return false; }else{ $db->query("Update categorie set Variables = $sourceid[0] where id = " '.$id.' " limit 1" ); $id--; $db->query("Update categorie set Variables = $target[0] where id = " '.esc($id).' " limit 1" ); } } ?> |
Is dat niet het probleem opschuiven?quote:Op dinsdag 17 april 2012 17:51 schreef Pakspul het volgende:
Gebruik een order kolom. Haal eerst oude order nummer op en zet die in de nieuwe nummer kun je berekenen door de richting.
opschuiven maakt toch niet uit, dan sorteer je toch gewoon op die kolom en heb je het allemaal goed. Als je ID nummers gaat veranderen dan begrijp je het idee van een primary key niet helemaal.quote:Op dinsdag 17 april 2012 17:57 schreef cablegunmaster het volgende:
[..]
Is dat niet het probleem opschuiven?Want dan zit je met een orderkolom met 1,2,3,4
en als je een groot aantal hebt. dan heb je dat probleem alsnog.
ff nadenken![]()
Daarom moet je pas output richting browser sturen nadat alle logica is geweest. Dan heb je daar geen last van.quote:Op dinsdag 17 april 2012 11:40 schreef cablegunmaster het volgende:
[..]
1. Simpelste oplossing is een redirect. Dan stuurt hij door naar de volgende pagina en dan mogen ze zo veel F5 drukken als ze willen maar dan herhaalt hij niet.
2. een Check inbouwen dat als de text precies zo al voorkomt dat hij niet meer een Insert uitvoert maar doorgaat met redirecten.
[ code verwijderd ]
[..]
Headers mogen geen output daarvoor hebben dus een reeks html + vervolgens de header kan tot fouten leiden.
[ code verwijderd ]
Prefereer daarom liever Redirect![]()
Bij de redirect code krijg ik dit:quote:Op dinsdag 17 april 2012 11:40 schreef cablegunmaster het volgende:
[..]
1. Simpelste oplossing is een redirect. Dan stuurt hij door naar de volgende pagina en dan mogen ze zo veel F5 drukken als ze willen maar dan herhaalt hij niet.
2. een Check inbouwen dat als de text precies zo al voorkomt dat hij niet meer een Insert uitvoert maar doorgaat met redirecten.
[ code verwijderd ]
[..]
Headers mogen geen output daarvoor hebben dus een reeks html + vervolgens de header kan tot fouten leiden.
[ code verwijderd ]
Prefereer daarom liever Redirect![]()
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php if (mysql_num_rows($sql) == 0) { // Als er nog geen reacties geplaatst zijn echo 'We hebben nog geen reacties!'; } else { while($data = mysql_fetch_assoc($sql)) { // Als er wel reacties zijn geplaatst worden deze nu weergegeven echo '<b>Naam:</b> '.htmlspecialchars(stripslashes($data['door'])).'<br /> <b>Datum:</b> '.htmlspecialchars(stripslashes($data['datum'])).'<br /> <b>Bericht:</b><br />'.ubb($data['bericht']).'<br /><br /> <b>_________________________________________________________________________________________________________________________________________</b>'; } } { } redirect("gastenboek.php"); ?> |
natuurlijk! In de header moet het ook staan!quote:Op donderdag 19 april 2012 11:55 schreef boem-dikkie het volgende:
Je gebruikt een functie die niet gedefinieerd is. Heb je zelf een functie gemaakt die redirect heet? Je kunt mits je geen HTML voor je code hebt staan header('location: gastenboek.php'); gebruiken.
redirect() is niet een native functie van PHP, wat er bedoelt werd is http://php.net/manual/en/function.header.phpquote:Op donderdag 19 april 2012 11:51 schreef drumminggod het volgende:
[..]
Bij de redirect code krijg ik dit:
Fatal error: Call to undefined function redirect() in D:\xxx\UsbWebserver\UsbWebserver\Root\xxx\gastenboek.php on line 147
De pagina heet gastenboek en de code om line 147 is:
[ code verwijderd ]
Een noscript-tag in 2012? Really? Verwacht je veel bezoekers met Netscape 2?quote:Op dinsdag 17 april 2012 11:40 schreef cablegunmaster het volgende:
[..]
1. Simpelste oplossing is een redirect. Dan stuurt hij door naar de volgende pagina en dan mogen ze zo veel F5 drukken als ze willen maar dan herhaalt hij niet.
2. een Check inbouwen dat als de text precies zo al voorkomt dat hij niet meer een Insert uitvoert maar doorgaat met redirecten.
[ code verwijderd ]
[..]
Headers mogen geen output daarvoor hebben dus een reeks html + vervolgens de header kan tot fouten leiden.
[ code verwijderd ]
Prefereer daarom liever Redirect![]()
failsafequote:Op donderdag 19 april 2012 13:58 schreef Tijn het volgende:
[..]
Een noscript-tag in 2012? Really? Verwacht je veel bezoekers met Netscape 2?
Gewoon lynx gebruikenquote:Op donderdag 19 april 2012 13:58 schreef Tijn het volgende:
[..]
Een noscript-tag in 2012? Really? Verwacht je veel bezoekers met Netscape 2?
Er bestaat ook nog zoiets als javascript uitschakelen of een javascript-blokker als plugin geinstalleerd hebben. Het is een kleine moeite om zo'n tag met een melding op te nemen, vooral voor webapplicaties die functioneel gezien vertrouwen op javascript.quote:Op donderdag 19 april 2012 13:58 schreef Tijn het volgende:
[..]
Een noscript-tag in 2012? Really? Verwacht je veel bezoekers met Netscape 2?
| 1 2 3 4 | RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*) index.php?p=$1 [L] |
| 1 2 3 4 5 6 7 | $p = $_GET["p"]; ... $query = "SELECT type,naam,url,id FROM artikelen WHERE naam='$p'"; ...etc |
| 1 2 3 4 | RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/(.*) index.php?x=$1&p=$2 [L] |
Dit is erg gevaarlijke code als je dit zo zou gebruiken.quote:Op vrijdag 20 april 2012 12:05 schreef JDx het volgende:
alles staat in een mapje: /artikel/
ik heb een .htacccess bestand met dit:
[ code verwijderd ]
en een index.php met dit:
[ code verwijderd ]
En dit werkt gewoon als ik dit doe: /artikel/appels
Maar eigenlijk wil ik die niet in een aparte map hebben, dat /artikel/ zou ook dynamisch moeten zijn.
Wat is er gevaarlijk aan dan?quote:Op vrijdag 20 april 2012 16:10 schreef totalvamp het volgende:
[..]
Dit is erg gevaarlijke code als je dit zo zou gebruiken.
Je escaped de variable $p niet die direct afkomstig is uit de GET array en dus door gebruikers van het script beïnvloedbaar is. Je script is in deze staat vatbaar voor SQL injecties.quote:
POST of GET maakt niks uit, het gaat erom dat je de input filtert voordat je het in je query stopt, omdat anders mensen zelf queries kunnen gaan invoeren en daarmee je database kunnen uitlezen en misschien zelfs veranderen.quote:Op zaterdag 21 april 2012 13:32 schreef JDx het volgende:
Wat vaag, dit heb ik ook gewoon van een tutorial en gebruik ik al jaren op al mijn sites, moet ik dan een post gebruiken?
| 1 2 3 4 5 | <?php 'SELECT * FROM `table` WHERE `string` = "'.mysql_real_escape_string($_GET['foo']).'" AND `number` = '.intval($_GET['bar']); ?> |
Zou het als ik jou was snel oplossen, de onderste site in je signature is al vatbaar daarvoor.quote:Op zaterdag 21 april 2012 13:32 schreef JDx het volgende:
Wat vaag, dit heb ik ook gewoon van een tutorial en gebruik ik al jaren op al mijn sites, moet ik dan een post gebruiken?
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |