- Home
- Categorie
- Coding e Sistemistica
- Coding
- [Risolto]Problema Apici Sql + Sostituzione Valori Form
-
[Risolto]Problema Apici Sql + Sostituzione Valori Form
Salve
Ho bisogno di sostituire dei valori in un form prima di inviarli altrimenti mi da degli errori sql
-
sostituzione altrimenti sql va in crash
sostituire ' (1 apice) con ** '' (2 apici) ** -
sostituzione per far aprire in nuova pagina il banner inserito
sostituire <a href=" con ** <a target="_blank" href=" **
Ho bisogno che vengano sostituiti in automatico all'inserimento dei dati nel form
Vi allego le pagine interessate (inserisci e modifica) è il valore target (url banner) da modificare
Lo script è molto complesso non è realizzato da me e richiama parti in ajax.
Spero possiate darmi una mano vi ringrazio
Buonasera
[PHP]
<?
requireAdmin();$sql=$Db1->query("SELECT * FROM ptsuads WHERE id='$id' ORDER by title");
$adinfo=$Db1->fetch_array($sql);if($adinfo[pstart] == "") {
$adinfo[pstart]=time();
}if($adinfo[pend] == "") {
$adinfo[pend]=time()+2592000;
}echo "
<div align="center" style="margin: 10 0 0 0px">
<div id="edit_ad_message" class="messagebox"></div><form id="editForm">
<table border=0 width="450"><tr> <td><div class=\"form_row_title\"> Id:</div></td> <td><div class=\"form_row_value\"> $adinfo[id]</div></td> </tr> <tr> <td><div class=\"form_row_title\"> Title:</div></td> <td><div class=\"form_row_value\"> <input type=\"text\" value=\"$adinfo[title]\" name=\"title\" size=\"40\"></div></td> </tr> <tr> <td><div class=\"form_row_title\"> Banner Url:</div></td> <td><div class=\"form_row_value\"> <textarea rows=\"8\" cols=\"25\" name=\"target\" class=\"fields\">$adinfo[target]</textarea> </div></td> </tr> <tr> <td><div class=\"form_row_title\"> Username:</div></td> <td><div class=\"form_row_value\"> <input type=\"text\" value=\"$adinfo[username]\" name=\"user\" readonly></div></td> </tr> <tr> <td><div class=\"form_row_title\"> Nr. Signups:</div></td> <td><div class=\"form_row_value\"> <input type=\"text\" value=\"$adinfo[credits]\" name=\"credits\"></div></td> </tr> <tr> <td><div class=\"form_row_title\"> Class:</div></td> <td><div class=\"form_row_value\"> <select name=\"class\"> <option value=\"C\"".iif($adinfo['class']=="C"," selected=\"selected\"").">Cash </select> </div></td> </tr> <tr> <td><div class=\"form_row_title\"> Value:</div></td> <td><div class=\"form_row_value\"> <input type=\"text\" value=\"$adinfo[pamount]\" name=\"pamount\"></div></td> </tr> <tr> <td><div class=\"form_row_title\"> Active: </div></td> <td><div class=\"form_row_value\"> <select name=\"active\"> <option value=\"1\"".iif($adinfo['active']==1," selected=\"selected\"").">Yes <option value=\"0\"".iif($adinfo['active']==0," selected=\"selected\"").">No </select> </div></td> </tr> <tr> <td><div class=\"form_row_title\"> Rotation: </div></td> <td><div class=\"form_row_value\"> <select name=\"rotation\"> <option value=\"1\"".iif($adinfo['rotation']==1," selected=\"selected\"").">Yes <option value=\"0\"".iif($adinfo['rotation']==0," selected=\"selected\"").">No </select> </div></td> </tr> <td colspan=2 align=\"center\"> <input type=\"button\" value=\"Save\" onclick=\"do_edit_ad($id)\"> <input type=\"button\" value=\"Delete\" onclick=\"delete_ad($id)\"> </td> </tr> </table></form>
</div>";
/*
0 Attesa
1 Approvata
2 Attesa
3 Rifiutata
4 Rifiutata
*/$number_id = $adinfo[dsub];
$sql=$Db1->query("SELECT * FROM ptsu_log WHERE status=0 AND ptsu_id='".$adinfo[id]."' ORDER BY dsub ASC");
$total=$Db1->num_rows();
for($x=0; $temp=$Db1->fetch_array($sql); $x++) {
$sql2=$Db1->query("SELECT last_ip FROM user WHERE username='$temp[username]'");
$temp2=$Db1->fetch_array($sql2);
$list.="
<div class="borderBox" id="approve_signup_main".$temp[id]."">
<div id="approve_signup".$temp[id]."">".iif($temp[status]==0 || $temp[status]==2," <div style=\"float: right;\"> <a href=\"\" onclick=\"approve_signup($temp[id],1); return false;\"><b>Approve</b></a> <a href=\"\" onclick=\"approve_signup($temp[id],3); return false;\"><b>Deny</b></a> </div>" )." " .iif($temp[status]==0,"") .iif($temp[status]==1,"Approvata") .iif($temp[status]==2,"Attesa") .iif($temp[status]==3,"Rifiutata") .iif($temp[status]==4,"Rifiutata") ." <b>Date: </b> ".date('d/m/Y - H:i', mktime(0,0,($temp[dsub]+7200),1,1,1970))." <a onclick=\"javascript:document.getElementById('$temp[dsub]').style.display = 'block'\"><b> More </b></a> - <a onclick=\"javascript:document.getElementById('$temp[dsub]').style.display = 'none'\"><b> Less </b></a> <div style=\"display: none;\" id=\"$temp[dsub]\"> <b>Sponsor: </b> $adinfo[title]<br> <b>Ip: </b> $temp[ip]<br> <b>Username:</b> $temp[username]<br> <textarea readonly=\"readonly\" rows=\"20\" cols=\"75\"> ".nl2br($temp[welcome_email])."</textarea> </div> </div> </div> ";}
echo "<hr>$list";?>
[/PHP]
[PHP]
<?
requireAdmin();$sql=$Db1->query("INSERT INTO ptsuads SET
title='".htmlentities($title)."',
target='$target',
username='$user',
credits='$credits',
class='$cclass',
pamount='$pamount',
forbid_retract='$forbid_retract',
active='$active'
");?>
<script>
create_done();
</script>[/PHP]
-
-
Ciao guadagnaeuro,
Per il primo problema filtra le stringhe prima di effettuare la query con
[php]mysql_real_escape_string($stringa_da_filtrare)[/php]Per il secondo potresti usare una preg_replace con un'espressione regolare adatta allo scopo.
Ti sconsiglio una sostituzione a corrispondenza secca tipo la str_replace, perché se io scrivessi <a href= "link" (mettendo ad esempio uno spazio dopo l'uguale), l'occorrenza non verrebbe riconosciuta e la sostituzione salterebbe.
-
Purtroppo non riesco a risolvere
Ogni modifica che effettuo allo script sballa tutto e non funziona piu niente.
Mi puoi scrivere le righe da modificare e come modificarle
Lo script si compone di circa 300 pagine e molte pagine sono in ajax che vengono richiamate da altre, è molto difficile capire, infatti nonostante lo usano oltre 10.000 siti questo script nessuno è mai riuscito a modificarlo.
Ti ringrazio
Sono giorni che scrivo in 3 forum e non riesco a risolvelvere il problema in nessun modo
-
Quando fai le query di insert o update, cioè quelle che iniziano con "INSERT ...." o "UPDATE ...", trova le variabili che vengono utilizzate all'interno e applica loro la funzione che ti ho scritto prima.
Per farti un esempio:
[php]
<?
requireAdmin();$sql=$Db1->query("INSERT INTO ptsuads SET
title='".htmlentities($title)."',
target='".mysql_real_escape_string($target)."',
username='".mysql_real_escape_string($user)."',
//E così via...
[/php]Questo è ovviamente un esempio, senza sapere a cosa servano o come lo script utilizzi le variabili che compaiono.
La funzione mysql_real_escape_string non devi applicarla sempre, ma solo in quei casi in cui è l'utente a scrivere il contenuto di quella variabile (magari tramite un form o altro).
Io su questo non posso aiutarti, perché non vedo lo script intero e quindi non posso indicarti esattamente dove effettuare le modifiche.
Con questo non ti sto invitando a postare tutto lo script, dato che come hai già detto è composto da una miriade di pagine, ma piuttosto a verificare con pazienza dove apportare le modifiche.Se non dovessi riuscire a risolvere, comunque, puoi sempre provare a chiedere a chi ha sviluppato lo script: lui certamente può darti indicazioni precise.

-
Volevo ringraziare tutti ma ho risolto
ho aggiunto queste funzioni una per apice (') e una per cambiare il target di apertura del banner
$target = mysql_real_escape_string($target);
$target = str_replace('<a href','<a target="_blank" href', $target);Ora va tutto bene
Grazie a tutti per i suggerimenti
Buona giornata