2017-12-05 2 views
0

Ich habe ein Codeigniter basiertes System gebaut.Gibt es eine Möglichkeit, htmlspecialchars() oder html_escape() ganze PHP/Codeigniter Basis-Website zu verwenden?

Bei Bearbeitungsbildschirmen nehme ich Werte aus der Datenbank und zeige auf Eingabefelder.

Beispiel:

<input type="text" class="form-control" required="" name="tes_title" value="<?php echo htmlspecialchars($tes_info['tes_title']); ?>"> 

So hatte ich htmlspecialchars zu verwenden, da einige Werte doppelte und einfache Anführungszeichen enthält. Aber das manuelle Hinzufügen aller Eingaben erfordert viel Zeit.

Gibt es eine Möglichkeit, htmlspecialchars() oder html_escape() ganze Site weise anzuwenden?

Ich meine sogar verwende ich <input type="text" class="form-control" required="" name="tes_title" value="<?php echo $tes_info['tes_title']; ?>"> es als <input type="text" class="form-control" required="" name="tes_title" value="<?php echo htmlspecialchars($tes_info['tes_title']); ?>"> gearbeitet werden sollte

+0

du in der tun kann, Funktion, die Sie in '$ tes_info' zurückgeben. Zum Beispiel: 'function getResults() {(Ihre Abfrage) $ result = [(alle Ihre Elemente in einem Array)]; foreach {$ result htmlspecialchars ($ wert)} return $ result} '. Dieser Code funktioniert nicht so wie er geschrieben wurde, aber vielleicht hast du die Idee. –

+0

Schreiben Sie eine Funktion für die Anwendung Ihrer Logik und legen Sie sie auf einen Helfer. Dann können Sie es überall verwenden, wo Sie wollen –

+0

Smarty kann das tun! Es gibt eine Bibliothek, um es in ci on github zu integrieren, nur bereit sein, alle Ihre Ansichten zu konvertieren – Alex

Antwort

0

eine Komfortfunktion schreiben.

<?php 

function e($str) { 
    //return escaped string. 
} 

Und für die Ausgabe verwenden, wo nötig:

<?= e($foo) ?> 

Aber ich würde es auf Ihre Eingabe Ausgänge beschränken. Entkomme, wo es nötig ist und entkomme entsprechend.

Codeigniter sieht aus, eine html_escape Hilfsfunktion gebacken zu haben, die ein Wrapper um htmlspecialchars ist. Es wird auch ein Array als Eingabe benötigt.

Sie könnten die Daten vorverarbeiten, bevor Sie an die Ansicht (im Controller) übergeben werden. Aber es könnte verwirrend und unhandlich werden - Sie möchten vielleicht nicht alles, was Sie zur Ansicht durchgehen, verlassen.

$data = array(
     'title' => 'My Title', 
     'heading' => 'My Heading', 
     'message' => 'My Message' 
); 

$escaped = html_escape($data); 

$this->load->view('blogview', $escaped); 
0

Sie können Hook für jede Einreichung definieren.

Bearbeiten Sie Ihre Anwendung/config/hooks.php Datei

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

$hook['post_controller_constructor'][] = array(        'class' => 'SpecialChar', 
'function' => 'remove_specials', 
'filename' => 'removespecial.php', 
'filepath' => 'hooks' 
); 

In Ihrer Funktion, müssen Sie prüfen, ob eingereichten Formular

ex:

if ($this->input->post()) {  
    foreach($this->input->post() as $post) 
    $newValue = htmlspecialchars($post); 
} 
+0

Escaping für HTML-Ausgabe ist ganz anders als Filterung/Escape-Eingabe. – Progrock

Verwandte Themen