Ik gebruik altijd addslashes bij het invoeren, stripslashes bij het uitlezen. Voor tekst dan, uiteraard. Of het altijd nodig is weet ik niet, maar het maakt de communicatie tussen PHP en MySQL makkelijker doordat de string ge-escaped zijn.quote:Op vrijdag 27 mei 2005 18:59 schreef Chandler het volgende:
stomme vraag.
moet ik addslashes / stripslashes gebruiken voor
INSERT INTO DB ($_POST)
LEES UIT DB (mysql_fetch_object)
of kent iemand hier een goede tutor voor?
quote:Op vrijdag 27 mei 2005 19:31 schreef JeRa het volgende:
Persoonlijk vind ik het beter leesbaar als dingen als .+? tussen haakjes worden gezet, daarom heb ik dat bij mij ook gedaan. Maar die punt hoort daar niet, dan zou <ablaathref> ook gematched worden namelijk (punt = elk willekeurig karakter; \s = whitespace).
1 | <a border="0" href="http://example.com">link</a> |
quote:Dat (\"|') klopt gewoon. Maar waarom je ophoudt met '.+' is mij een raadsel, je zult toch moeten aangeven dat je alleen die tag en niet al het opvolgende wilt matchen.
1 | <a border="0" href="http://example.com" id="pipo" color=red>link</a> |
1 2 3 4 5 6 7 8 9 10 11 12 | <?php $test = array( '<a href="http://www.example.comview.php?x=11111" id="ID"><img src="http://image.examplke.com/example.jpg" border="0"></a>Dit is maar een voorbeeldje.', '<a border="0" href="http://blaat.com">link</a>', '<a border="0" href="http://example.com" id="pipo" color=red>link</a>', '<a href="test">blaat</a>' ); foreach ($test as $item) { echo htmlentities(preg_replace('/<a(\s+?)(.+?)(\s+?)href=("|\')(.+?)("|\')(.*?)>/i', '<a href="$3" target="_blank">', $item)) . '<br />'; } ?> |
Niet helemaal, omdat de (\s+?)(.+?)(\s+?) constructie niet matched op bijvoorbeeld:quote:Op vrijdag 27 mei 2005 20:07 schreef JeRa het volgende:
Regexen zijn prima geschikt. Het vereist gewoon wat werk
1
2
3<?php
htmlentities(preg_replace('/<a(\s+?)(.+?)(\s+?)href=("|\')(.+?)("|\')(.*?)>/i', '<a href="$3" target="_blank">', $item)) . '<br />';
?>
Werkt deze beter?
1 | <a border="0" id="pipo" href="http://example.com" color=red> |
1 2 3 | <?php $Out_Content = preg_replace('/<a(.+?)href=("|\')(.+?)("|\')(.*?)>/i', '<a href="$3" target="_blank">', $Out_Content); ?> |
Als je mijn script letterlijk overneemt en jouw testcase in de array zet, parset ie 'm gewoon hoor. Bovendien zal jouw nieuwe regex ook constructies als '<abhref...' matchen, en die van mij nietquote:Op vrijdag 27 mei 2005 23:14 schreef TimberWolf het volgende:
[..]
Niet helemaal, omdat de (\s+?)(.+?)(\s+?) constructie niet matched op bijvoorbeeld:
[ code verwijderd ]
1 2 3 | $brd = imagecolorallocate($im, 0,0,0); $clr = imagecolorallocate($im, 255,0,0); imagefilltoborder($im, 200, 10, $brd, $clr); |
1 2 3 4 5 6 7 | <?php $sql_query = "UPDATE users SET (naam, wachtwoord, profiel1, profiel2, profiel3, profiel4, afbeelding1, afbeelding2, afbeelding3) "; $sql_query .="VALUES ('".$naam."', '".$wachtwoord."', '".$profiel1."', '".$profiel2."', '".$profiel3."', '".$profiel4."', '".$afbeelding1."', '".$afbeelding2."', '".$afbeelding3."');"; $result = mysql_query($sql_query) or die(mysql_error()); $text="Gegevens zijn gewijzigd! <A HREF=\"login.php\">Inloggen.</A>"; die($text); ?> |
1 | UPDATE users SET naam='".$naam."', wachtwoord='".$wachtwoord."' |
Danku, ik ga het proberenquote:Op zondag 29 mei 2005 20:37 schreef DionysuZ het volgende:
[ code verwijderd ]
etc... dus niet (naam, wachtwoord,...) VALUES maar gewoon toekenningen met een komma ertussen
1 | UPDATE users SET naam='{$naam}', wachtwoord='{$wachtwoord}' WHERE id=1 |
quote:Op zondag 29 mei 2005 20:38 schreef DionysuZ het volgende:
ik neem btw aan dat je wel nog n WHERE clause eraan wilt hangen, aangezien je anders alle users aanpast?
1 2 3 | <?php $sql_query = "UPDATE users SET naam='".$naam."', wachtwoord='".$wachtwoord."' , profiel1='".$profiel1."', profiel2='".$profiel2."', profiel3='".$profiel3."', profiel4='".$profiel4."', afbeelding1='".$afbeelding1."', afbeelding2='".$afbeelding2."', afbeelding3='".$afbeelding3."' WHERE naam='" . $_SESSION["naam"]"; ?> |
Je gebruikte imagecolorallocate() om een kleur te specificeren, terwijl je eigenlijk imagecolorresolve() moet gebruiken. De eerste functie maakt een nieuwe kleur in de kleurenindex van de afbeelding, in jouw geval dus een nieuwe kleur met RGB=0,0,0 en de tweede functie zal een kleur opzoeken met RGB=0,0,0, wat dus zwart is in jouw afbeelding.quote:Op zondag 29 mei 2005 17:48 schreef Nevermind het volgende:
Die werkt wel prima. Waarom imagefilltoborder niet werkt snap ik niet.
Je hebt nog een quote op het einde van je regel staan.quote:Op zondag 29 mei 2005 20:48 schreef LeeHarveyOswald het volgende:
[..]
Maar nu krijg ik dus gewoon een foutmelding....
Van die post vat ik niet heel veelquote:Op zondag 29 mei 2005 20:50 schreef JeRa het volgende:
[..]
Je hebt nog een quote op het einde van je regel staan.
Kijk je trouwens ook nog even naar deze post van mij?
1 | naam='" . $_SESSION["naam"]"; |
1 | naam='" . $_SESSION["naam"]."'"; |
Danku! geen foutmeldingquote:Op zondag 29 mei 2005 20:57 schreef DionysuZ het volgende:
[ code verwijderd ]
moet zijn
[ code verwijderd ]
Als je na het maken van de queryquote:Op zondag 29 mei 2005 21:00 schreef LeeHarveyOswald het volgende:
[..]
Danku! geen foutmeldingmaar mn database blijft erg leeg? (alle velden muv wachtwoord en naam waren nog leeg)
1 2 3 | <?php echo $sql_query; ?> |
Dat weet je pas zodra je weet welke query er wordt uitgevoerdquote:Op zondag 29 mei 2005 21:06 schreef LeeHarveyOswald het volgende:
Dat moet dan toch werken?
Daar gaat dus idd iets "goed" mis:quote:Op zondag 29 mei 2005 21:08 schreef JeRa het volgende:
[..]
Dat weet je pas zodra je weet welke query er wordt uitgevoerd
1 | $sql_query = "UPDATE users SET naam='".$naam."', wachtwoord='".$wachtwoord."' , profiel1='".$profiel1."', profiel2='".$profiel2."', profiel3='".$profiel3."', profiel4='".$profiel4."', afbeelding1='".$afbeelding1."', afbeelding2='".$afbeelding2."', afbeelding3='".$afbeelding3."' WHERE naam='" . $_SESSION["naam"]."'"; |
edit: naam en wachtwoord kloppen, de rest blijft dus leegquote:Welkom, u bent aangemeld als testuser
Uw wachtwoord is: test
UPDATE users SET naam='testuser', wachtwoord='098f6bcd4621d373cade4e832627b4f6' , profiel1='', profiel2='', profiel3='', profiel4='', afbeelding1='', afbeelding2='', afbeelding3='' WHERE naam=''Gegevens zijn gewijzigd! Inloggen.
Het woord variabele gaf al genoeg hints, want die ontbraken dus gewoonquote:Op zondag 29 mei 2005 21:16 schreef JeRa het volgende:
Nu is het dus zaak aan jou om uit te zoeken hoe het komt dat die variabelen leeg zijn
quote:Op zondag 29 mei 2005 21:59 schreef LeeHarveyOswald het volgende:
Nog een vraagjeAlles uitlezen uit de database lijkt me niet moeilijk:
SELECT * FROM users WHERE naam = [ingevoerde naam]
Maar hoe krijg ik dan de resultaten, én hoe krijg ik deze mooi in een tekst?
1 2 3 4 5 6 7 8 9 | <?php //Query uitvoeren $result = mysql_query($query); //Data binnenhalen $data = mysql_fetch_assoc($result); //dit haalt één rij op echo $data['naam']; //bijvoorbeeld ?> |
Hoe bedoel je? Met $_GET kun je variabelen aanspreken die d.m.v. de URL zijn ingesteldquote:En hoe kan ik dan die ingevoerde naam uit een URL vissen?
Dat doe je bijvoorbeeld met mysql_fetch_array.quote:Op zondag 29 mei 2005 21:59 schreef LeeHarveyOswald het volgende:
Nog een vraagjeAlles uitlezen uit de database lijkt me niet moeilijk:
SELECT * FROM users WHERE naam = [ingevoerde naam]
Maar hoe krijg ik dan de resultaten, én hoe krijg ik deze mooi in een tekst?
En hoe kan ik dan die ingevoerde naam uit een URL vissen?
1 2 3 4 5 6 7 8 9 10 11 12 | <?php $ingevoerdenaam = $_GET['naam']; $sql = "SELECT * FROM users WHERE naam = '".$ingevoerde naam."'"; $query = mysql_query($sql) or die(mysql_error()); while ($result = mysql_fetch_array($query)) { $naam = $result['naam']; $profiel1 = $result['profiel1']; // etc. echo"".$naam.""; echo"".$profiel1.""; } ?> |
1 2 3 4 5 6 7 8 9 10 11 | <?php include("connection.php"); //Query uitvoeren $query = "SELECT * FROM users WHERE naam='" . $_GET["naam"] ."';"; $result = mysql_query($query); //Data binnenhalen $data = mysql_fetch_assoc($result); //dit haalt één rij op echo $data['naam']; //bijvoorbeeld ?> |
1 2 3 4 5 6 7 8 9 10 11 12 | <?php include("connection.php"); //Query uitvoeren $naam = isset($_GET['naam']) ? $_GET['naam'] : ''; $query = "SELECT * FROM users WHERE naam='" . mysql_real_escape_string($naam) ."';"; $result = mysql_query($query); //Data binnenhalen $data = mysql_fetch_assoc($result); //dit haalt één rij op print_r($data); //toont variabelinformatie ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | <?php session_start(); include("connection.php"); $naam = $_GET['naam']; $sql = "SELECT * FROM users WHERE naam = '".$naam."'"; $query = mysql_query($sql) or die(mysql_error()); while ($result = mysql_fetch_array($query)) { $profiel1 = $result['profiel1']; $profiel2 = $result['profiel2']; $profiel3 = $result['profiel3']; $profiel4 = $result['profiel4']; $afbeelding1 = $result['afbeelding1']; $afbeelding2 = $result['afbeelding2']; $afbeelding3 = $result['afbeelding3']; $afbeelding5 = $result['afbeelding4']; $afbeelding4 = $result['afbeelding5']; profiel1 = $profiel1; profiel1 = $profiel2; profiel1 = $profiel3; profiel1 = $profiel4; afbeelding1 = $afbeelding1 afbeelding2 = $afbeelding2 afbeelding3 = $afbeelding3 afbeelding4 = $afbeelding4 afbeelding5 = $afbeelding5 ?> <HTML> <HEAD><TITLE>Pas je profiel aan.</TITLE> </HEAD> <BODY> <?php if(!isset($_SESSION["user"])){ $text = "U bent niet goed ingelogd, ga terug naar <A HREF='login.php'>de login pagina</A> of naar <A HREF='registreer.php'>de registreer pagina</A>"; echo($text); } else{?> <LINK HREF="http://www.pestforum.nl/white.css" TYPE="text/css" REL="stylesheet"> Welkom <?php echo($_SESSION["user"]);?><BR> Pas hier je profiel aan. De indeling van je profiel wordt alsvolgt: <ul> <li>Welkom op het profel van <?php echo($_SESSION["user"]);?> <li>[afbeelding 1] <li> Tekst 1 <li>[afbeelding 2] <li> Tekst 2 <li>[afbeelding 3] <li> Tekst 3 <li>[afbeelding 4] <li> Tekst 4 <li>[afbeelding 5] <P> <?php include("connection.php"); if(!empty($_POST)){ $naam = $_SESSION["user"]; $wachtwoord = md5($_SESSION['wachtwoord']); $profiel1 = $_POST['profiel1']; $profiel2 = $_POST['profiel2']; $profiel3 = $_POST['profiel3']; $profiel4 = $_POST['profiel4']; $afbeelding1 = $_POST['afbeelding1']; $afbeelding2 = $_POST['afbeelding2']; $afbeelding3 = $_POST['afbeelding3']; $afbeelding4 = $_POST['afbeelding4']; $afbeelding5 = $_POST['afbeelding5']; $sql_query = "UPDATE users SET naam='".$naam."', wachtwoord='".$wachtwoord."' , profiel1='".$profiel1."', profiel2='".$profiel2."', profiel3='".$profiel3."', profiel4='".$profiel4."', afbeelding1='".$afbeelding1."', afbeelding2='".$afbeelding2."', afbeelding3='".$afbeelding3."', afbeelding4='".$afbeelding4."', afbeelding5='".$afbeelding5."' WHERE naam='".$naam."'"; $result = mysql_query($sql_query) or die(mysql_error()); $text="Gegevens zijn gewijzigd! <A HREF=\"profiel.php?naam=\"$naam>Bekijk je profiel.</A>"; die($text); } ?> <FORM NAME="form2" METHOD="post" ACTION="<?php echo($_SERVER["PHP_SELF"]);?>"> <p>profiel teksten:</p> Tekst1: <INPUT TYPE="text" NAME="profiel1" MAXLENGTH="300"><BR> Tekst1: <INPUT TYPE="text" NAME="profiel2" MAXLENGTH="300"><BR> Tekst1: <INPUT TYPE="text" NAME="profiel3" MAXLENGTH="300"><BR> Tekst1: <INPUT TYPE="text" NAME="profiel4" MAXLENGTH="300"><BR> <p>Afbeeldingen voor op je profiel (URL, maximaal 70 tekens lang) </p> Afbeelding1: <INPUT TYPE="text" NAME="afbeelding1" MAXLENGTH="70"><BR> Afbeelding2: <INPUT TYPE="text" NAME="afbeelding2" MAXLENGTH="70"><BR> Afbeelding3: <INPUT TYPE="text" NAME="afbeelding3" MAXLENGTH="70"><BR> Afbeelding4: <INPUT TYPE="text" NAME="afbeelding4" MAXLENGTH="70"><BR> Afbeelding5: <INPUT TYPE="text" NAME="afbeelding5" MAXLENGTH="70"><BR> <INPUT TYPE="submit" VALUE="Wijzig"> </FORM> > <A HREF="loguit.php">Log hier uit!</A> <?php } ?> </BODY> </HTML> |
De while loop kan weg, omdat je de naam van het profiel in principe uniek is (geen twee keer Jeroen b.v.), dus als je de gegevens opvraagt met een WHERE clause, dan gaat dat wel goedquote:Op maandag 30 mei 2005 00:10 schreef LeeHarveyOswald het volgende:
Ik heb nu alles hier helemaal werkend, alleen voor de pagina waarop je dus je profiel aanpast, leek het mij wel handig dat daar de velden zijn ingevuld met de huidige waarde. (zodat je niet alles helemaal overnieuw hoeft te doen)
Ik had dit alsvolgt geprobeerd (bovenste deel code, onderste deel werkt, hoewel mss niet zo netjes opgebouwd)
[ code verwijderd ]
Iemand een idee?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php $naam = $_GET['naam']; $sql = "SELECT * FROM users WHERE naam = '".$naam."'"; $query = mysql_query($sql) or die(mysql_error()); $result = mysql_fetch_array($query); $profiel1 = $result['profiel1']; $profiel2 = $result['profiel2']; $profiel3 = $result['profiel3']; $profiel4 = $result['profiel4']; $afbeelding1 = $result['afbeelding1']; $afbeelding2 = $result['afbeelding2']; $afbeelding3 = $result['afbeelding3']; $afbeelding5 = $result['afbeelding4']; $afbeelding4 = $result['afbeelding5']; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <FORM NAME="form2" METHOD="post" ACTION="<?php echo($_SERVER["PHP_SELF"]);?>"> <p>profiel teksten:</p> Tekst1: <INPUT TYPE="text" NAME="profiel1" MAXLENGTH="300" value="<? echo"".$profiel1."";?>"><BR> Tekst1: <INPUT TYPE="text" NAME="profiel2" MAXLENGTH="300" value="<? echo"".$profiel2."";?>"><BR> Tekst1: <INPUT TYPE="text" NAME="profiel3" MAXLENGTH="300" value="<? echo"".$profiel3."";?>"><BR> Tekst1: <INPUT TYPE="text" NAME="profiel4" MAXLENGTH="300" value="<? echo"".$profiel4."";?>"><BR> <p>Afbeeldingen voor op je profiel (URL, maximaal 70 tekens lang) </p> Afbeelding1: <INPUT TYPE="text" NAME="afbeelding1" MAXLENGTH="70"><BR> Afbeelding2: <INPUT TYPE="text" NAME="afbeelding2" MAXLENGTH="70"><BR> Afbeelding3: <INPUT TYPE="text" NAME="afbeelding3" MAXLENGTH="70"><BR> Afbeelding4: <INPUT TYPE="text" NAME="afbeelding4" MAXLENGTH="70"><BR> Afbeelding5: <INPUT TYPE="text" NAME="afbeelding5" MAXLENGTH="70"><BR> <INPUT TYPE="submit" VALUE="Wijzig"> </FORM> |
hmm..... wordt alles wel uit de database gehaald?quote:Op maandag 30 mei 2005 00:39 schreef LeeHarveyOswald het volgende:
hmm geen foutmelding, maar mn velden blijven leeg?
1 2 3 | <?php print_r($result); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php echo"<td> <script type="text/javascript"><!--"; echo"google_ad_client = "pub-9895364501562730"; "; echo"google_ad_width = 120; "; echo"google_ad_height = 600; "; echo"google_ad_format = "120x600_as"; "; echo"google_ad_type = "text"; "; echo"google_ad_channel ="9150908446"; "; echo"google_page_url = document.location; "; echo"google_color_border = "336699"; "; echo"google_color_bg = "BCD0ED"; "; echo"google_color_link = "0000FF"; "; echo"google_color_url = "008000"; "; echo"google_color_text = "3A4F6C"; "; echo"//--></script> "; echo"<script type="text/javascript" "; echo" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> "; echo"</script> "; ?> |
Omdat de dubbele quotes (") bedoeld zijn voor het openen en sluiten van een echo tag, moet je die escapen met slashes als je die binnen de echo wilt gebruiken.quote:Op maandag 30 mei 2005 11:28 schreef LeeHarveyOswald het volgende:
Ik blijf nog even lastig
Ik wil mn google banner naast een profiel hebben, dus ik met echo"<Td>"; etc etc mooi tabelletje gemaakt, alles lukt, behalve de code voor de banner:
[ code verwijderd ]
Wat doe ik verkeerd?
1 2 3 4 5 6 | <?php php echo"<td> <script type=\"text/javascript\"><!--"; echo"google_ad_client = \"pub-9895364501562730\"; "; //etc. ?> |
1 2 3 4 5 6 7 | <?php echo" hier een heleboel tekst over meerdere regels"; ?> |
'couse google wants it?quote:Op maandag 30 mei 2005 11:31 schreef Scorpie het volgende:
waarom doe je eigenlijk 2x text/javascript?
Hoe krijg ik dan mn google code buiten de PHP maar binnen de tabel?quote:Op maandag 30 mei 2005 11:33 schreef MouseInteractive het volgende:
[..]
Omdat de dubbele quotes (") bedoeld zijn voor het openen en sluiten van een echo tag, moet je die escapen met slashes als je die binnen de echo wilt gebruiken.
[ code verwijderd ]
Maar ik denk niet dat het nodig is dat de Google code tussen php tags staat, dus dat kun je gewoon neerzetten in html.
En je kunt trouwens een echo gebruiken voor meerdere regels, dus je hoeft niet elke nieuwe
regel met echo te starten:
[ code verwijderd ]
Sluit de php tag even, en ga dan gewoon verder met HTML en je google code.quote:Op maandag 30 mei 2005 11:42 schreef LeeHarveyOswald het volgende:
[..]
Hoe krijg ik dan mn google code buiten de PHP maar binnen de tabel?
1 2 3 4 5 6 7 | ?> <!-- Sluit php tag --> <td> <script type="text/javascript" language="JavaScript"> <!-- HIer wat google dingen --> </td> <!-- Tabelcel sluiten --> <?php //Php weer openen //Hier verder met de rest van je code |
Okquote:Op maandag 30 mei 2005 11:43 schreef LeeHarveyOswald het volgende:
Dat laatste was een stomme vraag en het is dus op een veel simpelere manier dan dat ik dacht dat nodig was geluktdanku allen
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |