2017-03-04 4 views
0

So arbeite ich derzeit auf einer Website, auf der der Benutzer eine Datei hochladen kann (z. B. myfile.html). Nun möchte ich das Upload-Skript nach mehreren Zeichenfolgen (aus einem Array) in dieser Datei suchen, bevor Sie es in das Upload-Verzeichnis verschieben.Suche Datei für Zeichenfolgen aus Array

Sobald es String aus dem Array in der Datei zum ersten Mal gefunden hat, sollte es nicht weiter suchen, sondern den Benutzer darüber informieren und speichern Sie die Datei (unzugänglich natürlich), so kann ich hineinschauen und kann setze es frei von Hand, wenn es ein "falsch positives" war.

Dies ist, was ich bisher habe:

$forbidden = array('thisisnotallowed', 'thisisntaswell', 'alsonotallowed'); 
$uploaded_file = file($_FILES['fileupload']['name']); 
$deleted = str_ireplace($forbidden, "", $uploaded_file); 
foreach($deleted as $line) { 
    echo($line.'<br>'); 
} 

dies würde alle verbotenen Zeichenfolgen in der Datei und Ausgabe mit ihnen die neue Datei durch nichts ersetzt So offensichtlich nur ersetzen.

Aber ich würde es mögen, so etwas zu tun:

if(find_string($uploaded_file, $forbidden)) { 
    echo('found a forbidden string in your file'); 
    $new_filename = $filename.'.lookinto'; 
} 

Ich hoffe, zu verstehen, was ich meine, und kann mir helfen?

HINWEIS: Die hochgeladenen Dateien enthielten offensichtlich nicht nur genau einen der Strings in einer Zeile. Sie können so aussehen: <p>thisisnotallowed</p> oder so.

+0

Das klingt wie ein XY-Problem zu suchen. Ihre Prämisse kann fehlerhaft sein: Dies ist keine sichere Möglichkeit, den Inhalt einer vom Benutzer hochgeladenen HTML-Datei zu filtern. –

+0

@John V. Kennst du einen sichereren Weg? – Twisterado

+0

Das hängt davon ab, was Sie mit dem HTML machen wollen? –

Antwort

0

Verwenden file_get_content() eine Datei in einen String

$uploaded_file = file_get_content($_FILES['fileupload']['name']); 

Verwenden strpos() lesen eine Zeichenfolge für eine andere Zeichenfolge

foreach($forbidden as $one) { 
    $pos = strpos($uploaded_file, $one); 
    if ($pos !== false) { 
     echo('found a forbidden string in your file'); 
     $new_filename = $filename.'.lookinto'; 
    } 
} 
Verwandte Themen