Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    323

    Problema file_put_contents charset

    Salve, come posso far settare i charset in utf8 ad questa riga di codice:


    codice:
    file_put_contents('../pages/'.strtolower($url).'.php', $content);


    perché se faccio modifiche online e dopo scarico il file prova.php, vedo che me la codificato in machiston/ansi.

    Uso una textarea e quando premo invia mi modifica il file con le varie modifiche html.


    Io però vorrei che mi prendesse in utf8 di default.

    come posso fare?


    grazie mille.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Non mi pare che si possa specificare, dovrebbe prendere il charset dei dati che gli passi.
    Assicurati che i dati nella variabile $content siano in UTF-8 (leggi la guida sui caratteri strani che ho in firma) e vedi che succede.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    323
    ok, ho convertito come dici da ansi a utf-8 senza bom..

    ma non cambia nulla. ti allego le immagini per farti capire cosa fa la textarea,

    comunque sto facendo un piccolo cms, senza database, che si editano le pagine php online.
    clicca sulle immagini .. il forum me la ridotte...

    ho fatto la prova online.

    prima
    prima.jpg

    dopo
    dopo.jpg

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    323
    ultima domanda e poi lascio perdere e lo uso cosi come è,
    per caso chi gestisce l'host ar*ba hanno i server mac?...

    non so più che fare..

    mi dite per caso se è questo il problema e poi e cosi la faccenda ?

    grazie mille.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    323
    guarda ho un problema, se modifico un file online esempio prova.php dalla textarea, se scarico mi viene tutto spaziato,
    ed dopo se provo ad eliminare le linee aggiunte (I spazi vuoti), lo script non funziona più per colpa della codifica Mac.

    Io so che sull'host usano centos linux .. mi pare molto strano per la codifica modificata..


    nel codice mio:
    ho settato cosi:

    codice:
    <?php function layout_header() { ?>
    <!DOCTYPE html>
    <head>
    <meta charset="utf-8">
    <title>Amministratore</title>
    <link href="css/template.css" rel="stylesheet" type="text/css">
    </head>
    <div id="header"><h1>Amministratore</h1></div>
    <div id="navigation">
    <ul>
        <li><a href="index.php">Home</a></li>
        <li><a href="pages.php">Pagine</a></li>
        <li><a href="sistema.php">Sistema</a></li>
        <li><a href="logout.php">Esci</a></li>
        <li><a href="../index.php">Torna al sito</a></li>
        </ul>
    </div>
          <div id='main'>
            <div id='content'>
            <?php } ?>
            <?php function layout_footer() { ?>
             </div>
          </div>
          <div id='footer' align="center">
          &copy; <?php echo date("Y"); ?> - v2.0 ::  ::
             </div>
    </body>
    </html>
    <?php } ?>
    e il page edit è cosi:

    codice:
    <?php
    session_start();
    include("inc.php"); 
    include("admin.php"); 
    include("layout/template.php");
    layout_header();
    $url = (isset($_GET["pages"])) ? trim ((string)$_GET["pages"]): '';
    ?>
    <p class="titolo">Pagine</p>
    <table class="table_control">
    <tr>
    <td>
    <a href="pages.php">Torna indietro</a>
    </td>
    </tr>  
    </table>
    <?php
    if(isset($_POST["update"]))
    {
    
    
        $content = stripslashes($_POST["content"]);
        if(empty($url))
        {
            echo 'url non inserito';
        }else if(empty($content))
        {
            echo 'Contenuto non inserito';
            
        }else
        {
            file_put_contents('../pages/'.strtolower($url).'.php', $content);
            header('location: pages.php');
        }
    }
    
    
    
    
    ?>
    
    
    <?php
    if(empty($url))
    {
        echo '<h2 align="center">Error : 403 - Accesso negato</h2>';
    
    
    }else
    {
        if(valid_url(strtolower($url)))
        {
            if(file_exists(strtolower("../pages/".strtolower($url).".php")))
            {
    ?>
                <div align="center">
                <form name="update" method="post">
                <table>
                <tr>
                <td>Contenuto</td>
                <td><textarea cols="80" rows="40" name="content"><?php echo file_get_contents('../pages/'.strtolower($url).'.php');?></textarea></td>
                </tr>
                </table>
                <input name="update" type="submit">
                </form>
                </div>
    <?php
            }else
            {
                    
                echo '<h2 align="center">Error : 404 - Pagina non trovata</h2>';
        
            }
            
        }else
        {    
        
            echo '<h2 align="center">?</h2>';
    
    
            
        }
    }
        layout_footer();
    ?>
    che problema è ?.

    grazie mille e buona domenica.
    Ultima modifica di LedGiallo; 14-09-2014 a 13:02

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    323
    per fare prima ti allego i file modificato online:

    prima:
    codice:
    <div id="center_div">
    <div id="content_body">
    <h1 class="center_text">Foto</h1>
    <ul id="photo">
    <li><img src="public/photo/S7300619.JPG"></li>
    <li><img src="public/photo/S7300675.JPG"></li>
    <li><img src="public/photo/S7300693.JPG"></li>
    <li><img src="public/photo/S7300698.JPG"></li>
    <li><img src="public/photo/S7300704.JPG"></li>
    <li><img src="public/photo/S7300759.JPG"></li>
    </ul>
    </div>
    </div>
    modificato online e scaricato offline.
    codice:
    <div id="center_div">
    
    
    <div id="content_body">
    
    
    <h1 class="center_text">Foto</h1>
    
    
    <ul id="photo">
    
    
    <li><img src="public/photo/S7300619.JPG"></li>
    
    
    <li><img src="public/photo/S7300675.JPG"></li>
    
    
    <li><img src="public/photo/S7300693.JPG"></li>
    
    
    <li><img src="public/photo/S7300698.JPG"></li>
    
    
    <li><img src="public/photo/S7300704.JPG"></li>
    
    
    <li><img src="public/photo/S7300759.JPG"></li>
    
    
    </ul>
    
    
    </div>
    
    
    </div>
    come mai questa cosa?

    grazie mille.

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Windows, Unix e MacOSx usano una codifica diversa per il ritorno a capo (rispettivamente \r\n, \n e \r), questo ti genera le linee vuote in eccesso.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    323
    e per risolvere il problema come faccio?

    grazie mille e buona domenica.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    323
    le hai viste le immagini che ti ho allegato, mi sai dire chi è che modifica il nome della codifica?.
    grazie.

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Come scritto nel link che ho in firma e che ti ho indicato, per risolvere devi rendere il charset coerente in tutti i passaggi, come impostazioni per il charset devi usare quelle dell'eventuale macchina su cui non ha possibilità di controllo.
    Da qualche parte nel passaggio dei dati c'è di mezzo un Mac o un altro tipo di PC che però usa la codifica del Mac, quello ti genera il problema.
    Quale sia questo computer non te lo so dire, devi capirlo tu secondo ciò che usi.

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.