• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Formular um link in .txt einzufügen

eli93

Neues Mitglied
hi, ich habe eine Liste mit links in einer .txt. Kann ich es irgendwie machen, dass es eine Art Formular gibt in das man etwas einfügen kann und dann wird es Automatisch als neue Zeile in das .txt geschrieben?

Bsp.

List:

xxxxx
yyyyy
zzzzz

jetzt kommt jemand benutzt das Formular und gibt z.B. "aaaaaa" ein danach sollte die liste so aussehen:

xxxxx
yyyyy
zzzzz
aaaaa

Ich hoffe man kann verstehen wie ich das meine
 
Werbung:
Hey,
hab vor Urzeiten mal einen TextdateiCounter in PHP gebastelt. Der tut im Endeffekt das selbe. Er schreibt nur Zahlen in eine Textdatei:

PHP:
<?php
if(!file_exists("count.txt")){//Wenn die Datei noch nicht existiert
	$counter=fopen("count.txt", "a"); //wird sie angelegt und "geöffnet"
}
else {//Wenn sie existiert
	$counter=fopen("count.txt", "r+"); //wird sie "geöffnet"
}
$aufruf="DiesisteineZeichenkette";
fputs($counter,$aufruf); //Wert von $aufruf in der Datei speichern
fclose($counter); //Datei schließen
?>
Damit kannst du schoneinmal das reinschreiben üben ;)

Wenn du nun etwas an das Ende hinzufügen möchtest, dann musst du vorher den gesamten Inhalt der Datei zwischenspeichern, an diesen String den neuen Link "ranhängen" und dann alles wie oben wieder reinschreiben.

Alles dazu gibts auch ausführlich mit vielen Beispielen dort: --> PHP / Mit PHP schreiben und lesen - Homepage-Total.de
 
Werbung:
Mir ging es weniger um den Schreibmodus als um die Tatsache dasses keine Funktion gibt, die automatisch an das Ende der Datei schreibt oder?

Obwohl man wennich das jetzt mal so des nachts betrachte doch einfach ohne rewind() ein anknüpfen an den Inhalt hat oder? ...
 
Ja, Modus 'a', siehe auch die verlinkte Seite. Die Bedingung mit file_exists ist in dem Modus auch unnötig. Sie würde automatisch angelegt.
 
Werbung:
Man lernt halt nie aus :)
Und man sollte nicht allen Internetseiten unbegrenztes Vertrauen schenken ...

Mein obiger Link (seit gestern stillgelegt :shock:) hatte es mit meiner oben beschriebenen Variante "gelöst" und den Inhalt per file_get_contents zwischengespeichert und daran den zuzufügenden Teil rangehängt und wieder in die Datei geschrieben mit rewind();

Falsch gelernt:roll:
 
eigentlich ist das in wenigen kurzen zeilen lösbar, um das hier zu nem abschluss zu bringen.
der TS scheint sich eh nicht mehr dafür zu interessieren.

Angenommen der neue Link wird als $_POST['neu'] übergeben:
PHP:
$linkliste = fopen("linkliste.txt", "a");
$neu = $_POST['neu']."\n";
fwrite($linkliste, $neu);
Schreibrechte für linkliste.txt müssen natürlich gegeben sein!

Die Ausgabe kann dann so aussehen:
PHP:
$liste = file("linkliste.txt");
foreach($liste as $zeile){
   echo '<a href="'.$zeile.'">'.$zeile.'</a>';
}

Ich würde allerdings beim Eintragen noch sicherstellen, dass der Präfix mit angegeben wurde.
Möglicherweise gibt es da eine elegantere Lösung, als die, die ich im folgenden vorschlage.
Falls ja, kenne ich sie aber nicht.
Ich würde das auf die Schnelle so sicherstellen (anhand meines obigen Codebeispieles):
PHP:
$linkliste = fopen("linkliste.txt", "a");
$neu = "http://".$_POST['neu']."\n"; // pauschal einen Präfix vorsetzen
$neu = str_replace("http://http://", "http://", $neu); // korrigiert doppelten Präfix, falls in der zeile zuvor entstanden
fwrite($linkliste, $neu);
 
Werbung:
Ich würde allerdings beim Eintragen noch sicherstellen, dass der Präfix mit angegeben wurde.

Du müsstest da noch https:// berücksichtigen, denke ich.

Mit einem regulären Ausdruck ginge das etwa so:

(Matcht, wenn auf den Stringanfang nicht http:// oder https:// folgt.)

PHP:
<pre><?php

$input = array(
        'example.org',
        'http://example.org',
        'https://example.org',
        'HtTpS://example.org'
    );

print_r(preg_replace('#^(?!https?://)#i', 'http://', $input));
 
Wenn man auf Dateiebene im Internet arbeitet, muss man auch aufpassen, dass es keine Race Condition gibt.

Das liesse sich mit PHP: flock - Manual verhindern, wobei flock auch nicht 100%ig ist. Sicherer ist es eine eigene lock Datei zu erzeugen, bei dir aber sichergestellt sein muss, dass sie nach Beenden der Prozedur auch immer 100% gelöscht wird.
 
Zurück
Oben