Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    eliminare slash dopo apostrofo

    Ho girato un po' il forum e ho trovato dei post, ma non ne sono venuto a capo.
    Ho scaricato dl HTML.it uno script per le news molto semplice che trasferisce il testo in un file txt E fin qui tutto OK.

    Ho fatto un sacco di prove per evitare che si visualizzi il testo così
    prova d \ 'apostrofo 17-10-2008 10:29 se c \ 'è l \ 'apostrofo non deve comparire l \ 'inusuale stanghetta (gli spazi sono voluti se non non visualizza gli slash)
    inserendo la funzione stripslashes ma evidentemente sono incapace io



    Lo script è molto semplice
    codice:
    <?php } else {
       $newsTitel   = isset($_POST['title']) ? $_POST['title'] : 'Untitled';
       $submitDate  = date('d-m-Y H:i');
       $newsContent = isset($_POST['newstext']) ? $_POST['newstext'] : 'No content';
       
       $filename = date('YmdHis');
       $f = fopen('news/'.$filename.".txt","w+");         
       fwrite($f,$newsTitel."\n");
       fwrite($f,$submitDate."\n");
       fwrite($f,$newsContent."\n");
       fclose($f);
    
       header('Location:index.php');   
    }
    ?>
    Cosa devo corregere, per favore? :berto:
    Giuseppe

    Mi lamentavo delle scarpe strette, poi vidi un uomo senza gambe......

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Allora devi innanzitutto controllare le gpc_quotes.
    E' un parametro di configurazione del server che si occupa di effettuare l'addslashses in automatico su tutto le stringhe che riceve da get / post.

    Siccome non ho tempi di farti esempi dai un occhio qui che e' spiegato tutto.

    Mi sa che te fai un addslashes insieme alle gpc quotes quindi raddoppi le sbarrette e poi con strip slashes ne elimini solo una su due.

    Prova cosi' ....

    P.S.
    Dal codice che hai postato non si capisce molto anche perche' non vedo la riga con cui stampi il testo.

  3. #3
    Intanto grazie per la risposta
    Il fatto è che di tutto quel codice e dei magic quote, lo scriptino scaricato non ne ha cenni

    é composto da due file index ed admin

    INDEX
    codice:
    function getNewsList(){
    	
       $fileList = array();
       
    	// Open the actual directory
    	if ($handle = opendir("news")) {
    		// Read all file from the actual directory
    		while ($file = readdir($handle))  {
    		    if (!is_dir($file)) {
    		       $fileList[] = $file;
          	}
    		}
    	}	
    	
    	rsort($fileList);
    	
    	return $fileList;
    }
    
    ?>
    .......................
        <?php
        
          $list = getNewsList();
          foreach ($list as $value) {
          	$newsData = file("news/".$value);
          	$newsTitle  = $newsData[0];
             $submitDate = $newsData[1];	
             unset ($newsData['0']);
             unset ($newsData['1']);
          	
             $newsContent = "";
             foreach ($newsData as $value) {
        	       $newsContent .= $value;
             }
          	
          	echo "<tr><th align='left'>$newsTitle</th><th align='right'>$submitDate</th></tr>";
          	echo "<tr><td colspan='2'>".$newsContent."
    <hr size='1'/></td></tr>";
          }
        ?>
    ADMIN
    codice:
    if (!isset($_POST['submit'])) {
     
    ?>
    ................
          <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            Titolo:
    
            <input type="text" name="title" size="40"/>
    
    
            Notizia:
    
            <textarea name="newstext" rows="15" cols="67"></textarea>
    
            <center><input type="submit" name="submit" value="Save" /></center>
         </form> 
         
     	 <div id="source"></div>
      </div>
    </body>   
    
    <?php } else {
       $newsTitel   = isset($_POST['title']) ? $_POST['title'] : 'Untitled';
       $submitDate  = date('d-m-Y H:i');
       $newsContent = isset($_POST['newstext']) ? $_POST['newstext'] : 'No content';
       
       $filename = date('YmdHis');
       $f = fopen('news/'.$filename.".txt","w+");         
       fwrite($f,$newsTitel."\n");
       fwrite($f,$submitDate."\n");
       fwrite($f,$newsContent."\n");
       fclose($f);
    
       header('Location:index.php');   
    }
    ?>
    e non capisco come integrare (e dove) col codice!!!
    Giuseppe

    Mi lamentavo delle scarpe strette, poi vidi un uomo senza gambe......

  4. #4
    Beh... innanzi tutto, devi capire cosa ci fai con quelle stringhe in cui magicamente appaiono gli slash prima degli apostrofi.

    Se quella stringa viene passata ad una istruzione SQL, beh.. preparati a scrivere il post per capire come mai nel DB arriva solo mezza query!

    Comunque, Virus ti ha consigliato di controllare in che stato sono le gpc_quotes: un parametro che è impostato nel PHP.ini.

    Ad ogni modo, per togliere quegli slash devi semplicemente usare la funzione stripslashes().
    Però, come ti dicevo ad inizio post, prima cerca devi capire dove andrà a finire quella stringa.... perché allora dovrai prevedere anche un replace di tutti i caratteri potenzialmente dannosi!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Grazie alcio74....

    allora, lo script non passa da DB, ma va diritto ad un file txt....
    Sono andato a vedere sul php.ini e i riferimenti trovato sono

    magic_quotes_gpc On On
    magic_quotes_runtime Off Off
    magic_quotes_sybase Off Off
    E fin qui ci siamo
    Ad ogni modo, per togliere quegli slash devi semplicemente usare la funzione stripslashes()
    e anche questo era assodato....
    il problema è COME e DOVE modificare lo script....? :berto:
    Giuseppe

    Mi lamentavo delle scarpe strette, poi vidi un uomo senza gambe......

  6. #6
    Codice PHP:
    <?php 
    // tutta la parte precedente non l'ho rischitta

    } else {
       
    $newsTitel   = isset($_POST['title']) ? $_POST['title'] : 'Untitled';
       
    $newsTitel stripslashes($newsTitel);
       
    $submitDate  date('d-m-Y H:i');
       
    $newsContent = isset($_POST['newstext']) ? $_POST['newstext'] : 'No content';
       
    $newsContent stripslashes($newsContent);
       
       
    $filename date('YmdHis');
       
    $f fopen('news/'.$filename.".txt","w+");         
       
    fwrite($f,$newsTitel."\n");
       
    fwrite($f,$submitDate."\n");
       
    fwrite($f,$newsContent."\n");
       
    fclose($f);

       
    header('Location:index.php');   
    }
    ?>
    In maniera un po' brutale si fa così.... ma mi chiudo gli occhi e mi tappo il naso perché in questo modo tu permetti una interazione utentre/macchina/sito senza neanche filtrare un minimo gli input!
    È un po' come si urlassi fuori da un tendone di circo "Venghino siorri Hacker venghino!"

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #7
    Ti ringrazio tantissimo, alcio74

    funziona a meraviglia.....

    È un po' come si urlassi fuori da un tendone di circo "Venghino siorri Hacker venghino!"
    d'altronde mi serviva una cosa molto semplice ed immediata senza registrazioni o altro.......se hai qualche consiglio alternativo, ben venga!!!
    Giuseppe

    Mi lamentavo delle scarpe strette, poi vidi un uomo senza gambe......

  8. #8
    Di alternativo c'è sicuramente il DB.
    Però, io intanto penserei anche a fare il filraggio degli input, per evitare spamming, hacking, cracking eccetering!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.