PHP + Javascript + MySQL

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sem E

Sem E

25/09/2012 12:35:44
Quote Anchor link
Ik ben bezig met een product voor mijn stage bedrijf en moet er nu voor zorgen, dat je je tekst kan invullen in een tekstbox en dat dan de waarde van de MYSQL script wordt veranderd.

Ik heb deze query:


UPDATE pages
SET text = '<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><img src="image.php?id=1000004" border="0" dtu="c|||_blank||" imgdtu="4|1000004" onclick="window.open(\'http://www.facebook.com/". $_POST['txtFacebooklink'] ."\',\'_blank\',\'\');" style="cursor: pointer;" href="http://www.facebook.com/". $_POST['txtFacebooklink'] ."" />&nbsp;<img src="image.php?id=1000005" border="0" dtu="c|||_blank||" imgdtu="4|1000005" onclick="window.open(\'http://www.twitter.com\',\'_blank\',\'\');" style="cursor: pointer;" href="http://www.twitter.com" />&nbsp;<img src="image.php?id=1000006" border="0" dtu="c|||_blank||" imgdtu="4|1000006" onclick="window.open(\'http://www.linkedin.com\',\'_blank\',\'\');" style="cursor: pointer;" href="http://www.linkedin.com" />&nbsp;</p>'
WHERE id = 1000007

Zoals je ziet word er achter facebook.com een POST value gepakt. Als je dus de waarde invult in de textbox komt die waarde achter www.facebook.com/waarde te staan.

Nu is het gelukt dat die waarde daar komt te staan, alleen nu link mijn image niet meer verder naar bijv. facebook.com

HELP?

Ik blijf online tot half 6. Dus ik beantwoord zo veel mogelijk vragen.

greetz

Sem
 
PHP hulp

PHP hulp

26/12/2024 17:46:57
 
Marvin H

Marvin H

25/09/2012 12:46:39
Quote Anchor link
Post je complete variabele eens waarin je query staat, heb het vermoeden dat je de haakjes niet goed escaped...
 
Sem E

Sem E

25/09/2012 13:21:14
Quote Anchor link
$userdb->q( "UPDATE pages
SET text = '<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><img src=\"image.php?id=1000004\" border=\"0\" dtu=\"c|||_blank||\" imgdtu=\"4|1000004\" onclick=\"window.open(\"http://www.google.com\",\"_blank\",\"\");\" style=\"cursor: pointer;\" href=\"http://www.google.com\"/>&nbsp;<img src=\"image.php?id=1000005\" border=\"0\" dtu=\"c|||_blank||\" imgdtu=\"4|1000005\" onclick=\"window.open(\"http://www.twitter.com\",\"_blank\",\"\");\" style=\"cursor: pointer;\" href=\"http://www.twitter.com\" />&nbsp;<img src=\"image.php?id=1000006\" border=\"0\" dtu=\"c|||_blank||\" imgdtu=\"4|1000006\" onclick=\"window.open(\"http://www.linkedin.com\",\"_blank\",\"\");\" style=\"cursor: pointer;\" href=\"http://www.linkedin.com\" />&nbsp;</p>'
WHERE id = '1000007'");
Gewijzigd op 25/09/2012 13:21:41 door Sem E
 
Marvin H

Marvin H

25/09/2012 13:24:47
Quote Anchor link
En waar is je facebook link nu dan?? Die staat nergens in je query
Gewijzigd op 25/09/2012 13:25:07 door Marvin H
 
Sem E

Sem E

25/09/2012 13:27:21
Quote Anchor link
die heb ik veranderd naar google om te testen ;)

Zo staat de query in mijn php file.
Maar ik ging het eerst testen met www.google.nl

Hij geeft wel de cursor : pointer aan , maar als ik erop klikt gebeurd er niets.

Ik heb in de file ook nog geen ". $_POST ." staan omdat ik het eerst zo wilde testen.
 
Kris Peeters

Kris Peeters

25/09/2012 13:29:19
Quote Anchor link
Hier is echt heel veel fout aan.

Om te beginnen, schrijf dit eens volledig uit en zet ze in een variabele.

Iets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$sql
= "
UPDATE pages
SET text = '<p>&nbsp;</ ...
"
;
?>


Je zal al zien dat je in de problemen komt met ' en ".

Wanneer je een string opent met ' kan je niet de string onderbreken met ".
bv.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
href="http://www.facebook.com/". $_POST['txtFacebooklink'] ."" />


Schrijf dit eens opnieuw, maar dan zonder syntax errors.
Ik geef toe: als je een string met html + javascript genereert, moet je al heel erg opletten dat je nog weet wanneer ' en " te gebruiken. Als je dit geheel dan nog in een SQL-string steekt, wordt het nog lastiger.

Dan kunnen we eens zien naar wat je probeert te bereiken.
 
Marvin H

Marvin H

25/09/2012 13:32:39
Quote Anchor link
Volgens mij kan Internet explorer hier niet mee omgaan (een onclick event op een <img>)... plaats je <img> eens tussen een <a href>... dit lost het probleem waarschijnlijk op..

Werkt het wel in andere browsers?
 
Sem E

Sem E

25/09/2012 13:33:50
Quote Anchor link
Ik heb al opgemerkt dat het niet mogelijk is om '" te gebruiken. Hiervoor gebruik ik escapes.

/"

Maar jij zegt dat ik het in een variable moet zetten. En dan zonder of met escapes?

Want ik genereer deze tekst uit mijn mysql database. Het moet namelijk de bedoeling zijn dat klanten een template kunnen kiezen en dat ze dan alleen hun link hoeven in te voegen van facebook bijv.

Dus ik kan die tekst niet zomaar opnieuw schrijven aangezien ik dan alles verander aan de pagina.

Toevoeging op 25/09/2012 13:38:47:

@marvin op FF werkt hij ook niet, maar het probleem zit m in dat ik een onclick open met " " en daarbinnen ga ik nog een x "" gebruiken. Dat kan natuurlijk niet.

@kris bedankt hiervoor, ik zal de code opnieuw typen en laten weten of het daarna wel is gelukt.

Normaal gebruik ik trouwens wel variabelen voor die Post waarde, maar deze keer niet:P
 
Kris Peeters

Kris Peeters

25/09/2012 13:39:47
Quote Anchor link
(laat maar. na update van de post hier boven)
Gewijzigd op 25/09/2012 13:40:27 door Kris Peeters
 
Remco nvt

Remco nvt

25/09/2012 13:41:39
Quote Anchor link
Gebruik je een zelf gemaakt CMS systeem? Of dat van het bedrijf?
Er schort sowieso dingen aan je database ontwerp ben ik van mening.

Als mensen een template willen kiezen dan sla je op dat ze template A willen met de volgende variables erbij. Niet de gehele html opslaan??

Deze manier van een query schrijven is niet handig. Escape in elk geval je POST waardes in je query. Want sql-injection is anders mogelijk.

Hopelijk kan je nog dingen aan de datastructuur aanpassen.
 
Sem E

Sem E

25/09/2012 13:44:27
Quote Anchor link
Ik gebruik een cms van het bedrijf.

maar ik maak het product template opslaan. Dus alles wat hiermee te maken heeft, heb ik gemaakt.

Ik heb net 1jaar applicatie ontwikkeling gehad, en loop nu een half jaar stage.
Hierdoor ben ik dus nog geen prof met php en mysql.

Als ze een keuze maken uit template 1, krijgen ze alle waardes in hun database. Daarna kunnen ze de waardes nog aanpassen naar hun eige stijl.


Toevoeging op 25/09/2012 13:49:32:

Ik heb nu dit gedaan:

$userdb->q( "UPDATE pages
SET text = '
<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>
<img src=\"image.php?id=1000004\" border=\"0\" dtu=\"c|||_blank||\" imgdtu=\"4|1000004\" onclick=\"window.open('http://www.google.com','_blank','');\" style=\"cursor: pointer;\" href=\"http://www.google.com\"/>&nbsp;
<img src=\"image.php?id=1000005\" border=\"0\" dtu=\"c|||_blank||\" imgdtu=\"4|1000005\" onclick=\"window.open('http://www.twitter.com','_blank','');\" style=\"cursor: pointer;\" href=\"http://www.twitter.com\" />&nbsp;
<img src=\"image.php?id=1000006\" border=\"0\" dtu=\"c|||_blank||\" imgdtu=\"4|1000006\" onclick=\"window.open('http://www.linkedin.com','_blank','');\" style=\"cursor: pointer;\" href=\"http://www.linkedin.com\" />&nbsp;</p>'
WHERE id = '1000007'");



En krijg de volgende fout melding:

UPDATE pages SET text = '<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><img src="image.php?id=1000004" border="0" dtu="c|||_blank||" imgdtu="4|1000004" onclick="window.open('http://www.google.com',
'_blank',
'');" style="cursor: pointer;" href="http://www.google.com"/>&nbsp;<img src="image.php?id=1000005" border="0" dtu="c|||_blank||" imgdtu="4|1000005" onclick="window.open('http://www.twitter.com',
'_blank',
'');" style="cursor: pointer;" href="http://www.twitter.com" />&nbsp;<img src="image.php?id=1000006" border="0" dtu="c|||_blank||" imgdtu="4|1000006" onclick="window.open('http://www.linkedin.com',
'_blank',
'');" style="cursor: pointer;" href="http://www.linkedin.com" />&nbsp;</p>'
WHERE id = '1000007'

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 'http://www.google.com','_blank','');" style="cursor: pointer;" href="http://www.' at line 2

