- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- codice html via mysql - problema modifica codice
-
Sono alle prime armi con phpmyadmin
se mi spighi con degli esempio forse ti capisco.
fammi capire di cosa si tratta e come fare, grazie
ciao
-
cosa centra phpmyadmin??
$sendfrom=$_COOKIE["usNick"]; $sendto=limpiar($_POST["sendto"]); $comments=limpiar($_POST["comments"]); if ($sendto==""){echo "Error"; exit();} if ($comments==""){echo "Error"; exit();}
in questo pezzo di codice, invii alla funzione 'limpiar' come parametro il testo del messaggio, la funzione limpiar non esiste in php ,ma tu ne hai definita una 'limpiare' (con una 'e' in piu), quindi supponiamo che sia questa la funzione chiamata...
ora cosa fa quata funzione??
la funzione htmlentities parsa i caratteri html come < > & / ecc in modo che,appunto ,non si comportino come codice html ma come caratteri.
come fa questa funzione a parsarli? semplice, li sostituisce con caratteri di escape come > ...
quindi la stringa che infili nel db, una volta nella pagina web secondo te verrà interpretata come html dopo che ne hai parsato il codice??
-
Se c'è qualcuno che sa la soluzione che posti le righe modificate qui altrimenti non riesco proprio
lo script non l'ho fatto io dunque non so tecnicamente come funziona
spero che qualuno posso aiutarmi, grazie
-
Ciao guadagnaeuro e benvenuto nel Forum GT
una volta estratto il dato dal Db prova a processarlo così per visualizzarlo:
[PHP]echo html_entity_decode($testopvt);[/PHP]
-
@Samyorn said:
Ciao guadagnaeuro e benvenuto nel Forum GT
una volta estratto il dato dal Db prova a processarlo così per visualizzarlo:
[php]echo html_entity_decode($testopvt);[/php];)Ciao sam
ho provato la tua funzione ma il codice lo vedo giusto ma non è cliccabile, non è html
CODICE ORIGINALE INVIATO AL MYSQL VIA WEB
<a href="sito(punto)it">sito< a>CODICE MEMORIZZATO NEL MYSQL
< a href=" sito(punto)it" > sito< a>CODICE OTTENUTO CON echo html_entity_decode($testopvt);
< a href=" sito(punto)it" > sito< a>Ancora non è cliccabile ci sono degli spazi che non lo rendono HTML, come posso risolvere?
Coma mai non diventa come il codice originario inviato?
Grazie a chi mi aiuta, se potete postate degli esempio o ancora meglio le parti gia modificate
C'è uno spazio prima dell http che mette da solo il mysql e non so il motivo
come potreui risolvere?
N-B. (punto) l'ho messo io altrimenti non accetta il .
-
guardando meglio il codice salvato su Db effettivamente manca qualcosa
< dovrebbe diventare < e non < e così per gli altri
poi vedo che non c'è proprio lo slash
il problema è la funzione limpiare che difatti sostituisce ; con degli spazipuoi provare a salvare i dati parsandoli con
[php] $testopvt= addslashes(htmlentities($testopvt, ENT_QUOTES));[/php] e quando li recuperi
[php]echo stripslashes(html_entity_decode($testopvt));[/php]
elimina la riga
[PHP] $mensaje = str_replace(";"," ",$mensaje);[/PHP]
e dovrebbe andare
-
Ciao samyorn
volevo dirti che ho risolto semplicemente cancellano la funzione limpiar che mi alterava i dati e dunque alterava il passaggio nel mysql.
Sono arrivato grazie alla tua spiegazione dunque anziche correggere i problemi che produce questa funziona limpiar l'ho cancellata e cosi nel mysql arrivano codici html senza alcuna alterazione dunque perfettamente funzionanti.
grazie ancora per il suggeriento.
Sono nuovo nel php e ancora non lo conosco, in ogni caso mi hai permesso di trovare qeusta soluzione, grazie mille.
buona notte
-
@guadagnaeuro said:
.....e cosi nel mysql arrivano codici html senza alcuna alterazione dunque perfettamente funzionanti.
Fai attenzione che questa non è cosa buona...rischi gravi SQL injection facendo così
Ti consiglio di fare come ti ho suggerito al precendete post
-
Ciao samyorn
ho provato col tuo medoto ma non funziona, appaiono i link cn gli stessi errori di priva, col solito spazio prima del link che invalida il codice html.
Se puoi suggeriscimi un'altro modo che funzioni, col tuo modo non mi va proprio.
mi spieghi cosa sono gli jniection ?
-
Hai tolto questa riga?
[php] $mensaje = str_replace(";"," ",$mensaje); [/php]o meglio, togli la funzione e utilizza questi:
Per l'inserimento nel Db
[php] $testopvt= addslashes(htmlentities($testopvt, ENT_QUOTES)); [/php]per visualizzarli:
[php]echo stripslashes(html_entity_decode($testopvt)); [/php]