Torna indietro   AlterVista | Spazio web gratis, hosting free php mysql > L'angolo del webmaster > PHP, MySql e Apache (.htaccess)

Rispondi
 
LinkBack Strumenti discussione Modalità visualizzazione
  #1 (permalink)  
Vecchio 30-05-2009, 18.32.57
L'avatar di gabryhacker
AlterVistiano
 
Data registrazione: 11-02-2008
Messaggi: 976
Predefinito Bypassare addslashes automatico

Salve a tutti. Sto creando un nopaste con GeSHi, solo che ho un problema.
Intanto, una pagina di prova la trovate a: http://crashinside.net/
Il mio problema è che quando scrivo il sorgente sul file che fungerà da database, vengono aggiunti i backslash ('\'), come qui su AV, a tutte le vergolette. Tempo fa avevo risolto con stripslashes(addslashes($source)); solo che ora non funziona. Come si può evitare addslashes() automatico? Se si deve cambiare qualche opzione dal php.ini posso farlo, quindi se mi aiutate grazie mille
__________________

Citazione:
Originalmente inviato da svacant Visualizza messaggio
La vera ricchezza di un'azienda sono i dati che possiede.
Rispondi citando
  #2 (permalink)  
Vecchio 30-05-2009, 18.54.01
L'avatar di miki92
AlterGuru 2500
 
Data registrazione: 21-04-2007
Residenza: Procida (NA)
Messaggi: 3,097
Invia un messaggio via ICQ a miki92 Invia un messaggio via AIM a miki92 Invia un messaggio via MSN a miki92 Invia un messaggio via Yahoo a miki92 Manda un messaggio tramite Skype™ a miki92
Predefinito

Io ho risolto questo problema aggiungendo in un file .htaccess questa regola:

Codice PHP:
php_flag magic_quotes_gpc On 
Come puoi ben vedere sul mio sito (Miki92) non da errori di sintassi nè funge male.
__________________
Mik92: AlterGuru 2500

Apprezzi l'aiuto? Offrimi un caffè!

Ultima modifica di miki92 : 30-05-2009 alle ore 18.55.04
Rispondi citando
  #3 (permalink)  
Vecchio 30-05-2009, 22.50.30
L'avatar di AlexKidd
Altervistiano Junior
 
Data registrazione: 09-02-2007
Messaggi: 517
Predefinito

ma l'aggiunta di slashes avviene quando scrivi il file o quando ottieni il testo dall'array $_POST ?
__________________
www.AlexKidd.altervista.org
Rispondi citando
  #4 (permalink)  
Vecchio 31-05-2009, 08.21.07
L'avatar di gabryhacker
AlterVistiano
 
Data registrazione: 11-02-2008
Messaggi: 976
Predefinito

Quando scrivo il file, presumo, comunque ho risolto. Quando leggo il file uso str_replace per sostituire \" con "
EDIT: ho un'altro problema. Non so perchè ma la soluzione di miki va in collisione con il resto del codice del file .htaccess. Il codice è:
Codice PHP:
RewriteEngine On
RewriteRule 
^(w+)$   index.php?mode=view&file=$
Se metto il codice di miki, prima o dopo queste istruzioni, viene un 500.
Ho il problema che saltano fuori anche caratteri come \\" o \\', che str_replace stranamente non cambia. Posto il pezzo di codice incriminato:
Codice PHP:
<?php
        
if(isset($_GET['mode']) && isset($_GET['file']) && $_GET['mode'] == "view") {
            
$f file("sources/".$_GET['file'].".txt");
            
$name array_shift($f);
            
$lang array_shift($f);
            foreach(
$f as $l) {
                
$ff[] = str_replace(array('\"',"\'",'\\"',"\\'"),array('"',"'",'\"',"\'"),$l);
            }
            print 
"<span id=\"subtitle\">".$name."</span><br>";
            
$gh = new GeSHi(join("",$ff), $lang);
            
$gh->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
            echo 
$gh->parse_code();
        
?>
un file del mio nopaste è così strutturato:
Codice:
nome
linguaggio
sorgente
Uso file() per recuperare le linee del file che si vuole vedere, poi tolgo con array_shift() il nome del sorgente e il linguaggio, e uso foreach() per eliminare i caratteri che danno noia. Unica soluzione, secondo me: far funzionare il codice htaccess di miki in combinazione con il mio.
RI-EDIT: ho verificato che gli slash vengono messi alla scrittura del file, e che il codice di miki mi restituisce sempre e comunque un 500, anche se lo provo senza l'altro codice
RI-RI-EDIT: stando alla pagina: http://tinyurl.com/lmxbzc magic_quotes_gpc va impostato a off per togliere l'effetto dell'addslashes() automatico
RI-RI-RI-EDIT: risolto con
Codice PHP:
str_replace("\\\\","\\",$var_del_source); 
__________________

Citazione:
Originalmente inviato da svacant Visualizza messaggio
La vera ricchezza di un'azienda sono i dati che possiede.

Ultima modifica di gabryhacker : 31-05-2009 alle ore 10.14.09
Rispondi citando
  #5 (permalink)  
Vecchio 31-05-2009, 12.05.16
L'avatar di AlexKidd
Altervistiano Junior
 
Data registrazione: 09-02-2007
Messaggi: 517
Predefinito

è un concatenarsi di pezze.... tornare alla radice e capire perchè scrivendo il file aggiungono gli slash non è meglio?
__________________
www.AlexKidd.altervista.org
Rispondi citando
  #6 (permalink)  
Vecchio 31-05-2009, 13.32.54
L'avatar di gabryhacker
AlterVistiano
 
Data registrazione: 11-02-2008
Messaggi: 976
Predefinito

Ho provato in tutti i modi a settare a off magic_quotes_gpc, ma il mio spazio web non lo permette. Quindi ho "tappezzato" il problema, e, pur sempre in maniera sporca, ho risolto
__________________

Citazione:
Originalmente inviato da svacant Visualizza messaggio
La vera ricchezza di un'azienda sono i dati che possiede.
Rispondi citando
  #7 (permalink)  
Vecchio 31-05-2009, 13.58.10
L'avatar di AlexKidd
Altervistiano Junior
 
Data registrazione: 09-02-2007
Messaggi: 517
Predefinito

ma allora bastavano tre righe di codice tipo queste

Codice PHP:
if (get_magic_quotes_gpc())
foreach(
$_POST as $i => $j)
$_POST[$i]=stripslashes($j); 
da inserire all'inizio dello script per annullare gli effetti di quell'opzione e rendere lo script compatibile anche con altre configurazioni
__________________
www.AlexKidd.altervista.org
Rispondi citando
  #8 (permalink)  
Vecchio 01-06-2009, 08.34.13
L'avatar di gabryhacker
AlterVistiano
 
Data registrazione: 11-02-2008
Messaggi: 976
Predefinito

Ma se devo inserire un codice con degli slash presenti, stripslashes() li leva tutti. Esempio devo inviare il seguente codice:
Codice PHP:
<?php
print "<a href=\"http://forum.it.altervista.org/\">AV Forum</a>";
?>
stripslashes() lo fa diventare:
Codice PHP:
<?php
print "<a href="http://forum.it.altervista.org/">AV Forum</a>";
?>
Fidati ho provato
__________________

Citazione:
Originalmente inviato da svacant Visualizza messaggio
La vera ricchezza di un'azienda sono i dati che possiede.
Rispondi citando
  #9 (permalink)  
Vecchio 01-06-2009, 11.46.18
L'avatar di AlexKidd
Altervistiano Junior
 
Data registrazione: 09-02-2007
Messaggi: 517
Predefinito

se get_magic_quotes_gpc() è true allora puoi eliminare il "primo livello" di \ contenuti in una qualsiasi stringa dell'array $_POST

ovviamente se tu passi via post una cosa tipo questa

<a href=\"http://forum.it.altervista.org/\">AV Forum</a>

questo diventerà

<a href=\\\"http://forum.it.altervista.org/\\\">AV Forum</a>

e stripslashes() si limiterà a farlo tornare alla forma originale
__________________
www.AlexKidd.altervista.org
Rispondi citando
  #10 (permalink)  
Vecchio 01-06-2009, 15.31.32
L'avatar di gabryhacker
AlterVistiano
 
Data registrazione: 11-02-2008
Messaggi: 976
Predefinito

Hai ragione, ma invece di stripslashes uso str_replace che fa diventare \\ in \. Più o meno è la stessa cosa
__________________

Citazione:
Originalmente inviato da svacant Visualizza messaggio
La vera ricchezza di un'azienda sono i dati che possiede.
Rispondi citando
Rispondi

Strumenti discussione
Modalità visualizzazione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks are Attivato
Pingbacks are Attivato
Refbacks are Disattivato



Tutti gli orari sono GMT +1. Adesso sono le 06.58.50.