Heb je één voorbeeld van tabellen, gegevens en een query die anders uitgevoerd wordt in Theta style dan in ANSI style? Het zou wel heel knullig zijn als de query optimizer dit verschillend oppakt.quote:Op vrijdag 9 januari 2009 18:10 schreef Farenji het volgende:
[..]
Die tweede vorm is veel efficienter. Je geeft daar meteen aan hoe gejoind moet worden in de on clause, en daardoor kan de query beter geoptimaliseerd worden.
Dit moet ik rectificeren. Het maakt geen fuck uit. Ik heb een benchmark gedraaid op een database met tabellen van miljoenen records en beide vormen zijn even snel.quote:Op vrijdag 9 januari 2009 18:10 schreef Farenji het volgende:
[..]
Die tweede vorm is veel efficienter. Je geeft daar meteen aan hoe gejoind moet worden in de on clause, en daardoor kan de query beter geoptimaliseerd worden.
Met meer states is enum inderdaad een optiequote:Op vrijdag 9 januari 2009 15:24 schreef Gloeidoos het volgende:
Ik heb de tables aangepast om het een beetje simpel te houden. In feite is het een kolomnaam met de naam state, enum('enabled','disabled'). Volgens mij komen hier uiteindelijk nog meer states bij, als dat nodig is.
Maar voor booleans zal ik dan voortaan wel 0 en 1 gebruiken.
De integer die jij voorstelde was sowieso overdone om 0 of 1 op te slaan. Een tinyint voldoet dan al. En onder de byte per veld kom je niet, dus tinyint/enum is om het even en dan kies je natuurlijk de duidelijkste.quote:Op vrijdag 9 januari 2009 20:09 schreef Roy_T het volgende:
[..]
Met meer states is enum inderdaad een optie
Het zou dan ook niet best zijn als het wél uit zou maken.quote:Op vrijdag 9 januari 2009 19:42 schreef Farenji het volgende:
[..]
Dit moet ik rectificeren. Het maakt geen fuck uit. Ik heb een benchmark gedraaid op een database met tabellen van miljoenen records en beide vormen zijn even snel.
Jepsquote:
Volgens mij maakt het MySQL niets uit of je WHERE of ON gebruikt bij een JOIN. Tenzij je op zoek gaat naar NULL-waardes, dat lukt je niet zonder ON.quote:Op vrijdag 9 januari 2009 18:10 schreef Farenji het volgende:
[..]
Die tweede vorm is veel efficienter. Je geeft daar meteen aan hoe gejoind moet worden in de on clause, en daardoor kan de query beter geoptimaliseerd worden.
Bij een inner join maakt het inderdaad niets uitquote:Op zaterdag 10 januari 2009 15:47 schreef Light het volgende:
[..]
Volgens mij maakt het MySQL niets uit of je WHERE of ON gebruikt bij een JOIN. Tenzij je op zoek gaat naar NULL-waardes, dat lukt je niet zonder ON.
hij laat het form zien..quote:Op zaterdag 10 januari 2009 16:42 schreef GlowMouse het volgende:
Waarom wil hij niet toevoegen? Wat geeft echo $voegtoe?
submitquote:
1 2 3 4 5 6 | $a = array(false, 0, '0'); foreach($a as $value) { echo $value ? 'set' : 'not set'; } ?> |
empty en isset zijn niet helemaal elkaars tegenpolen. Een variabele kan best een waarde hebben (isset) en toch leeg zijn (empty).quote:Op zaterdag 10 januari 2009 17:12 schreef Kerol het volgende:
Bij een IF Isset word gekeken of de variabele die je aangeeft (in jouw geval $value) een waarde heeft.
Dit kun je bijvoorbeeld gebruiken om te controleren of iemand op de Submit knop heeft gedrukt o.i.d.
Ik gebruik liever empty.
1 2 3 4 5 6 7 8 9 | $a = 'a random string'; $b = 0; if ( $a == true && $b == false && $a == $b ) { die ( 'The universe is broken' ); } ?> |
quote:Op zaterdag 10 januari 2009 16:35 schreef cablegunmaster het volgende:
ik heb nu alles werkend behalve het toevoegen.
hoe krijg je dat een form submit en dan insert?
ik zit nu namelijk met dat hij niet wil toevoegen.
hij kan de database wel connecten.
<?php
if (isset($_POST['submit'])){
<inc 'connect.php' >
$submit = "insert into reis
(bestemming )
values ( ' ".strip_tags($_POST['bestemming']." ' )" ;
$voegtoe = mysql_query($submit) or die (mysql_error ());
} else {
?>
<html>
<body>
<form action="<?php echo($_server["php_self"]);?> method="post">
<input type="text" name="bestemming">
<input type ="submit" name="submit" value="verzenden">
<input type="reset" name="reset" value="leegmaken">
</form>
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 | if ((int)0) { echo " int 0 is true "; } else { echo " int 0 is false "; } if ((string)"0") { echo " string 0 is true "; } else { echo " string 0 is false "; } if ((string)"wat dan ook maar niet 0") { echo " n.e. string is true "; } else { echo " n.e. string is false "; } if ((string)"watdanook" == (int)0) { echo " n.e. string is equal to int 0 "; } else { echo " n.e. string is not equal to int 0 "; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | var_dump(0 == "a"); // 0 == 0 -> true var_dump("1" == "01"); // 1 == 1 -> true var_dump("1" == "1e0"); // 1 == 1 -> true switch ("a") { case 0: echo "0"; break; case "a": // never reached because "a" is already matched with 0 echo "a"; break; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | if(isset($_POST['code'])) { $code = preg_replace("/[^a-zA-Z0-9s]/", '', strtolower(trim($_POST['code']))); $result = $db->query("SELECT iets FROM tabel WHERE code = '". $db->real_escape_string($code) ."';"); if($result->num_rows) { // doe iets header('Location: http://het.is.gelukt.nl/pagina.html'); exit; } else { echo 'Je code is onjuist.'; exit; } echo 'Oké... wat nu?'; } ?> |
Dan zal in dat proces wel iets fout zijn gegaan. Exit vergeten na de location-header ofzo.quote:Op zaterdag 10 januari 2009 19:29 schreef HuHu het volgende:
PS: uiteraard had ik er wat anders/netjes van gemaakt, maar het gaat om het idee. Dit is echt het meest vage wat ik tot nu toe met PHP ben tegen gekomen.
Jawel, als je error_reporting op E_ALL zet, zal je zien dat php een warning geeft dat je een ongedefinieerde variable gebruikt als je if($value) gebruikt.quote:Op zaterdag 10 januari 2009 17:03 schreef Likkende_Lassie het volgende:
isset... gebruiken jullie die nou altijd? Ik vind het echt een rare functie..snap hem wel, maar zonder isset, heb je toch hetzelfde?
Bijvoorbeeld:
if(ifset($value)){
}
tegen
if($value){
}
geen verschil toch?
1 2 3 4 5 6 7 8 | $query = "SELECT COUNT(*) FROM members WHERE username='".$myusername."' AND password='".$password."'"; $result = mysql_query($query); $rowcount = mysql_num_rows($result); // als er een resultaat is.. (dus groter dan 0) if($rowcount > 0) ?> |
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 | error_reporting(E_ALL); mysql_connect("localhost", "root", "")or die("mysql_error"); mysql_select_db("opdracht1")or die("mysql_error"); if(!empty($_POST)) { // username and password verstuurd uit formulier $myusername=$_POST['username']; $mypassword=$_POST['wachtwoord']; // kleine protectie MySQL injection $myusername = stripslashes($myusername); $mypassword = stripslashes($mypassword); $myusername = mysql_real_escape_string($myusername); $mypassword = mysql_real_escape_string($mypassword); $password = md5($mypassword); // kijk of er een username is met het ingevulde wachtwoord $query = "SELECT COUNT(*) FROM members WHERE username='".$myusername."' AND password='".$password."'"; $result = mysql_query($query); $rowcount = mysql_num_rows($result); // als er een resultaat is.. (dus groter dan 0) if($rowcount > 0) { $user = $_POST["username"]; $wachtwoord = $_POST["wachtwoord"]; $_SESSION['username'] = $user; $_SESSION['wachtwoord'] = $wachtwoord; header("Location: beveiligd.php"); } else { echo "U heeft geen goede combinatie van emailadres en wachtwoord gebruikt."; } } else { echo "U heeft de pagina verkeerd opgeroepen."; } ?> |
Dus ik kan beterquote:Op zondag 11 januari 2009 00:09 schreef GlowMouse het volgende:
count(*) geeft altijd een rijtje terug, namelijk een rij met daarin een getal dat het aantal rijen dat aan WHERE voldoet voorstelt.
1 2 3 | $query = "SELECT `username` FROM `members` WHERE `username`='".$myusername."' AND password='".$password."'"; ?> |
En waarom niet? Nu bekijkt hij toch hoeveel rijen usernames er zijn met de ingevoerde username en password.quote:Op zondag 11 januari 2009 00:19 schreef GlowMouse het volgende:
Nee, je moet niet mysql_num_rows gebruiken.
Eensquote:Op zondag 11 januari 2009 00:26 schreef Kerol het volgende:
[..]
En waarom niet? Nu bekijkt hij toch hoeveel rijen usernames er zijn met de ingevoerde username en password.
Bestaan de ingevoerde username en password in de db? -> Dan zal hij $rowcount = 1 geven. (Groter dan 1 kan ook niet omdat een username uniek is)
Bestaan de ingevoerde username en password niet in de db? -> Dan zal hij $rowcount = 0 geven en zal hij direct door gaan naar de ELSE statement omdat alleen als $rowcount groter dan 0 is hij in die IF terugkomt.
het is gelukt alleen maar een veld aanpassenquote:Op zondag 11 januari 2009 13:22 schreef GlowMouse het volgende:
http://dev.mysql.com/doc/refman/5.1/en/datetime.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $uploaddir = '/var/www/uploads/'; $uploadfile = $uploaddir . basename($_FILES['avatar']['name']); echo '<pre>'; if (move_uploaded_file($_FILES['avatar']['tmp_name'], $uploadfile)) { echo "Bestand is valide en is geupload \n"; } else { echo "dit bestand is niet valide! \n"; } echo 'Wat heb ik fout gedaan:'; print_r($_FILES); print "</pre>"; ?> |
dus eigenlijk werkt het script wel als ik het online zou plaatsen?quote:Op zondag 11 januari 2009 15:09 schreef GlowMouse het volgende:
move_uploaded_file werkt op je filesystem en localhost heb je niet op je filesystem.
Ja daar heb je totaal gelijk in.quote:Op zondag 11 januari 2009 15:13 schreef GlowMouse het volgende:
Dat script werkt prima ja. Hij zet het bestand op de lokatie $uploadfile, zie de documentatie bij move_uploaded_file.
Een zin als "en ik snap totaal niet hoe ik C:\bestand.jpg kan laten weergeven dat hij dat verplaatst" is onbegrijpelijk.
Wat heeft FTP hiermee te maken?
Ik bedoelde dan ook niet INTEGER vs TINYINT, maar een integer i.p.v. een string (het woord enum was toen helemaal nog niet gevallen). Het ging mij om het datatype.quote:Op vrijdag 9 januari 2009 20:12 schreef GlowMouse het volgende:
De integer die jij voorstelde was sowieso overdone om 0 of 1 op te slaan. Een tinyint voldoet dan al. En onder de byte per veld kom je niet, dus tinyint/enum is om het even en dan kies je natuurlijk de duidelijkste.
Als je dit nou terugleest, snap je dan zelf wel wat je schrijft?quote:Op zondag 11 januari 2009 15:22 schreef cablegunmaster het volgende:
[..]
Ja daar heb je totaal gelijk in.
ik bedoel hoe kan je een script een plaatje laten weergeven.
ik kies bijvoorbeeld C:\Glowmouse.jpg
en dan wil ik dat hij het weergeeft als C:\Glowmouse.jpg
ipv dat hij dat doet. Geeft hij Glowmouse.jpg weer.
op de localhost zelf ipv op C:\ hierdoor kan het plaatje niet weergegeven worden.
het plaatje hoeft niet verplaatst te worden![]()
weet niet of het mogelijk is![]()
ik bedoel dat hij het opslaat alsquote:Op zondag 11 januari 2009 18:01 schreef Xcalibur het volgende:
[..]
Als je dit nou terugleest, snap je dan zelf wel wat je schrijft?
Ik vermoed dat je het plaatje onder een andere naam wilt weergeven dan dat het opgeslagen is, door middel van een script? In dat geval moet je je eens gaan inlezen bij header() en file_get_contents()
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 | echo var_dump($_POST); if (isset($_POST['Submit'])) { if ($_POST['vnaam'] == "" ) { $error = "Voornaam is niet ingevuld<BR />"; } if ($_POST['anaam'] == "") { $error .= "Achternaam is niet ingevuld<BR />"; } if ($_POST['email'] == "" ) { $error .= "Uw email is niet ingevuld<BR />"; } if ($_POST['comment'] == "" ) { $error .= "U heeft geen commentaar ingevuld<BR />"; } if (strlen($_POST["vnaam"]) <= 2) { $error .= "Voornaam moet minstens 2 tekens bevatten<BR />"; } if (strlen($_POST["anaam"]) < 3) { $error .= "Achternaam moet minstens 3 tekens bevatten"; } //Als naam, leeftijd of land niet is ingevuld, is $error NIET leeg. if (!isset($error)) //als de variabele $error niet is aangemaakt ... { $naam = ucfirst($_POST["vnaam"]); $anaam = ucfirst($_POST["anaam"]); $email = $_POST["email"] ; $date = $_POST["email"]; $comment = $_POST["comment"]; $avatar = $_POST["avatar"]; $time = $_POST["datum"]; trim($naam); trim($anaam); strip_tags($naam); strip_tags($anaam); strip_tags($email); strip_tags($comment); strip_tags($avatar); // was ik later mee bezig weet niet of het werkt $uploaddir = 'localhost/phpweek/'; $uploadfile = $uploaddir . basename($_FILES['avatar']['name']); echo '<pre>'; if (move_uploaded_file($_FILES['avatar']['tmp_name'], $uploadfile)) { echo "Bestand is valide en is geupload \n"; } else { echo "dit bestand is niet valide! \n"; } echo 'Wat heb ik fout gedaan:'; print_r($_FILES); print "</pre>"; } */ echo $naam." ".$anaam." <br><a href=\"mailto:".$email."\">".$email."</a><br> <img src=\"".$_FILES['avatar']['name']."\"/><br> ".$time."<br>Uw commentaar:<br>".$comment; echo("<br><a href =\"".$_SERVER["PHP_SELF"] . "\">Nieuw commentaar toevoegen</a>"); } else { echo "Gelieve alle formuliervelden netjes in te vullen !<BR /><BR />"; echo "<FONT COLOR=\"#FF0000\">".$error."</FONT> <br><a href =\"".$_SERVER["PHP_SELF"] . "\">Probeer opnieuw</a>"; } } else { // als er niks ingevuld is word het gastenboek weergegeven net als het hoort. ?> |
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 | <head> <title>Gastenboek</title> </head> <body> <h1>Schrijf een bijdrage in ons gastenboek!</h1> <form enctype="multipart/form-data" action="<?php echo($_server["php_self"]);?>" method="post"> <table border = "0"> <tr> <td align="right">Voornaam</td> <td><input type="text" name="vnaam" size='10'></td> </tr> <tr> <td align="right">Achternaam</td> <td><input type="text" name="anaam" size='10'></td> </tr> <tr> <td align="right">E-mailadres</td> <td><input type="text" name="email" size='10'></td> </tr> <tr> <td align="right">Avatar:</td> <td><input type="hidden" name="MAX_FILE_SIZE" value="30000" /><input type="file" name="avatar"></td> </tr> <tr> <td VALIGN="top">Uw bijdrage:</td> <td><textarea name="comment" size="255" rows="8"></textarea></td> </tr> <tr> <td><input type="hidden" name="datum" value="<?php echo(date("Y-m-d H:i:s")); ?>"> </td> <td><input type="Submit" name="Submit" value="Verzenden"<input type="reset" name="Reset" value="Leegmaken"></td> </tr> </table> </form> </table> |
1 2 3 | } ?> |
1 2 | </html> |
je mist het puntquote:Op zondag 11 januari 2009 18:18 schreef Farenji het volgende:
Je moet het plaatje gewoon in de http root opslaan en dan kun je in je html ernaar verwijzen als href="/plaatje.gif".
Twee of drie diep is zát voor 100.000 afbeeldingen. De eerste vier tekens van de bestandsnaam zorgen trouwens niet echt voor een uniforme verdeling over mappen, of je applicatie moet bestanden zelf een random naam geven.quote:Op zondag 11 januari 2009 22:30 schreef Roy_T het volgende:
Sterker nog, als het om echt heel veel bestanden gaat kun je beter meer subdirs maken. Voor een applicatie met honderdduizend+ afbeeldingen plaats ik een bestand met de naam igifgarioufglieruhg.jpg daarom in "file/i/g/i/f/igifgarioufglieruhg.jpg"; oftewel subdirs op basis van de eerste 4 karakters van de naam. Als je zoveel bestanden in één dir hebt staan, dan wil dat nog weleens vertragend werken op filesystem niveau.
Bij twee niveau's diep en letters voor het aangeven van de niveau's heb je 148 bestanden per map. Uitgaande van een uniforme verdeling, uiteraard.quote:Op zondag 11 januari 2009 22:42 schreef GlowMouse het volgende:
[..]
Twee of drie diep is zát voor 100.000 afbeeldingen. De eerste vier tekens van de bestandsnaam zorgen trouwens niet echt voor een uniforme verdeling over mappen, of je applicatie moet bestanden zelf een random naam geven.
Het is door randomization inderdaad uniform verdeeld. Ik had het over 100.000 plus, de kans is groot dat het er binnenkort een veelvoud van zijn. De details doen er eigenlijk ook niet toe; het was meer een "tip" over architectuur. Of je 2 of 4 niveau's diep wilt gaan kan van meerdere zaken afhangen natuurlijkquote:Op zondag 11 januari 2009 22:42 schreef GlowMouse het volgende:
Twee of drie diep is zát voor 100.000 afbeeldingen. De eerste vier tekens van de bestandsnaam zorgen trouwens niet echt voor een uniforme verdeling over mappen, of je applicatie moet bestanden zelf een random naam geven.
Vanaf wanneer gaat zoiets vertragend werken en wat is "vertragend"? Ik zit namelijk ook met tienduizenden afbeeldingen die momenteel nog in één map staan. De honderduizend afbeeldingen is naderend en geen idee hoe zich dit gaat houden als er nog tienduizenden afbeeldingen bij gaan komen. Kan iemand daar iets over zeggen?quote:Op zondag 11 januari 2009 22:30 schreef Roy_T het volgende:
Sterker nog, als het om echt heel veel bestanden gaat kun je beter meer subdirs maken. Voor een applicatie met honderdduizend+ afbeeldingen plaats ik een bestand met de naam igifgarioufglieruhg.jpg daarom in "file/i/g/i/f/igifgarioufglieruhg.jpg"; oftewel subdirs op basis van de eerste 4 karakters van de naam. Als je zoveel bestanden in één dir hebt staan, dan wil dat nog weleens vertragend werken op filesystem niveau.
Ah... oké, dan hoef ik me voorlopig geen zorgen te maken denk ik. Alleen dat laatste (openen in explorer) klopt inderdaad, dat gaat echt rete-traag. Maar dat hoeft gelukkig nooit te gebeuren.quote:Op maandag 12 januari 2009 12:10 schreef GlowMouse het volgende:
Die limieten komen volgens mij meer uit oude filesystems. Tegenwoordig heb je er geen enkel probleem mee, totdat je het mapje opent in bv explorer.
1 2 3 4 5 6 7 8 9 10 11 | sel = document.frm.select1.selectedIndex; if(sel){ document.frm.select2.remove(sel); //document.frm.select2.selectedIndex =0; }else{ document.frm.select2.options[sel] = new Option('???wat te doen????',2); } } |
quote:Op maandag 12 januari 2009 13:28 schreef Likkende_Lassie het volgende:
Even een javascript vraagje, heb het ook al gepost in een javascript voor dummies, maar volgens mij zijn die topics niet heel erg actief
De sitiutatie is als volgt:
- Ik heb meerdere select's op mijn pagina, met precies dezelfde waarde, alleen de naam van select is anders.
- Ik wil, dat zodra er één van de options wordt geselecteerd, in een willekeurige select, dat in elke select (behalve de huidige), de optie verdwijnt. Wordt de optie niet meer geselecteerd, dan moet hij weer overal verschijnen.
Duidelijk?
Dit heb ik al aan code:
[ code verwijderd ]
Eigenlijk zou hij alle select's op de pagina in een array moeten gooien, en vervolgens hier zn ding doen.
Wie o wie!
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 | error_reporting(E_ALL); mysql_connect("localhost", "root", "")or die("mysql_error"); mysql_select_db("opdracht1")or die("mysql_error"); $username = $_SESSION['username']; if (empty($_POST['submit'])) { Weet je zeker dat je je account wilt verwijderen? <br/> <form method="post" action=" $_SERVER['PHP_SELF'] "> Ja <input type="radio" name="accdel" value="ja"> Nee <input type="radio" name="accdel" value="nee"> <br/> <input type="submit" name="submit" value="Verwijder!"/> </form> } else { if ($_POST['accdel'] == "ja") { mysql_query("DELETE FROM `members` WHERE `username` = '".$username."'"); session_destroy(); echo "Uw account is succesvol verwijderd."; } else { header(profiel.php); } } ?> |
SQL Injection maakt niet uit voor dit, het is maar een opgave voor school.quote:Op maandag 12 januari 2009 20:21 schreef GlowMouse het volgende:
mysql_error geeft? SQL injection rekening mee gehouden?
header(profiel.php) is geen geldige PHP-code trouwens.
$username is niet leeg, er staat wel wat in zie ik net via var_dump();quote:Op maandag 12 januari 2009 20:24 schreef Farenji het volgende:
Weet je zeker dat die $username var goed gevuld is? Je vangt de sql errors ook niet af dus als daar wat fout gaat zie je het niet. Maar als $username leeg is dan slaagt de query wel gewoon maar wordt er niks verwijderd.
Je kunt de query gewoon bekijken en zelf uitvoeren en zien wat er gebeurt.quote:Op maandag 12 januari 2009 20:26 schreef Kerol het volgende:
[..]
SQL Injection maakt niet uit voor dit, het is maar een opgave voor school.
mysql_error geeft niets, want er is geen error, de rij wordt in de db gewoon niet verwijderd.
Notice: Undefined index: username in C:\xampp\htdocs\marcc-online\deleteacc.php on line 22quote:Op maandag 12 januari 2009 20:28 schreef GlowMouse het volgende:
[..]
Je kunt de query gewoon bekijken en zelf uitvoeren en zien wat er gebeurt.
Mja hij werkt opeens weer, geen idee wat de fout nou was maar opeens werkt het scriptje weer.quote:Op maandag 12 januari 2009 20:32 schreef GlowMouse het volgende:
En var_dump($_SESSION)? Je bent een regeltje vergeten
1 |
1 |
1 |
Dat dus. En verder zou je genoeg hebben aan:quote:Op dinsdag 13 januari 2009 15:34 schreef GlowMouse het volgende:
De + heeft in een regexp een speciale betekenis en moet je dus escapen.
1 2 3 | preg_match('/\'(.*?)\'/i', "example_text + 'needle';", $matches); ?> |
Dan zou een \ voor de + genoeg moeten zijn, zoals GlowMouse en Farenji aangeven.quote:Op dinsdag 13 januari 2009 15:41 schreef schwa78 het volgende:
Mijn fout. Ik had moeten vertellen dat dat hele "example_text + 'needle';" stuk in een grotere tekst staat.
Ik heb dus die 'needle' nodig en het enige dat ik weet is dat het altijd voorafgegaan wordt door 'example_text + ' en tussen aanhalingstekens staat.
Hoop dat het zo wat duidelijker is.
Kan ik over meespreken heb een grote collectie aan .txt bestandjes van ieder 1.4gig enzoquote:Op maandag 12 januari 2009 12:18 schreef HuHu het volgende:
[..]
Ah... oké, dan hoef ik me voorlopig geen zorgen te maken denk ik. Alleen dat laatste (openen in explorer) klopt inderdaad, dat gaat echt rete-traag. Maar dat hoeft gelukkig nooit te gebeuren.
logbestanden?quote:Op dinsdag 13 januari 2009 17:12 schreef Wouser het volgende:
[..]
Kan ik over meespreken heb een grote collectie aan .txt bestandjes van ieder 1.4gig enzoen als ik de map open duurt het wel eventjes... Maar dat komt meer omdat hij dan euh de auteur en de lengte van het txt bestandje moet ophalen
1 2 | $array = $xml[0][1]; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <ITEM> <ITEM_NAAM>product A</ITEM_NAAM> <ITEM_ID>5123</ITEM_ID> </ITEM> <ITEM> <ITEM_NAAM>product B</ITEM_NAAM> <ITEM_ID>123</ITEM_ID> </ITEM> <ITEM> <ITEM_NAAM>product C</ITEM_NAAM> <ITEM_ID>952</ITEM_ID> </ITEM> </BESTAND> |
dat vind ik ook veel !quote:Op dinsdag 13 januari 2009 22:04 schreef GlowMouse het volgende:
Dan zul je het over nog geen 1000 bestandjes hebben van 1.4 GB/stuk.
Je loopt recursief door de xml tree heen en bouwt ondertussen de array op. Lijkt me vrij recht toe recht aan.quote:Op woensdag 14 januari 2009 00:17 schreef Likkende_Lassie het volgende:
[...]
Als ik bijvoorbeeld echo $array = $xml[1][0]; zou doen, wil ik de NAAM van het 2e item zien...
Volgens mij moet het niet heel erg moelijk zijn, maar iemand misschien enig idee hoe dit in een array te krijgen?
Inderdaad, en op deze pagina staan een paar prima functies daarvoor (in de comments): http://nl3.php.net/xml_parsequote:Op woensdag 14 januari 2009 07:29 schreef SuperRembo het volgende:
[..]
Je loopt recursief door de xml tree heen en bouwt ondertussen de array op. Lijkt me vrij recht toe recht aan.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $row = 0; $row_2= 0; $dump = array(); foreach ($xml AS $data){ $dump[$row] = $data; $row++; } foreach ($dump AS $data_2){ echo $data_2->NAAM; echo '<br />'; } |
En dat is een probleem omdat?quote:Op woensdag 14 januari 2009 09:50 schreef Likkende_Lassie het volgende:
Ik probeer het volgende, en ik kan niet anders dan de atribute op te roepen als $data_2->NAAM ipv $data_2[0];..
[ code verwijderd ]
Zorgen dat er arrays in komen, en geen objectenquote:Op woensdag 14 januari 2009 11:05 schreef Likkende_Lassie het volgende:
ik het niet zo wil aan roepen![]()
dus hoe dat te doen?
Je kan die hash die door simplexml wordt gemaakt toch omzetten naar elk formaat dat je zelf wil? Daar kun je gewoon je eigen routine voor schrijven. Of je zou je kunnen afvragen waarom je perse de data als array wil benaderen, wat is precies het voordeel?quote:Op woensdag 14 januari 2009 11:05 schreef Likkende_Lassie het volgende:
[..]
ik het niet zo wil aan roepen![]()
dus hoe dat te doen?
1 2 3 4 5 6 7 | foreach($xml->body[0]->attributes() as $a => $b) { if($a=='type') { echo $a,'="',$b,"\"</br>"; }else{ } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $dom = new DomDocument(); $dom->load('/uploads/'.$_GET['option_2']); foreach ($dom->documentElement->childNodes as $articles) { if ($articles->nodeType == 1 && $articles->nodeName == "INFO") { foreach ($articles->childNodes as $item) { if ($item->nodeType == 1 AND $i < 1) { $files[0][] = $item->nodeName; } } $i++; } } ?> |
1 2 3 4 5 6 7 8 9 10 | images.id AS imageID, images.filex , images.filey FROM images_tree LEFT JOIN images ON images.cat_id = images_tree.id WHERE images_tree.tree_id = '1' GROUP BY images_tree.id ORDER BY images_tree.title LIMIT 20, 20 |
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 | -- Tabel structuur voor tabel `images` -- CREATE TABLE IF NOT EXISTS `images` ( `id` int(10) unsigned NOT NULL auto_increment, `cat_id` mediumint(8) unsigned NOT NULL, `user_id` mediumint(8) unsigned NOT NULL, `user_ip` varchar(32) NOT NULL, `filename` varchar(32) NOT NULL, `filedate` date NOT NULL, `filetype` char(1) NOT NULL, `filesize` int(10) unsigned NOT NULL, `filecrc` varchar(15) NOT NULL, `filex` mediumint(8) unsigned NOT NULL, `filey` mediumint(8) unsigned NOT NULL, `views` int(10) unsigned NOT NULL, `vote` tinyint(3) unsigned NOT NULL, `votes` mediumint(8) unsigned NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `filesize` (`filesize`,`filecrc`,`filex`,`filey`,`cat_id`), KEY `cat_id` (`cat_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Tabel structuur voor tabel `images_tree` -- CREATE TABLE IF NOT EXISTS `images_tree` ( `id` mediumint(8) unsigned NOT NULL auto_increment, `tree_id` mediumint(8) unsigned NOT NULL, `title` varchar(32) NOT NULL, `description` varchar(255) NOT NULL, `images` mediumint(8) unsigned NOT NULL, `images_size` bigint(20) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `id` (`id`,`tree_id`), KEY `title` (`title`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; |
1 2 3 | 1 SIMPLE images_tree index NULL title 34 NULL 1364 Using where; Using temporary 1 SIMPLE images ref cat_id cat_id 3 ****.images_tree.id 54 |
Dat heb je wanneer je LIMIT gebruikt.quote:Op donderdag 15 januari 2009 17:16 schreef Chandler het volgende:
Ja die index werkt idd heerlijk
-edit-
alleen bij de eerste pagina's scheelt het aardig, maar hoever ik in de database kom (qua records) hoe langzamer
ik doel eropquote:
1 2 3 4 5 | $PLAATJE = "rand(1,9)" echo "<img src =\"leukplaatje".$PLAATJE.".jpg\"/> "; ?> |
nee ik bedoel weren tegen sql injecties.quote:Op donderdag 15 januari 2009 20:36 schreef Xcalibur het volgende:
wat wil je dan beveiligen? en waarom?![]()
het random plaatje wat je post is op zich hartstikke leuk natuurlijk, maar heeft niks met beveiling te maken
Door te zorgen dat je in ieder geval niet de 25 gevaarlijkste programmeerfouten maakt.quote:Op donderdag 15 januari 2009 20:37 schreef cablegunmaster het volgende:
[..]
nee ik bedoel weren tegen sql injecties.
weren tegen kut users die mijn site proberen plat te leggen.
users die mn database proberen te mollen!
Pagina 1. 0.01quote:Op donderdag 15 januari 2009 17:37 schreef GlowMouse het volgende:
Dat heb je wanneer je LIMIT gebruikt.
Mag ik weten hoe snel de query is op pagina 1, en op pagina 10?
Mooi lineairquote:Op donderdag 15 januari 2009 23:33 schreef Chandler het volgende:
[..]
Pagina 1. 0.01
Pagina 10 0.09
Pagina 20 0.13
Pagina 50 0.3
Pagina 69 0.44
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 | $nr = 1; while($row = mysql_fetch_array($result)) { if (in_array($row['user'],$flow)) { $team = "Flow"; } else { $team = "Allstars"; } echo "<tr>"; echo "<td>"; echo $nr; echo "</td>"; echo "<td>"; echo $row['user']; echo "</td>"; echo "<td>"; echo $team; echo "</td>"; echo "<td>"; $points = $row['points']; $points2 = log($row['games'] + 1 ) * ($row['wins'] / $row['games']); $points = $points + $points2; $points = round($points, 2); echo $points; echo "</td>"; |
1 2 3 4 5 6 7 8 9 10 11 12 13 | { $user = $row['user']; $points = $row['points']; $points2 = log($row['games'] + 1 ) * ($row['wins'] / $row['games']); $points = $points + $points2; mysql_query("UPDATE ur_pstats SET points2 = '$points' WHERE user = '$user"); } |
Goed, maar hoe kan ik dit versnellen cq optimaliseren? D:quote:Op donderdag 15 januari 2009 23:42 schreef GlowMouse het volgende:
[..]
Mooi lineairNadeel van LIMIT, hij kan nooit weten wat er op de 59ste pagina komt zonder eerst de eerste 58 op te halen.
Vantevoren een tabel vullen met een extra veld waarin je aangeeft op welke plek welke foto komt. Op dat veld kun je indexeren en in je query kun je dan WHERE ipv LIMIT gebruiken.quote:Op vrijdag 16 januari 2009 08:48 schreef Chandler het volgende:
[..]
Goed, maar hoe kan ik dit versnellen cq optimaliseren? D:
1 2 3 4 5 6 7 8 | <strong class="TitleOff"> <a href="[b]url_die_ik_zoek[/b]">[b]Titel die ik zoek[/b]</a> </strong> <strong class="datetime"> <span style="font-size:10px;">Aired</span> <span style="font-size:10px;">[b]Datum die ik zoek[/b]</span> </strong>[b]Omschrijving die ik zoek[/b]</p> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @$dom->loadHTML($result); $xpath = new DOMXPath($dom); // -- Alle links $hrefs = $xpath->evaluate("/html/body//ol//li//a"); // -- Links doorlopen for ($i = 0; $i < $hrefs->length; $i++) { $href = $hrefs->item($i); $url = $href->getAttribute('href'); echo $url."<br />"; } |
Zo moeilijk is Xpath niet hoor ;)quote:Op vrijdag 16 januari 2009 15:25 schreef Roy_T het volgende:
Je zou eerst alle <p>'s met class "info" kunnen zoeken, en vervolgens daar doorheen loopen en binnen iedere gevonden <p> zoeken op link (href en titel), de tweede <span>, etc.
1 2 3 4 | foreach($nodes as $node) { $a = $node->getAttribute('href'); } |
Alleen werkt dit natuurlijk niet, omdat een <p> geen href attribuut heeftquote:Op zaterdag 17 januari 2009 03:04 schreef Gloeidoos het volgende:
[..]
Zo moeilijk is Xpath niet hoor
[ code verwijderd ]
Hiermee kan je wel vooruit denk ik.
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 | if (isset($_GET['activate'])) { $activate = (int) $_GET['activate']; } else { $activate = 0; } if (isset($_GET['code'])) { $code = $_GET['code']; } else { $code = 0; } if ( ($activate > 0) && (strlen($code) == 32)) { include('include/inc_connect.php'); $query = "UPDATE users SET active_code = NULL WHERE user_nr = '".$active."' AND active_code = '".$code."' LIMIT 1 ;"; $result = mysql_query($query) or die(mysql_error()); if (mysql_affected_rows() == 1) { echo "<b class=\"title\">Geactiveerd</b>"; echo "<p>Je account is nu actief, je kan nu inloggen.</p>"; } else { echo "<b class=\"title\">Activeren niet succesvol</b>"; echo "<p>Je account kon niet geactiveerd worden. Kijk of de link klopt of neem contact op met onze <a href=\"mailto:xxxxxxxx\">Administrator</a></p>"; mysql_close(); } } else { echo "<b class=\"title\">Activatie link klopt niet!</b>"; echo "<p>Probeer opnieuw</p>"; } ?> |
Hehe het was al laat.quote:Op zaterdag 17 januari 2009 08:57 schreef Roy_T het volgende:
[..]
Alleen werkt dit natuurlijk niet, omdat een <p> geen href attribuut heeft
Wat heb je gedaan om te debuggen? Toen je om te debuggen "$query = "UPDATE users SET active_code = NULL WHERE user_nr = '".$active."' AND active_code = '".$code."' LIMIT 1 ;";" eens gewoon echode, wat kreeg te toen te zien?quote:Op zaterdag 17 januari 2009 12:24 schreef mrpaplu het volgende:
hey mensen, ik ben bezig met een pagina om je account te activeren. als je bent geregistreerd krijg je een mail met een link. (dat is nu nog gewoon op de site). De link ziet er uit als activate.php?activate=$activate&code=$code. Hier is $active het user_nr en $code de code die in de kolom active_code in de database is gezet. Alles werkt leuk en aardig, maar volgens mij doet hij het niet door de sql query. Hij veranderd namelijk ook niks in de database, maar hij komt wel door de check of $active > 0 en strlen($code) ==32. Iemand enig idee wat ik fout doe?
[ code verwijderd ]
Handig activeringssysteem. Code "'='' or ''='" (aanvullen met spaties tot 32 tekens) is altijd goedquote:Op zaterdag 17 januari 2009 12:24 schreef mrpaplu het volgende:
hey mensen, ik ben bezig met een pagina om je account te activeren. als je bent geregistreerd krijg je een mail met een link. (dat is nu nog gewoon op de site). De link ziet er uit als activate.php?activate=$activate&code=$code. Hier is $active het user_nr en $code de code die in de kolom active_code in de database is gezet. Alles werkt leuk en aardig, maar volgens mij doet hij het niet door de sql query. Hij veranderd namelijk ook niks in de database, maar hij komt wel door de check of $active > 0 en strlen($code) ==32. Iemand enig idee wat ik fout doe?
[ code verwijderd ]
<?php echo '<?php echo \'hoi!\'; ?>'; ?>quote:Op zondag 18 januari 2009 15:45 schreef cablegunmaster het volgende:
moet alleen nog weten hoe ik de php kan laten weergeven voor documenten , in html![]()
that allquote:Op zondag 18 januari 2009 16:03 schreef GlowMouse het volgende:
[..]
<?php echo '<?php echo \'hoi!\'; ?>'; ?>
quote:Op zondag 18 januari 2009 14:34 schreef SuperRembo het volgende:
[..]
Handig activeringssysteem. Code "'='' or ''='" is altijd goed
In die query als $activate leeg is.quote:
quote:
1 2 3 4 5 | SET active_code = NULL WHERE user_nr = '".$active."' AND active_code = '".$code."' LIMIT 1 ;"; |
1 2 3 4 5 | SET active_code = NULL WHERE user_nr = '123' AND active_code = '' OR '' = '' LIMIT 1 ;"; |
Dat is hem dus. Tijdens het testen heb ik inderdaad gemerkt dat wanneer je in php.ini de upload_tmp_dir instelling vult met een verkeerd pad, je die error code 7 krijgt. Deze hadden we op het eind van de testronde echter naar de correcte map gezet, dat vervolgens ook succesvol werkte.quote:UPLOAD_ERR_CANT_WRITE
Value: 7; Failed to write file to disk. Introduced in PHP 5.1.0.
Daar lijkt het juist wel heel erg op.quote:Op maandag 19 januari 2009 11:57 schreef GlowMouse het volgende:
Bestand te groot voor het gebruikte filesystem? Foutmeldingen krijg je niet willekeurig, dus zoek het patroon maar
Problemen met het netwerk, dat de NAS onbereikbaar is (wordt ?) tijdens het wegschrijven?quote:Op maandag 19 januari 2009 12:56 schreef Tuvai.net het volgende:
[..]
Daar lijkt het juist wel heel erg op.Aan de grootte ligt het niet, want de ene keer pakt 'ie wel 700 MB, en de andere keer weer niet.
Dacht ik ook al aan, maar het gebeurt ook over een intern netwerk waar de verbinding constant en ononderbroken is.quote:Op maandag 19 januari 2009 13:17 schreef HuHu het volgende:
[..]
Problemen met het netwerk, dat de NAS onbereikbaar is (wordt ?) tijdens het wegschrijven?
Dat dacht ik ook over het interne netwerk op m'n werk, tot het moment dat het niet zo bleek te zijnquote:Op maandag 19 januari 2009 13:45 schreef Tuvai.net het volgende:
[..]
Dacht ik ook al aan, maar het gebeurt ook over een intern netwerk waar de verbinding constant en ononderbroken is.
Maar dat is in dit geval dus wel zo, dat hebben we zelfs nog met een tooltje geverifieerd.quote:Op maandag 19 januari 2009 13:47 schreef HuHu het volgende:
[..]
Dat dacht ik ook over het interne netwerk op m'n werk, tot het moment dat het niet zo bleek te zijn.
ik zat te denken limit X en limit Yquote:Op maandag 19 januari 2009 18:07 schreef GlowMouse het volgende:
Zet de huidige pagina in een GET-variabele.
Deze staat ook al erg hoog. Was sowieso noodzakelijk omdat het hier vrij grote file uploads betreft.quote:Op maandag 19 januari 2009 16:33 schreef Farenji het volgende:
Check de max_execution_time eens van php... misschien krijg je die melding ook als ie de upload stopt omdat deze tijd is verstreken?
Voor grote upload kun je beter geen PHP gebruiken, maar iets als über uploader.quote:Op maandag 19 januari 2009 18:27 schreef Tuvai.net het volgende:
[..]
Deze staat ook al erg hoog. Was sowieso noodzakelijk omdat het hier vrij grote file uploads betreft.
Gewoon op oneindig zetten.quote:Op maandag 19 januari 2009 18:27 schreef Tuvai.net het volgende:
[..]
Deze staat ook al erg hoog. Was sowieso noodzakelijk omdat het hier vrij grote file uploads betreft.
1 2 3 | set_time_limit(0); ?> |
Er zijn oplossingen die beter geschikt zijn voor uploads dan php, da's waar. Maar soms heb je weinig keuze.quote:Op maandag 19 januari 2009 18:36 schreef HuHu het volgende:
[..]
Voor grote upload kun je beter geen PHP gebruiken, maar iets als über uploader.
Dat klopt ja, als je vast zit aan een bepaald platform dan moet je wel. Maar als de keuze bestaat, dan zou je het kunnen overwegen. überuploader gaat via CGI en perl enzo (weet het niet precies) en dat ondersteunen veel hosts vaak wel.quote:Op maandag 19 januari 2009 18:42 schreef Light het volgende:
[..]
Er zijn oplossingen die beter geschikt zijn voor uploads dan php, da's waar. Maar soms heb je weinig keuze.
Die instelling heeft toch geen invloed op file uploads?quote:Op maandag 19 januari 2009 18:40 schreef Light het volgende:
[..]
Gewoon op oneindig zetten.
[ code verwijderd ]
Zie het onderstreepte gedeelte, volgens mij houdt dat in dat uploads niet meetellen voor de execution time. Wel staat er nog dit:quote:Note: The set_time_limit() function and the configuration directive max_execution_time only affect the execution time of the script itself. Any time spent on activity that happens outside the execution of the script such as system calls using system(), stream operations, database queries, etc. is not included when determining the maximum time that the script has been running.
Bron: php.netquote:Your web server can have other timeout configurations that may also interrupt PHP execution. Apache has a Timeout directive and IIS has a CGI timeout function. Both default to 300 seconds. See your web server documentation for specific details.
gastenboek.php?page=x.quote:Op maandag 19 januari 2009 18:18 schreef cablegunmaster het volgende:
[..]
ik zat te denken limit X en limit Y
en dan +10 limit X en +10 limit Y
alleen ik kon de hrefs niet verzinnen.
dan krijg ik nog een switch met een get?
boven op mijn switch en get![]()
dus simpelgezegd een nieuwe map ervoor gebruiken![]()
1 2 3 4 5 6 | $page = (int)$_GET['page']; $page = min(0, $page); $page = max($page, $numpages); $query = 'SELECT adsf FROM ghjkl ORDER BY qwerty LIMIT ' . 10*$page . ',10'; ?> |
Je hebt gelijk. Gelukkig is er ook nog de instelling max_input_time.quote:Op maandag 19 januari 2009 18:45 schreef HuHu het volgende:
[..]
Die instelling heeft toch geen invloed op file uploads?
[..]
Zie het onderstreepte gedeelte, volgens mij houdt dat in dat uploads niet meetellen voor de execution time. Wel staat er nog dit:
[..]
Bron: php.net
Aangenomen dat $numpages groter is dan 0, resulteert dit altijd in $page = $numpages :Pquote:Op maandag 19 januari 2009 19:24 schreef GlowMouse het volgende:
1
2
3$page = (int)$_GET['page'];
$page = min(0, $page);
$page = max($page, $numpages);
quote:Op dinsdag 20 januari 2009 11:07 schreef SuperRembo het volgende:
[..]
Aangenomen dat $numpages groter is dan 0, resulteert dit altijd in $page = $numpages
Ok thnx. Klopt het dat het dan op deze manier moet:quote:Op donderdag 22 januari 2009 10:12 schreef HuHu het volgende:
Als de smaken van te voren vast staan kun je een ENUM gebruiken.
1 2 3 4 5 | (WBFnummer number (8) not null, Geuraanduiding enum ("zoet", "zuur", "bitter" enz. not null, ...... PRIMARY KEY(WBFnummer)); |
Iets dergelijks klopt dus niet? Wat moet er veranderd worden?:quote:Op donderdag 22 januari 2009 10:28 schreef GlowMouse het volgende:
Nee, dat kan niet. Lees http://dev.mysql.com/doc/refman/5.0/en/enum.html door (alles is wel interessant om te lezen daar).
Maar voor getallen zijn er weer andere datatypen beschikbaar
1 2 3 4 5 6 7 8 9 10 11 | (WBFnummer number (8) not null, Geuraanduiding ENUM (“vol” , “wijnachtig” , “complex” , “fris” , “fruitig” , “bloemig” , “kruidig” , “honingachtig” , “houtachtig” , “aards”)not null, Geurafwijking ENUM (“aceton” , “muf” , “muis” , “geranium” , “oxidatie” , “sulfiet” , “azijn” , “rotte_eieren” , “gist” , “medicijn”)not null, Smaakafwijking ENUM (“body” , “zoet” , “zuur” , “zout” , “bitter” , “mineralen” , “groenten” , “meststof” ) not null, Smaakgebrek ENUM (“oxidatie” , “azijnzuur” , “muf” , “medicijnachtig” , “gistsmaak” , “muis” , “rotte_eieren” )not null, Balansafwijking ENUM (“zoet” , “zuur” , “zout” , “bitter” , “jannine” , “body” , “alcohol” , “mousse” ) not null, Afdronkafwijking ENUM (“bitter” , “muf” , “zuur” )not null, Opmerkingen varchar (50), PRIMARY KEY(WBFnummer) ); |
1 2 | echo $regels; |
Met cijfers gaat het fout zoals je kunt lezen. Maar van het getallenidee ben je opeens afgestapt?quote:Op donderdag 22 januari 2009 10:44 schreef TheRoach het volgende:
[..]
Iets dergelijks klopt dus niet? Wat moet er veranderd worden?:
[ code verwijderd ]
Gokje: $_POST['$fObjTest'] is niet ingesteld. Gaat dat wel goed het dat dollarteken?quote:Op donderdag 22 januari 2009 11:21 schreef LordNemephis het volgende:
Hoi mensen,
ik wil graag tellen hoeveel regels er in een text-area zitten. Dit heb ik tot nu toe
[ code verwijderd ]
Maar de waarde van uitkomst is altijd 1
Iemand een idee hoe dit wel werkend te krijgen?
Ik heb 1 tabel met getallen (kwalitatief) en 1 tabel met letters (kwantitatief), deze laatste tabel heb ik hierboven laten zien. Maar kan dit zo of niet?quote:Op donderdag 22 januari 2009 11:24 schreef GlowMouse het volgende:
[..]
Met cijfers gaat het fout zoals je kunt lezen. Maar van het getallenidee ben je opeens afgestapt?
[..]
Op de eerste plaats waarom wil je dit? en \n is niet op elk OS gelijk. Je kan beter PHP_EOL pakkenquote:Op donderdag 22 januari 2009 11:21 schreef LordNemephis het volgende:
Hoi mensen,
ik wil graag tellen hoeveel regels er in een text-area zitten. Dit heb ik tot nu toe
[ code verwijderd ]
Maar de waarde van uitkomst is altijd 1
Iemand een idee hoe dit wel werkend te krijgen?
Wat je liet zien wel, met cijfers moet je opletten, zie de eerder geplaatste link.quote:Op donderdag 22 januari 2009 11:25 schreef TheRoach het volgende:
[..]
Ik heb 1 tabel met getallen (kwalitatief) en 1 tabel met letters (kwantitatief), deze laatste tabel heb ik hierboven laten zien. Maar kan dit zo of niet?
Het gaat om user-invoer, dus je end-of-line hangt van de gebruiker af en niet van de server. Ik weet niet wat de browser doorstuurt trouwens, dat zou best voor alle OS's hetzelfde kunnen zijn.quote:Op donderdag 22 januari 2009 11:38 schreef Swetsenegger het volgende:
[..]
en \n is niet op elk OS gelijk. Je kan beter PHP_EOL pakken
Hmz, nee volgens mij niet hoor. in de POST vars staat volgens mij het eol teken van je OSquote:Op donderdag 22 januari 2009 11:48 schreef GlowMouse het volgende:
[..]
Wat je liet zien wel, met cijfers moet je opletten, zie de eerder geplaatste link.
[..]
Het gaat om user-invoer, dus je end-of-line hangt van de gebruiker af en niet van de server. Ik weet niet wat de browser doorstuurt trouwens, dat zou best voor alle OS's hetzelfde kunnen zijn.
http://www.sitepoint.com/(...)dings-in-javascript/quote:Op donderdag 22 januari 2009 11:59 schreef Swetsenegger het volgende:
[..]
Hmz, nee volgens mij niet hoor. in de POST vars staat volgens mij het eol teken van je OS
Volgens mij kun je er prima op vertrouwen dat IE doet waar het zelf zin in heeftquote:Op donderdag 22 januari 2009 12:02 schreef GlowMouse het volgende:
[..]
http://www.sitepoint.com/(...)dings-in-javascript/
Je kunt niks vertrouwen blijkbaar.
1 2 3 4 5 6 7 | { echo "<div id='imageLeft6'></div>"; } |
Hmm lijkt me zo te zien wel iets om in ajax te makenquote:Op donderdag 22 januari 2009 17:04 schreef ursel het volgende:
Ik zal waarschijnlijk hier niet goed zitten, maar misschien dat jullie me wel kunnen helpen waar en hoe ik het volgende kan bewerkstelligen.
Waar ik namelijk op zoek naar ben is een manier om de gebruikers te informeren. Echter is de bedoeling dat dit redelijk real-time gebeurd. In ons systeem komt het namelijk wel eens voor dat een pagina tot 30 minuten open staat. Men is dan in de tussentijd papieren aan het uitzoeken welke data ingevuld moet worden etc.
Nu wil ik dus, dat ook al is er geen activiteit, dat het systeem ook bij deze gebruikers een bericht op het scherm kan plaatsen.
Iemand een idee hoe ik dit doe en waar ik dit het beste kan zoeken?
1 2 3 4 5 6 7 | { echo "<div id='imageLeft6'><a href=\"linkje\"><img src=\"path/naar/plaatje\" /></div>"; } |
Wat is er mis met gewoon simpele clientside scripting?quote:Op donderdag 22 januari 2009 18:37 schreef Flepke het volgende:
[..]
Hmm lijkt me zo te zien wel iets om in ajax te maken
In je CSS bestand:quote:Op donderdag 22 januari 2009 17:58 schreef Eastman het volgende:
Ben mijn website aan het aanpassen, maar kom er even niet uit...
Ik wil graag een hyperlink toevoegen aan een plaatje die in een <div> zit.
hier onder het stukje code waar het om gaat...
[ code verwijderd ]
Heb <a href=""> op meerdere plekken geprobeerd, maar het lukt allemaal niet...
thnx..
1 2 3 4 5 6 7 8 | background:url(../img/4ro.gif) no-repeat left; width: 120px; height: 39px; position: relative; float: left; margin-left: 32px; } |
1 |
1 2 3 4 5 6 7 8 9 10 11 12 | function externalLinks() { if (!document.getElementsByTagName) return; var anchors = document.getElementsByTagName("a"); for (var i=0; i<anchors.length; i++) { var anchor = anchors[i]; if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") anchor.target = "_blank"; } } window.onload = externalLinks; |
1 |
Ik heb het uiteindelijk na een en ander proberen anders opgelost want het bleek dat regels tellen toch niet de oplossing was. Kan wel gaan uitleggen hoe en wat maar dat wordt een lang verhaal en ik wil zo eerst ontbijtenquote:Op donderdag 22 januari 2009 12:00 schreef Swetsenegger het volgende:
Maar goed je kan er natuurlijk ook eerst een nl2br overheen halen en dan exploden op <br />
En nog "</a>" na het plaatje. (Hoewel het zonder ook wel zal "werken")quote:
Zie de opmerking van SuperRembo boven je. En post je relevante code eens.quote:Op donderdag 22 januari 2009 19:19 schreef Eastman het volgende:
[..]
Thanks, ik heb geprobeerd, maar het lukt niet echt...
afbeelding is dan helemaal weg..
Ajax *is* gewoon "simpele clientside scripting", maar los daarvan:quote:Op donderdag 22 januari 2009 18:44 schreef Swetsenegger het volgende:
[..]
Wat is er mis met gewoon simpele clientside scripting?
Bij ajax ga je verbinding leggen met de server, dus gaat een stapje verder.quote:Op donderdag 22 januari 2009 19:23 schreef Farenji het volgende:
[..]
Ajax *is* gewoon "simpele clientside scripting", maar los daarvan:
Waaromquote:Zonder gebruik van asynchrone technieken moet je dan periodiek de hele pagina refreshen (het web is immers een pull technologie, geen push technologie) of je moet gebruik moet maken van ranzige truukjes als iframes (die je ook periodiek moet refreshen)
Ik zie helemaal niet in waarom je de server erbij zou moeten betrekken om te controleren of de client wat doet.quote:, en dan is het veel beter om gewoon gebruik te maken van ajax want dat is exact voor dat doel ontworpen.
Het gaat ursel er om dat (als ik hem goed begrijp) *vanuit de webserver* een bericht *naar de gebruiker* verstuurd kan worden, *ook als die gebruiker geen activiteit vertoont*.quote:Op donderdag 22 januari 2009 19:25 schreef Swetsenegger het volgende:
[..]
Bij ajax ga je verbinding leggen met de server, dus gaat een stapje verder.
[..]
WaaromControleer gewoon op input events.
[..]
Ik zie helemaal niet in waarom je de server erbij zou moeten betrekken om te controleren of de client wat doet.
Dat gaat inderdaad niet, maar ik begrijp dat hij gebruikers gewoon wil waarschuwen bij te lange inactiviteit. En dat gaat prima zonder ajax.quote:Op donderdag 22 januari 2009 19:29 schreef Farenji het volgende:
[..]
Het gaat ursel er om dat (als ik hem goed begrijp) *vanuit de webserver* een bericht *naar de gebruiker* verstuurd kan worden, *ook als die gebruiker geen activiteit vertoont*.
Jij mag me uitleggen hoe je dat zonder ajax en zonder herladende iframes voor elkaar gaat krijgen.
Dat zijn 2 verschillende dingen.quote:Op donderdag 22 januari 2009 19:30 schreef Swetsenegger het volgende:
[..]
Dat gaat inderdaad niet, maar ik begrijp dat hij gebruikers gewoon wil waarschuwen bij te lange inactiviteit. En dat gaat prima zonder ajax.
Comet (aka "reverse ajax")quote:Op donderdag 22 januari 2009 19:29 schreef Farenji het volgende:
Het gaat ursel er om dat (als ik hem goed begrijp) *vanuit de webserver* een bericht *naar de gebruiker* verstuurd kan worden, *ook als die gebruiker geen activiteit vertoont*.
Jij mag me uitleggen hoe je dat zonder ajax en zonder herladende iframes voor elkaar gaat krijgen.
Dit inderdaad. In dit geval moesten we met spoed voor onderhoud de applicatie tijdelijk uitschakelen. Echter zijn niet al onze gebruikers in het pand zelf aanwezig en kunnen dit ook gewoon bedrijven zijn welke ingelogged zijn. Om ervoor te zorgen dat ze niet al hun reeds al ingevulde, maar dus nog niet opgeslagen informatie kwijt raken zat ik er aan te denken om iets te bouwen dat ik een bericht op zijn scherm laat zien waarbij ik hem waarschuw dat het systeem er even uit moet.quote:Op donderdag 22 januari 2009 19:29 schreef Farenji het volgende:
[..]
Het gaat ursel er om dat (als ik hem goed begrijp) *vanuit de webserver* een bericht *naar de gebruiker* verstuurd kan worden, *ook als die gebruiker geen activiteit vertoont*.
Jij mag me uitleggen hoe je dat zonder ajax en zonder herladende iframes voor elkaar gaat krijgen.
Jaja.quote:
Dussss.... oude wijn in nieuwe zakken.quote:Specific techniques for accomplishing streaming Comet include the following.
Hidden IFrame
[..]
XMLHttpRequest
[..]
Wat "Jaja"? Comet is een prima manier om een HTTP-connectie open te houden en data naar de client te sturen, zonder dat deze hoeft te pollen. Niet meer zeggen dus dat je altijd moet pollen (AJAX, pagina's in iframes refreshen, whatever).quote:
van je eigen bronquote:Op donderdag 22 januari 2009 20:15 schreef Roy_T het volgende:
[..]
Wat "Jaja"? Comet is een prima manier om een HTTP-connectie open te houden en data naar de client te sturen, zonder dat deze hoeft te pollen. Niet meer zeggen dus dat je altijd moet pollen (AJAX, pagina's in iframes refreshen, whatever).
quote:Comet applications typically use Ajax with long polling to detect new information on the server.
1 2 3 4 5 6 7 | FROM `tabel1` AS t, `tabel1` AS s WHERE FIND_IN_SET(s.naam, (SELECT tegenstanders from `tabel2` where naam=t.naam) )>0 GROUP BY t.naam ORDER BY t.totaal DESC, weerstand DESC |
Houdt er ook rekening mee dat volgens een bepaalde rfc mails maar een bepaalde lengte mogen zijn zonder linebreak. In html mails zet ik dus gewoon achter elke regel een <br /> Dat heeft bij mij problemen met onder andere planet ontvangers afgevangen.quote:Op zondag 25 januari 2009 13:37 schreef beerten het volgende:
mail() en headers
Hoi,
ik ondervind problemen met de ingebouwde mail() functie van PHP.
Als ik mijn nieuwsbirfe verstuur komt het HTML-mailtje lang niet overal correct aan. Wel HTML, geen HTML, alleen maar de gecodeerde tekst.
Het zal naar ik vermoed te maken hebben met de headers van het emailtje.
Nu ben ik naarstig op zoek naar een oplossing.
- een tutorial waarin de mailheaders tot in details worden besproken.
- een geschikte mailclass (phpmailer en swiftmailer bijvoorbeeld)
- whatever
Ik wil meer te weten komen over de oorzaken en oplossing. Met name details van de diverse headers. Wat ik ook zoek, ik kom niet veel verder dan de standaard opties (afzender, attachement, cc, bcc, returnadress etc.)
Iemand een link met meer info over hoe email echt cporrect te versturen?
Dat is een best breed begrip, welke / wat voor patterns? Creationele? Structurele? Er zijn er veel.quote:Op zondag 25 januari 2009 13:42 schreef Qunix het volgende:
Ik zoek tutorials over design patterns... Weet iemand een paar goeie?
Dat zou gewoon met 1 regel moeten kunnen omdat hij met de QSA parameter alle GET variabelen (dus ook "img") er automatisch bij zet.quote:Op maandag 26 januari 2009 12:58 schreef Darkomen het volgende:
Htacces en rewrite vraagje
Ik heb 2 urls die moeten worden verwezen, deze kunnen dus beide voorkomen
domein.nl/auto/userid
en
domein.nl/auto/userid?img=id
De eerste los ik zo op,
RewriteRule ^auto/$ [L]
#RewriteRule auto/(.*) rewritetestfolder/?user=$1 [PT]
en de 2de zo
RewriteCond %{QUERY_STRING} img=(.*)
RewriteRule ^auto/(.*) rewritetestfolder/index.php?user=$1&img=%1
Maar hoe krijg ik deze samen werkend, als ik ze zoals hierboven bovenelkaar zit dan word de eerste url niet verwezen en krijg ik een 404 error.
1 |
quote:<?php
//define the source of the feed
define('omroepzeeland_feed','http://www.omroepzeeland.nl/rss_feed/index.xml');
//recive file form server
$xml_feed = file_get_contents(omroepzeeland_feed);
//create a xml phraser
$xml_praser = xml_parser_create();
//tell the vars to the xml phrasers
xml_parse_into_struct($xml_praser,$xml_feed,$xml_keys,$xml_index);
//lets phrase ^^
xml_parser_free($xml_praser);
//generate the headlines
for($i = 2; !empty($xml_index['TITLE'][$i]); $i++){
//title van de website in bold de rest niet.
if($i == 0){
//echo '<strong>Headlines van:<a href=\"'.$xml_keys[$xml_index['LINK'][$i]]['value'].'\">".$xml_keys[$xml_index['TITLE'][$i]]['value']."</a></strong><br />';
echo '<strong>Headlines van:<a href="'.$xml_keys[$xml_index['LINK'][$i]]['value'].'">'.$xml_keys[$xml_index['TITLE'][$i]]['value'].'</a></strong><br />';
}else{
echo '<a href="'.$xml_keys[$xml_index['LINK'][$i]]['value'].'">'.$xml_keys[$xml_index['TITLE'][$i]]['value'].'</a><br />';
}
}
?>
Het idee achter RSS is ook niet dat je bij iedere pageview opnieuw de feed uitleest.quote:Op maandag 26 januari 2009 15:16 schreef RensWisse het volgende:
Hm, dat is eigenlijk ook de bedoeling niet.
Maar het is visueel in elk geval wel een oplossing, alleen technisch dus niet.
1 2 3 4 5 6 7 8 9 10 11 12 13 | mysql_connect(localhost, "root", "") or die mysql_error();[s][/s] mysql_select_db("leertaak") or die mysql_error(); $query1 = mysql_query("SELECT `klantnr` FROM `klant` WHERE `username` = '".$_SESSION['username']."'") or die mysql_error(); $row= mysql_fetch_array($query1); $klantnr = $row['klantnr']; mysql_query("INSERT INTO `orders` (`klantnr`) VALUES ('".$klantnr."')") or die mysql_error(); $query2 = mysql_query("SELECT `ordernr` FROM `orders` WHERE `klantnr` = '".$klantnr."'") or die mysql_error(); $row2 = mysql_fetch_array($query2); $ordernr = $row2['ordernr']; ?> |
Heeft Fok er zelf ingezet, staat niet in het bestandquote:Op dinsdag 27 januari 2009 12:14 schreef GlowMouse het volgende:
or die mysql_error();[ s ][ /s]
wat is dat met die [ s ]?
quote:Op dinsdag 27 januari 2009 12:26 schreef GlowMouse het volgende:
Die is een functie dus moet je haakjes gebruiken om argumenten mee te geven
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 | print_r($_POST); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link href="/style.css" rel="stylesheet" type="text/css" /> <link href="/style_menu.css" rel="stylesheet" type="text/css" /> <link href="/card.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="/card.js"></script> </head> <body> <form method="post" action="" name="ecard_form"> <input type="hidden" id="card_id" name="card_id" value="d9752b49" /> <div class="ecard_left"> <strong>Ontvanger(s)</strong><br /> <br /> <fieldset> <label>Naam</label><input type="text" id="card_receiver_name" name="card_receiver_name" /><br /> <label>Email</label><input type="text" id="card_receiver_email" name="card_receiver_email" /><br /> </fieldset> <a style="font-size: 10px;" href="javascript:void(0);" onclick="ecardjs_toevoegen();">Toevoegen</a> - <a style="font-size: 10px;" href="javascript:void(0);" onclick="ecardjs_verwijderen();">Verwijderen</a> - <a style="font-size: 10px;" href="javascript:void(0);" onclick="ecardjs_bewerken();">Bewerken</a> - <div style="font-size: 9px; display: inline;" id="ecards_over">10 over</div><br /> <select name="card_receivers" size="4" class="ecard_email_list" id="ecards_to"></select><br /> </div> <br /> <input type="submit" name="action_preview" value="Bekijk voorbeeld" /> <input type="submit" name="action_send" value="Verstuur e-card" /> </form> </body> </html> |
1 2 3 4 5 6 7 | ( [card_id] => d9752b49 [card_receiver_name] => [card_receiver_email] => [action_preview] => Bekijk voorbeeld ) |
1 2 3 4 5 6 7 8 | .style1 {font-weight: bold} </style> <div class="footer"> <p>text.</p> <p>text.</p> <p>text.</p> </div> |
terwijl ik dit wil:quote:text.
text.
text.
Weet iemand hoe ik dit (waarschijnlijk simpele) probleem op kan lossen?quote:text.
text.
text.
ok bedanktquote:Op dinsdag 27 januari 2009 14:56 schreef HuHu het volgende:
Dat is geen PHP maar HTML. Je moet <br /> gebruiken. Zoek maar even op Google naar de betekenis van tags als <p> en <br /> en dergelijke.
Doe jij met JS dynamisch de 'naam' en 'email' veldjes vermeerderen? Zo ja, geef je die wel elk een uniek ID en name attribuut mee?quote:Op dinsdag 27 januari 2009 14:41 schreef Chandler het volgende:
Ik zit met iets vaags, op een of andere manier wordt een bepaald element niet meegenomen als ik een pagina verstuurd met POST (form)
[ code verwijderd ]
Als ik op bekijk voorbeeld klik zou ik ook in de array van $_POST card_receivers moeten tegenkomen maar die staat er niet bij (ongeacht of er gegevens zijn ingevuld)
[ code verwijderd ]
Wat doe ik fout?
Dat zou je wellicht hier kunnen vragen: [CSS] voor dummies - deel 11 of in een apart topic. Het heeft namelijk niets te maken met PHP of MySQL.quote:Op dinsdag 27 januari 2009 15:08 schreef toma het volgende:
Nou heb ik een volgend probleem
De tekst staat bovenaan in een tekst vak. Maar deze moet tegen de onderkant aanzitten. Hoe doe ik dat?
Ok, ik wist niet dat daar een apart topic voor is.quote:Op dinsdag 27 januari 2009 15:10 schreef HuHu het volgende:
[..]
Dat zou je wellicht hier kunnen vragen: [CSS] voor dummies - deel 11 of in een apart topic. Het heeft namelijk niets te maken met PHP of MySQL.
De naam hoeft niet uniek te zijn. Als je bijvoorbeeld name="card[]" gebruikt dan krijg je in het php-script netjes een array te zienquote:Op dinsdag 27 januari 2009 14:59 schreef Tuvai.net het volgende:
[..]
Doe jij met JS dynamisch de 'naam' en 'email' veldjes vermeerderen? Zo ja, geef je die wel elk een uniek ID en name attribuut mee?
Nee, die velden worden gebruikt om de card_receivers te vullen met dataquote:Op dinsdag 27 januari 2009 14:59 schreef Tuvai.net het volgende:
[..]
Doe jij met JS dynamisch de 'naam' en 'email' veldjes vermeerderen? Zo ja, geef je die wel elk een uniek ID en name attribuut mee?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 1 3 1 4 1 5 2 4 2 5 2 6 2 10 3 5 4 5 5 7 5 12 6 12 8 9 10 11 13 14 |
1 |
1 2 3 | UNION SELECT land_2 as buur FROM buren WHERE land_1 = 5 |
Als je de buren van land 5 wil hebben, dan moet je de regels hebben waarbij een van de twee landen 5 is, maar je wil uiteindelijk het land hebben dat juist ongelijk aan 5 is:quote:Op dinsdag 27 januari 2009 20:09 schreef Swetsenegger het volgende:
query vraagje
[...] Nu wil ik alle buren van land 5, dus 1,2,3,4,7,12. [...]
1 2 3 | FROM buren WHERE 5 IN (land_1, land_2) |
1 2 3 | FROM buren WHERE 5 IN (land_1, land_2) |
Klinkt logisch. Wat ik er niet bij verteld heb is dat het access betreft. En ik krijg een foutmelding terugquote:Op dinsdag 27 januari 2009 21:02 schreef SuperRembo het volgende:
[..]
Als je de buren van land 5 wil hebben, dan moet je de regels hebben waarbij een van de twee landen 5 is, maar je wil uiteindelijk het land hebben dat juist ongelijk aan 5 is:
[ code verwijderd ]
Of anders geschreven:
[ code verwijderd ]
Iemand die mijn fout ziet? of ben ik nou gek aan't worden?quote:Op dinsdag 27 januari 2009 16:52 schreef Chandler het volgende:
[..]
Nee, die velden worden gebruikt om de card_receivers te vullen met data
<option value="email">naam (email)</option>
De fout zit 'm dan sowieso in het feit hoe die 'options' dynamisch gegenereerd worden. Post je Javascript eens.quote:Op woensdag 28 januari 2009 09:00 schreef Chandler het volgende:
[..]
Iemand die mijn fout ziet? of ben ik nou gek aan't worden?
1 |
1 2 | options[options.length] = new Option(name + " (" + email + ")", email, false, false); |
1 2 3 | return document.getElementById(e); } |
Ja fijn een "$" functie waarmee je kan verhullen dat je vreselijk inefficiente code schrijftquote:Op woensdag 28 januari 2009 20:04 schreef Light het volgende:
Ik zorg altijd voor een $-functie in javascript. Voor zover ik weet zit die ook (maar dan uitgebreider) in de meeste frameworks, dus wel zo makkelijk.
[ code verwijderd ]
En speciaal voor Chandler is er ook [Javascript] voor dummies (deel 8)
Ja, het is een extra functie-aanroep en dat kun je als inefficient betitelen. Aan de andere kant vind ik het de leesbaarheid juist ten goede komen. En er zijn meer mogelijkheden met zo'n functie.quote:Op woensdag 28 januari 2009 20:07 schreef SuperRembo het volgende:
[..]
Ja fijn een "$" functie waarmee je kan verhullen dat je vreselijk inefficiente code schrijft
1 2 3 4 | FROM images ORDER BY rand( ) LIMIT 4 |
ik snap niet wat je bedoelt. hiermee krijg je 4 random resultaten uit je database?quote:Op donderdag 29 januari 2009 12:54 schreef Chandler het volgende:
Ik ben goed in onschrijfbare taal
Maar tnx SR, ik zal het in het vervol eens wat duidelijker beschrijven.
Nu iets anders
[ code verwijderd ]
geeft een filesort weer, hoe kan ik het beste random items uit een database halen? zonder op een filesort uit te komen?
1 2 | 1 SIMPLE images ALL NULL NULL NULL NULL 109447 Using temporary; Using filesort |
1 |
1 |
1 |
1 |
Met het risico dat het betreffende id niet bestaat. De IN met LIMIT is trouwens zeker sneller, maar heeft ook als risico dat je geen 4 rijen terugkrijgt.quote:Op donderdag 29 januari 2009 13:35 schreef HuHu het volgende:
Je kunt ook 4 queries doen met:
[ code verwijderd ]
Zit je weer met die ORDER BY RAND() die je op grote datasets wilt vermijden.quote:Op donderdag 29 januari 2009 13:35 schreef HuHu het volgende:
Wat ook sneller kan zijn is dit:
[ code verwijderd ]
Als je op id een INDEX hebt is dat sneller.
edit: dat laatste is dus hetzelfde als hierboven, maar dan in MySQL en met de garantie dat je geen ontbrekende nummers selecteert (wat dodelijk is voor je query).
1 2 | $query = "UPDATE pages SET content = '".$data."' WHERE id = '".$_GET['id']."'"; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | if(get_magic_quotes_gpc()) { foreach($_POST as $key => $val) { $_POST[$key] = stripslashes($val); } foreach($_GET as $key => $val) { $_GET[$key] = stripslashes($val); } foreach($_COOKIE as $key => $val) { $_COOKIE[$key] = stripslashes($val); } foreach($_REQUEST as $key => $val) { $_REQUEST[$key] = stripslashes($val); } } ?> |
Die code gaat fout als er arrays in $_POST, $_GET ofzo zitten.quote:Op zaterdag 31 januari 2009 11:18 schreef GlowMouse het volgende:
Of het uitstaat kun je zo zien in phpinfo. Via .htaccess kun je het evt uitschakelen, en voor compatibiliteit neem je zoiets op in een headerfile.
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | if(get_magic_quotes_gpc()) { function stripslashes_deep(&$value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } stripslashes_deep($_GET); stripslashes_deep($_POST); stripslashes_deep($_COOKIE); stripslashes_deep($_REQUEST); } ?> |
Volgens mij was het ontbreken van de intval() eigenlijk het grootste probleem. De rest komt netjes door mysql_real_escape_string() en is dus ook veilig. Overigens hoef je getallen ($id) niet tussen quotes te zetten.quote:Op zaterdag 31 januari 2009 11:32 schreef veldmuis het volgende:
Dat script deed 't 'm wel.
Ik had het via htaccess uitgeschakeld, maar dat leverde geen resultaat op. Vreemd dus, maar nou werkt het. Thanks!
Het nut van intval snap ik. Dat heb ik ook gelijk toegepast..
Maar wat is er niet zo best aan m'n query? Ik ben nog niet zo'n PHP held.
dankequote:Op zondag 1 februari 2009 12:48 schreef GlowMouse het volgende:
http://nl.php.net/manual/en/function.wordwrap.php
Wat moet de rol van PHP zijnquote:Op zondag 1 februari 2009 12:57 schreef RoW_0 het volgende:
Hay, ik wil een visitekaartjewebsite in php maken. Is het mogelijk doormiddel van een grafische applicatie gewoon er een kan ontwerpen? met html kan dat al wel natuurlijk.
ziet dat er niet wat mooier uit? ben een noob op de scripting gebied. maar HTML ziet er soms zo 1998 uit.quote:
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |