abonnement Unibet Coolblue Bitvavo
pi_27415612
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?
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.

offtopic: waar is bruggema.nl gebleven?
pi_27415761
Even voor de duidelijkheid:

1) Variabelen die je binnenhaalt met $_GET of $_POST moet je stripslashen als magic_quotes_gpc aanstaat. Zo niet, dan hoeft dat ook niet. Om de overzichtelijkheid te behouden kun je $_GET en $_POST variables eerst in een lokale variabele plaatsen.

2) Variabelen die je naar een MySQL server stuurt kun je het beste escapen met mysql_real_escape_string() (of de mysqli-variant: mysqli_real_escape_string()). addslashes() zal ook werken, maar de eerdergenoemde functie garandeert compatibiliteit bij verschillende versies van PHP.

3) Teksten die je uitleest uit een MySQL database hoef je niet te stripslashen, dat kan alleen voor problemen gaan zorgen als bezoekers slashes in hun tekst zetten (die worden dan gestript, namelijk).
pi_27416063
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>


Helaas is het valide HTML. Die moet dus ook gematched worden.
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>


Opnieuw valide HTML. Overigens eindigd mijn regex wel in een >, voor zover ik weet. [edit]Ah, copy/paste foutje. De > stond er wel degelijk ik begon aan mezelf te twijfelen...[/edit]

Dat is ook een beetje mijn probleem. Regexen zijn niet woest geschikt voor dit soort mishandeling
Op een of andere manier is er een stukje wat TE greedy is.
pi_27416312
Regexen zijn prima geschikt. Het vereist gewoon wat werk

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 />';
}
?>

Werkt deze beter?
pi_27420807
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?
Niet helemaal, omdat de (\s+?)(.+?)(\s+?) constructie niet matched op bijvoorbeeld:

1<a border="0" id="pipo" href="http://example.com" color=red>


En ja, de dwaas die zijn HTML zo schrijft moet neergeschoten worden, maar dat is beside the point Hoedanook, kleine aanpassing:

1
2
3
<?php
$Out_Content
= preg_replace('/<a(.+?)href=("|\')(.+?)("|\')(.*?)>/i', '<a href="$3" target="_blank">', $Out_Content);
?>


Dat werkt wel, door de (.+?) wordt alles tussen de a en de href gematched, non-greedy. Dus voorlopig is dit de oplossing, al heb ik de indruk dat ik het al eens geprobeerd had Maargoed, het werkt! Dank voor de hulp!
pi_27420934
quote:
Op vrijdag 27 mei 2005 23:14 schreef TimberWolf het volgende:

[..]

Niet helemaal, omdat de (\s+?)(.+?)(\s+?) constructie niet matched op bijvoorbeeld:
[ code verwijderd ]
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 niet (vandaar de \s'en)

edit: in jouw testcase staat de (.+?) dus gelijk aan 'border="0" id="pipo"', en de twee whitespaces eromheen zullen matchen op de spatie tussen de 'a' en 'border', en de '"pipo"' en 'href'.

[ Bericht 11% gewijzigd door JeRa op 27-05-2005 23:24:23 ]
pi_27443629
@Nevermind: is even offline door 500GB bandwidth door een mongool
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_27455889
Matige grap .

Ik heb een probleempje met imagefilltoborder. Ik heb deze afbeelding:


Ik wil het bovenste vlak inkleuren met een kleur. De lijnen zijn zwart (0, 0, 0). Waarom wordt de hele afbeelding rood als ik deze code gebruik?

1
2
3
$brd = imagecolorallocate($im, 0,0,0);
$clr = imagecolorallocate($im, 255,0,0);
imagefilltoborder($im, 200, 10, $brd, $clr);
pi_27458086
Ik geloof dat ik de imagefill functie verkeerd begreep. Die werkt wel prima. Waarom imagefilltoborder niet werkt snap ik niet.
pi_27462846
Ik heb een vraagje, meer SQL als PHP. Wel de meest grote noob vraag tot nu toe geloof ik


Ik wilde met onderstaande code gegevens wijzigen, maar dat werkt niet. Dat snap ik. Hoe doe ik dat wel goed?
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);
?>
  zondag 29 mei 2005 @ 20:37:25 #211
32768 DionysuZ
Respect my authority!
pi_27462923
1UPDATE users SET naam='".$naam."', wachtwoord='".$wachtwoord."'

etc... dus niet (naam, wachtwoord,...) VALUES maar gewoon toekenningen met een komma ertussen
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
pi_27462935
Kleine toevoeging: Ik had eerst INSERT gebruikt, kreeg dus de melding " veld bestaat al " (maar dan niet in nld ) en heb dat dus maar heel vrij aangepast naar bovenstaande...
  zondag 29 mei 2005 @ 20:38:05 #213
32768 DionysuZ
Respect my authority!
pi_27462942
ik neem btw aan dat je wel nog n WHERE clause eraan wilt hangen, aangezien je anders alle users aanpast?
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
pi_27462962
quote:
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
Danku, ik ga het proberen
  zondag 29 mei 2005 @ 20:41:12 #215
32768 DionysuZ
Respect my authority!
pi_27463028
als je bijv. een user met id=1 een nieuwe naam en wachtwoord wilt geven kun je dat zo doen:
1UPDATE users SET naam='{$naam}', wachtwoord='{$wachtwoord}' WHERE id=1
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
pi_27463214
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?
das wel handig

Die code die ik net dus overnam zonder where werkte, muv het feit dat er geen gegevens in de database kwamen

nu heb ik:
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"]";
?>


Maar nu krijg ik dus gewoon een foutmelding....
pi_27463226
quote:
Op zondag 29 mei 2005 17:48 schreef Nevermind het volgende:
Die werkt wel prima. Waarom imagefilltoborder niet werkt snap ik niet.
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.

Je hele afbeelding werd dus rood, niet doordat de kleuren verschilden (ze waren immers allebei zwart), maar doordat de identifiers voor de kleuren verschilden (de waardes waren anders, maar ze verwezen allebei naar zwart). De functie imagefill() gebruikt als startwaarde de kleur op coördinaten x,y en stopt zodra hij een andere willekeurige kleur tegenkomt.
pi_27463262
quote:
Op zondag 29 mei 2005 20:48 schreef LeeHarveyOswald het volgende:

[..]

Maar nu krijg ik dus gewoon een foutmelding....
Je hebt nog een quote op het einde van je regel staan.

Kijk je trouwens ook nog even naar deze post van mij?
pi_27463363
quote:
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?
Van die post vat ik niet heel veel

Ik heb die " weggehaald, nu krijg ik niet direct een foutmelding te zien, maar wel na het " doorvoeren " :

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1

Gegevens worden ook niet gewijzigd..
  zondag 29 mei 2005 @ 20:57:03 #220
32768 DionysuZ
Respect my authority!
pi_27463443
1naam='" . $_SESSION["naam"]";

moet zijn
1naam='" . $_SESSION["naam"]."'";
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
pi_27463542
quote:
Op zondag 29 mei 2005 20:57 schreef DionysuZ het volgende:

[ code verwijderd ]

moet zijn
[ code verwijderd ]
Danku! geen foutmelding maar mn database blijft erg leeg? (alle velden muv wachtwoord en naam waren nog leeg)
pi_27463694
Ik heb trws in mn inlog pagina staan:
$user = $_POST["naam"];
$_SESSION['user'] = $user;

En boven die query heb ik staan:
$naam = $_SESSION["user"];

Dat moet dan toch werken?
pi_27463733
quote:
Op zondag 29 mei 2005 21:00 schreef LeeHarveyOswald het volgende:

[..]

Danku! geen foutmelding maar mn database blijft erg leeg? (alle velden muv wachtwoord en naam waren nog leeg)
Als je na het maken van de query
1
2
3
<?php
echo $sql_query;
?>

doet kun je zien welke query er wordt uitgevoerd dat helpt misschien met het debuggen.
pi_27463770
quote:
Op zondag 29 mei 2005 21:06 schreef LeeHarveyOswald het volgende:
Dat moet dan toch werken?
Dat weet je pas zodra je weet welke query er wordt uitgevoerd
pi_27463938
quote:
Op zondag 29 mei 2005 21:08 schreef JeRa het volgende:

[..]

Dat weet je pas zodra je weet welke query er wordt uitgevoerd
Daar gaat dus idd iets "goed" mis:

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"]."'";


geeft
quote:
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.
edit: naam en wachtwoord kloppen, de rest blijft dus leeg
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')