iemand??
 
Kris Peeters

Kris Peeters

25/09/2012 13:55:00
Quote Anchor link
Kijk trouwens hier eens naar:
"PHP heredoc syntax"
bv. http://www.phpf1.com/tutorial/php-heredoc-syntax.html

Dat helpt, wanneer je zowel ' en " nodig hebt.
Je neemt een willekeurig woord, bv. SQL of HTML of TEMPLATE ...
en dan iets als bv.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$a
= 'Hello world';
$b = <<<HTML
  <div onclick="window.location='index.php?test=1'">$a</div>
HTML
;
echo $b;
?>


Zoals je ziet, moet je niet escapen. Variabelen worden omgezet.
Gewijzigd op 25/09/2012 13:55:45 door Kris Peeters
 
Sem E

Sem E

25/09/2012 14:03:14
Quote Anchor link
Ik zal een kijken wat ik daarmee kan doen. Ik post snel iets terug.


Ik heb het veranderd maar er komt iets wazigs uit.

$facebooklink = $_POST['txtFacebooklink'];
$facebookdb = $userdb->q ("UPDATE pages
SET text = '
<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>
<img src="image.php?id=1000004" border="0" dtu="c|||_blank||" imgdtu="4|1000004" onclick="window.open('http://www.google.com','_blank','');" style="cursor: pointer;" href="http:'//www.google.com'"/>&nbsp;
<img src="image.php?id=1000005" border="0" dtu="c|||_blank||" imgdtu="4|1000005" onclick="window.open('http://www.twitter.com','_blank','');" style="cursor: pointer;" href="http:'//www.twitter.com'" />&nbsp;
<img src="image.php?id=1000006" border="0" dtu="c|||_blank||" imgdtu="4|1000006" onclick="window.open('http://www.linkedin.com','_blank','');" style="cursor: pointer;" href="http://www.linkedin.com\" />&nbsp;</p>'
WHERE id = '1000007'"");

echo $facebookdb;

Dit kan toch nooit kloppen?

Toevoeging op 25/09/2012 14:28:59:

Ik heb het nu opgelost, met een functie.

Hiermee ben ik geholpen door een collega.

// Hier staat het eerste deel van de query in.
$text = "<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>
<img src=\"image.php?id=1000004\" border=\"0\" dtu=\"c|||_blank||\" imgdtu=\"4|1000004\" onclick=\"window.open('http://www.google.com','_blank','');\" style=\"cursor: pointer;\" href=\"http://www.google.com\">&nbsp;
<img src=\"image.php?id=1000005\" border=\"0\" dtu=\"c|||_blank||\" imgdtu=\"4|1000005\" onclick=\"window.open('http://www.twitter.com','_blank','');\" style=\"cursor: pointer;\" href=\"http://www.twitter.com\">&nbsp;
<img src=\"image.php?id=1000006\" border=\"0\" dtu=\"c|||_blank||\" imgdtu=\"4|1000006\" onclick=\"window.open('http://www.linkedin.com','_blank','');\" style=\"cursor: pointer;\" href=\"http://www.linkedin.com\">&nbsp;</p>";

// Hiermee laat je zien wat de query doet zonder slashes
echo "<pre>";
echo htmlspecialchars($text);
echo "<hr>";
// Hiermee met slashes
echo htmlspecialchars(addslashes($text));
echo "</pre>";

// De gehele query.
$qry =
"UPDATE
pages
SET
text = '".addslashes($text)."'
WHERE id = '1000007'";

//$qry = addslashes($qry);

// Het uitvoeren van de query.
$userdb->q( $qry );

is het uiteindelijke resultaat. Nog even de _POST waarde erbij zetten
Gewijzigd op 25/09/2012 14:10:32 door Sem E
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.