• Bannato Super User

    [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

    1. sostituzione altrimenti sql va in crash
      sostituire ' (1 apice) con ** '' (2 apici) **

    2. 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> &nbsp;&nbsp;&nbsp;
                    <a href=\"\" onclick=\"approve_signup($temp[id],3); return false;\"><b>Deny</b></a> &nbsp;&nbsp;&nbsp;
                     
                </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]


  • User Attivo

    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.


  • Bannato Super User

    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


  • User Attivo

    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. 😉


  • Bannato Super User

    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