Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: la \ nei messaggi...

  1. #1

    la \ nei messaggi...

    Salve ragazzi, a causa del trasferimento del mio sito da altervista ad aruba si è verificato uno strano problema.
    Quando qualcuno scrive un commento ad un gioco o modifica la pagina della descrizione del proprio gioco, se inserisce un apostrofo ( ' ) compare la barra \ .
    Io non sono un programmatore. Dove dovrei cercare per eliminare questo difetto ?
    nel file .js ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    dipende da tanti fattori... se c'è una parte php che elabora il contenuto prima della visualizzazione potrebbe essere sufficiente stripslashes

  3. #3
    Penso che l'errore sia qui ma non riesco a trovarlo...
    potresti dirmi dove correggere ?

    codice:
    var last_upload_description_value = "";
    function licence() {
    	window.open('licence.htm',LangLicence,'scrollbars=yes, resizable=no, width=600, height=600, status=no, location=no, toolbar=no');
    }
    
    function popup_comments(gid) {
    	window.open('feedback.php?gid='+gid,'','scrollbars=yes, resizable=no, width=600, height=600, status=no, location=no, toolbar=no')
    }
    
    function popup_retrogame(glnk) {
    	window.open(glnk,'','scrollbars=yes, resizable=no, width=600, height=690, status=no, location=no, toolbar=no, menubar=no')
    }
    
    function check_licence() {
    	document.getElementById('Submit').disabled = !document.getElementById('licence').checked;
    }
    
    function download_click() {
    	var mySearch = new RegExp("download", "i");
            document.location.href = document.location.href+(document.location.href.search(mySearch) == -1 ? "&download=1" : "");
    }
    
    function check_signup_form() {
    	if (document.signup.username.value == "" || document.signup.password == "" || document.signup.email.value == "" || document.signup.password.value != document.signup.confirmpassword.value || document.signup.email.value != document.signup.confirmemail.value) {
    		alert(LangSignupFormError);
    		return false;
    	} else
    		return true;
    }
    
    function full_screenshot() {
    	var url = document.getElementById("Preview").src;
    	var newImg = new Image();
    	var width, height;
    	
    	newImg.src = url;
    	height = newImg.height+5;
    	width = newImg.width+5;
    	window.open(url, "Screenshot", "scrollbars=no, resizable=no, status=no, width="+width+", height="+height+", location=no, toolbar=no");
    }
    
    function only_numeric(string) {
    	var i;
    	var b9 = "9".charCodeAt(0);
    	var b0 = "0".charCodeAt(0);
    	var bv = ".".charCodeAt(0);
    	for (i=0; i<string.length; i++)
    		if ((string.charCodeAt(i) > b9 || string.charCodeAt(i) < b0) && string.charCodeAt(i) != bv)
    			return false;
    	return true;
    }
    
    function check_upload_description_field_length(description) {
    	var content;
    	var parsing_html;
    	
    	content = description.value;
    		
    	parsing_html = false;
    	len = 0;
    	for (i = 0; i < content.length; i++) {
    		if (content.charCodeAt(i) == "<".charCodeAt(0))
    			parsing_html = true;
    		else if (content.charCodeAt(i) == ">".charCodeAt(0))
    			parsing_html = false;
                    else if (!parsing_html)
    			len++;
    	}
    	
    	return len;
    }
    
    function check_upload_description_field(description) {
    	var content;
    	var words;
    	var parsing_html;
    	
    	content = description.value;
    		
    	parsing_html = false;
    	toparse = "";
    	for (i = 0; i < content.length; i++) {
    		if (content.charCodeAt(i) == "<".charCodeAt(0))
    			parsing_html = true;
    		else if (content.charCodeAt(i) == ">".charCodeAt(0))
    			parsing_html = false;
                    else if (!parsing_html)
    			toparse += content.substring(i, i+1);
    	}
    	
    	words = toparse.split(" ");
    	
    	for (i = 0; i < words.length; i++) {
    		if (words[i].length > 25)
    			return false;
    	}
    
            if (toparse.length > DescriptionMaxLength)
    		return false;
    	
    	return true;
    }
    
    function upload_description_add_link(description) {
    	var a;
    	var value;
    	
    	a = prompt(LangLinkInsertLink, document.location.href);
    	value = prompt(LangLinkInsertText, "Text");
    	description.value += "" + value + "";
    	return true;
    }
    
    function update_upload_description_counter(description) {
    	var len = check_upload_description_field_length(description);
    	
    	if (len > DescriptionMaxLength)
    		document.getElementById("description_field").rows[0].cells[1].innerHTML = "Limite raggiunto!";
    	else
    		document.getElementById("description_field").rows[0].cells[1].innerHTML = "" + (DescriptionMaxLength-len) + " " + LangCharacters;
    }
    
    function upload_check_weight() {
    	if (document.upload.uweight[0].checked) {
    		document.upload.weight.value = "0";
    		document.upload.weight.disabled = true;
    	} else
    		document.upload.weight.disabled = false;
    	
    }
    
    function check_comment_field() {
    	if (!check_upload_description_field(document.comment.leave)) {
    		alert(LangCommentOverflow);
    		return false;
    	}
    	
    	return true;
    }

  4. #4
    l'errore non è qui.

    Questo è js. Il tuo è invece (quasi sicuramente) un problema legato a php.

    Il punto è che ci sono impostazioni di php differenti sui due hosting. In particolare si tratta di un problema legato all'escape delle stringhe (cioè, detto semplicemente, anteporre il \ gli apici ' e alle virgolette ").

    Per capire l'inghippo bisognerebbe analizzare alcuni aspetti tra cui:
    1. Verificare come è eseguito l'escape andando a sbirciare direttamente nel db (assicurarsi che non viene un duplice escape);
    2. Verificare se il problema si verifica con nuovi inserimenti fatti sul nuovo hosting o se si presenta solo sui contenuti trasferiti dal vecchio hosting.
    3. Verificare come è impostato il magic_quotes (sui due hosting) e renderlo coerente (anche se è più corretto impostarlo su off);
    4. L'eventuale impiego di stripslashes.

    Essendo che non sei un programmatore capisco che per te questi passaggi non sono semplicissimi...
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  5. #5
    2. Verificare se il problema si verifica con nuovi inserimenti fatti sul nuovo hosting o se si presenta solo sui contenuti trasferiti dal vecchio hosting.
    Si verifica solo sui nuovi contenuti.
    Come se quando uno scrive il programmatore avesse impostato che si deve aggiungere la \ se si inserisce l'accento.

    3. Verificare come è impostato il magic_quotes (sui due hosting) e renderlo coerente (anche se è più corretto impostarlo su off);
    sai per caso su aruba dove si impostano ? O riguarda sempre gli script ?

  6. #6
    ok allora fai questo controllo:

    inserisci un nuovo contenuto e vai a controllare direttamente nel db con phpmyadmin come sono formattate gli apici e le virgolette.

    Dovresti trovare il doppio escape cioè \ \ \ ' (senza gli spazi)
    --------------------------------------------

    Se è così è probabile che su Aruba (è vietato da regolamento del forum citare hosting) hanno impostato il magic_quotes su on.
    Per verificare ciò crea una pagina php e scrivici
    Codice PHP:
    <?php
    echo get_magic_quotes_gpc(); 
    ?>
    punta la pagina con il browser e vedi che ti compare:
    1 se magic_quotes è su on, 0 se è su off.

    ---------------------------------------------

    Se il magic_quotes è su on (ti compare 1) devi impostarlo su off. Per fare ciò puoi agire tramite file .htaccess o operando direttamente sul php.ini così come indicato a questo url

    http://php.net/manual/en/security.ma....disabling.php
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  7. #7
    Ho inserito un nuovo contenuto e sonbo andato a controllare direttamente nel db con phpmyadmin ed è identico a come appare poi nel sito, ovvero con una sola \ .
    Come ti ho detto penso che quando uno scrive il programmatore avrà impostato che si deve aggiungere la \ se si inserisce l'accento...
    infatti se dal database elimino le \ successivamente non compaiono più

    compare ad esempio quando si scrive in questo box
    codice:
    <td><?php echo lget('notes'); ?> :</td>
    <td><table id=description_field>
    <tr><td><textarea name='description' onkeyup='update_upload_description_counter(this)' onblur='update_upload_description_counter(this)' onfocus='update_upload_description_counter(this)' rows=3 cols=50></textarea>
    <?php echo sget('addlink'); ?></td>
    <td></td></tr>

    invece nell' htaccess c'è questo :
    codice:
    # av:AntiHotlink
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_URI} \.(gif|jpe?g|png)$ [NC]
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://([a-z0-9\-\.]*)freankexpo\.altervista\.org
    RewriteCond %{REQUEST_URI} !^\/_altervista_ht\/
    RewriteCond %{HTTP_REFERER} !^http://([a-z0-9\-\.]+)google\.
    RewriteRule .*$ http://hl.altervista.org/split.php?http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    # AntiHotlink
    come dovrei cambiarlo ? (dato anche il cambio di host)

  8. #8
    Hai fatto la prova per verificare l'impostazione del magic quotes? Cosa ti ha dato?

    Inoltre, prima di far modifiche fammi capire un'altra cosa:
    il problema si presenta sia con l'apice (apostrofo / accento) che con le virgolette ". Giusto?

    Se è così nel file htaccess aggiungi la seguente riga
    codice:
    php_flag magic_quotes_gpc Off
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  9. #9
    Si, il problema si verifica anche con le virgolette ".
    Non ho fatto al prova per verificare le impostazioni del magic quotes in quanto nel messaggio precedente mi era parso di capire che dovevo farlo solo nel caso avessi trovato il doppio escape (che invece non ho trovato).

    dell'htaccess devo solo aggiungere
    codice:
    php_flag magic_quotes_gpc Off
    ?

    Non devo fare nessun altra modifica ?
    dato che ci sono tutti quei riferimenti ad altervista...

    EDIT :
    Ho modificato così, ma non c'è stato nessun cambiamento
    codice:
    # av:AntiHotlink
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_URI} \.(gif|jpe?g|png)$ [NC]
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://([a-z0-9\-\.]*)freankexpo\.altervista\.org
    RewriteCond %{REQUEST_URI} !^\/_altervista_ht\/
    RewriteCond %{HTTP_REFERER} !^http://([a-z0-9\-\.]+)google\.
    RewriteRule .*$ http://hl.altervista.org/split.php?http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    # AntiHotlink
    php_flag magic_quotes_gpc Off

  10. #10
    Questa modifica non agisce sui contenuti già presenti (che dovranno essere modificati in altro modo) ma solo per i nuovi inserimenti.

    Provando a fare un nuovo inserimento in cui ci sono apici e/o virgolette non cambia nulla?
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.