kostenloser Webspace werbefrei: lima-city


Hilfe gesucht.

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    blogvvard

    blogvvard hat kostenlosen Webspace.

    Hallo erstmal.

    Ich habe NULL Ahnung von PHP, Hinweise wie "ist doch ganz einfach" und "mach das mal so" sind also nicht wirklich zielführend. Dafür kann ich copy&paste, wenns sein muss ;-}

    Ich habe ein extrem kompaktes Blog Script gefunden, würde meinen minimalistischen Ansprüchen genügen, wenn es die Einträge nach irgendeiner Logik anzeigen würde. Der Code ist nicht wirklich lang.
    Auf 3 Verschiedenen Servern, 3 unterschiedliche Reihenfolgen, auch unabhängig davon in welcher Reihenfolge ich Texte hochlade. Rein von der Struktur her kann ich auch nix im sourcecode erkennen, was irgendwas sortieren täte

    <?php
    include('Parsedown.php');
    
    $base_url = '/'; // URL of the homepage. Can be absolute or relative.
    $blog_title = 'wtf.who.cares';
    $contact_email = 'wdscharff@wdscharff.de';
    
    if ( !empty($_GET['post']) ) {
    	// Single post page
    	$post_name = filter_var($_GET['post'], FILTER_SANITIZE_NUMBER_INT);
    	$file_path = __DIR__.'/content/'.$post_name.'.txt';
    	if ( file_exists($file_path) ) {
    		$file = fopen($file_path, 'r');
    		$post_title = trim(fgets($file),'#');
    		fclose($file);
    		// Process the Markdown
    		$parsedown = new Parsedown();
    		$content = $parsedown->text(file_get_contents($file_path));
    	} else {
    		$content = '
    			<h2>Not Found</h2>
    			<p>Sorry, couldn\'t find a post with that name. Please try again, or go to the 
    			<a href="<?php echo $base_url; ?>">home page</a> to select a different post.</p>';
    	}
    } else {
    	// Blog main page - list all posts
    	foreach (new DirectoryIterator(__DIR__.'/content/') as $file) {
    		if ( $file->getType() == 'file' && strpos($file->getFilename(),'.txt') ) {
    			$filename_no_ext = $file->getBasename('.txt');
    			$file_path = __DIR__.'/content/'.$file->getFilename();
    			$file = fopen($file_path, 'r');
    			$post_title = trim(fgets($file),'#');
    			fclose($file);
    			$content .= '<h2 class="list-title"><a href="'.$base_url.'?post='.$filename_no_ext.'">'.$filename_no_ext.' - '.$post_title.'</a></h2>';
    		}
    	}
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8" />
    	<title><?php if ( !empty($_GET['post']) ) { echo $post_title.' - '; } ?><?php echo $blog_title; ?></title>
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<link rel="stylesheet" href="style.css" />
    </head>
    <body>
    	<header>
    		<h1 class="blog-title"><a href="<?php echo $base_url; ?>"><?php echo $blog_title; ?></a></h1>
    		<hr />
    	</header>
    	<article>
    		<?php echo $content; ?>
    	</article>
    	<footer>
    		Diese Website benutzt Cookies. Wenn du die Website weiter nutzt, gehen wir von deinem Einverständnis aus.&nbsp;&nbsp;&nbsp;
    		you can <a href="mailto:<?php echo $contact_email; ?>">send an email</a>.
    	</footer>
    </body>
    </html>

    Sieht dann in der Realität so aus, Testinstallation: https://blogvvard.4lima.de/

    Hier liegt das komplette Paket https://github.com/paintedsky/dead-simple-blog

    Meine Frage und Bitte, kann das jemand so umprogrammieren, das die Anzeige nach Datum korrekt sortiert wird?
    Also neustes zuerst.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. blogvvard schrieb:
    Hallo erstmal.

    Ich habe NULL Ahnung von PHP, Hinweise wie "ist doch ganz einfach" und "mach das mal so" sind also nicht wirklich zielführend. Dafür kann ich copy&paste, wenns sein muss ;-}
    Ist doch ganz einfach! Mach das mal so!

    blogvvard schrieb:
    Ich habe ein extrem kompaktes Blog Script gefunden, würde meinen minimalistischen Ansprüchen genügen, wenn es die Einträge nach irgendeiner Logik anzeigen würde. Der Code ist nicht wirklich lang.
    Auf 3 Verschiedenen Servern, 3 unterschiedliche Reihenfolgen, auch unabhängig davon in welcher Reihenfolge ich Texte hochlade. Rein von der Struktur her kann ich auch nix im sourcecode erkennen, was irgendwas sortieren täte
    Okay, wenn du PHP nicht kannst, wäre der erste Schritt: Lerne PHP. Du kannst einfach nicht einen X-Beliebigen Snippet aus dem Netz nehmen und erwarten, dass dies läuft.

    Einen Blog zu schreiben ist ein Nicht-Trivialer Vorgang, weshalb es Lösungen wie Wordpress gibt. Ich bin auch kein Fan davon, aber wenn man wirklich keine Ahnung hat und keine Ambitionen sich näher mit dem Thema zu beschäftigen, ist dies das Mittel der Wahl.

    Zu deinem Problem: Da du keine Ahnung von PHP hast, wirst du die Lösung vermutlich nicht verstehen. Blog-Einträge sind in der Regel in Datenbanken organisiert, in der Regel in SQL-Datenbanken. Die Ausgabe wird also anhand vom Datum organisiert, dessen rückgabe dann beispielsweise durch
    ORDER BY `date`
    manipuliert werden kann. Da in diesem Snippet aber - bis auf die Darstellung - wenig Information darüber vorliegt, wie diese Daten "erschaffen" werden, kann man dazu wenig sagen.

    Meine Empfehlung:
    - Beschäftige dich damit, wie man in PHP Dinge darstellt.
    - Beschäftige dich mit der Übertragung von Daten
    - Beschäftige dich mit der Speicherung und Abfrage von Daten.

    Wenn du dies alles nicht verstehen willst: Benutze einfach Lösungen wie beispielsweise Wordpress, anstelle von irgendwelchen dubiosen Skripts aus dem Netz.
  4. Autor dieses Themas

    blogvvard

    blogvvard hat kostenlosen Webspace.

    A. Das ist kein Snippet, das ist das ganze Programm. Okay, ohne den includierten Markdowninterpreter wäre es sinnlos, der ist aber nicht Teil des Problemes.

    B. Es werden schlicht Dateien mit der Endung .TXT eingelesen und wie der angezeigte (Zahlen) Dateiname in Verbindung mit der Kopfzeile (in Markdown Syntax) in der Datei generiert wird, versteh sogar ich von der Logik des Textes her. Um das zu erkennen, muß man nicht mal PHP können.

    C. Wordpress, dass ich außerdem seit 2004/5 benutze, ist mir für meine persönlichen Belange inzwischen zu schwer. Ich brauch keinen Sattelzug, wenn mir ein Bobbycar ausreicht.

    D. Es gibt inzwischen (wieder) genug CMS, Blogs, Wikis, die bewusst auf Datenbanken verzichten und entweder Flatfile Systeme sind, oder gleich auf Generatoren für statische Seiten zurückgreifen. Datenbanken sind nicht die Lösung für alles. Wenn ich so was wollte, würde ich z.B Bludit nehmen.

    E. Ich muss die Lösung auch gar nicht verstehen, es reicht wenn sie funktioniert. Eine Sortierroutine die die Ausgabe in einer Schleife nach irgendwelchen Parametern sortiert, sollte eigentlich kein Hexenwerk sein, für jemanden, der PHP kann.
    Nebenbei erwähnt, ich habe mit Dbase und Clipper Datenbanken für gewerbliche Kunden erstellt, ja, ist schon arg lange her. Ich schließe jetzt also nicht aus, das sich mir der Sinn einer Lösung von der Struktur her sogar erschließen könnte.

    F. Das Alphabet wird mir für meine Antworten reichen, versprochen,

    G. Ich habe um Aktive Hilfe gefragt, nicht um den gut gemeinten Rat mir PHP beizubringen. Wollte ich das, hätte ich hier nämlich nicht nach Hilfe gefragt, sondern wäre schon längst dabei.
    Ich habe aber nicht die Zeit und auch nicht die Lust für ein einmaliges, kleines (für jemanden der es kann) Problem mich in eine neue Programmiersprache einzuarbeiten.
    War eigentlich auch den ersten Zeilen meines Postings ("zielführend") zu entnehmen.

    H. Vielleicht finde ich hier doch noch jemanden, der das Script dementsprechend erweitern kann. Wenn nicht, frage ich halt anderswo

    I. ich sagte doch, das Alphabet reicht mir locker aus ;-}

    Beitrag zuletzt geändert: 31.5.2020 16:41:09 von blogvvard
  5. Hi,

    also das ist ein wirklich wirklich simples Script und da da jegliche Logik drin fehlt, generiert er dir die Unordnung!
    Ich würde dir empfehlen, ein simples Blogscript basierend auf ner Datenbank zu installieren, dann hast du solche Probleme nicht!
    Das script liest iterativ aus dem Verzeichnis. Die Art und Weise der Sortierung begreift das Script jedoch nicht und nutzt die Serverseitige Sortierung, wenn Daten gleich gestellt sind aufgrund der Sortierung, dann wird willkürlich eine Datei gezogen.
    Um diese Willkür abzuschaffen, müsstest du dem Script beibringen einen Sortieralgorithmus zu nutzen. Wenn man kein PHP kann, sollte man dies entweder lernen oder sein lassen und ein DB Script nutzen.
  6. blogvvard schrieb:
    G. Ich habe um Aktive Hilfe gefragt, nicht um den gut gemeinten Rat mir PHP beizubringen. Wollte ich das, hätte ich hier nämlich nicht nach Hilfe gefragt, sondern wäre schon längst dabei.
    Ich habe aber nicht die Zeit und auch nicht die Lust für ein einmaliges, kleines (für jemanden der es kann) Problem mich in eine neue Programmiersprache einzuarbeiten.
    War eigentlich auch den ersten Zeilen meines Postings ("zielführend") zu entnehmen.}
    Echt jetzt? Das was ich dir schickte war die höflichste Form dir zu sagen, dass das Script technisch, philosophisch und in Sachen Sicherheit Schrott war. Wer sowas online stellt gehört ins Gefängnis, nicht auf ein Podest.

    Du willst ne simple Antwort? Lösch den Scheiß, den du da hast und installiere Wordpress. Ganz einfach und eine minimale Manipulation deines Codes
  7. Autor dieses Themas

    blogvvard

    blogvvard hat kostenlosen Webspace.

    noxiousEcht jetzt? Das was ich dir schickte war die höflichste Form dir zu sagen, dass das Script technisch, philosophisch und in Sachen Sicherheit Schrott war. Wer sowas online stellt gehört ins Gefängnis, nicht auf ein Podest.

    Du willst ne simple Antwort? Lösch den Scheiß, den du da hast und installiere Wordpress. Ganz einfach und eine minimale Manipulation deines Codes


    Echt jetzt. Du willst mir also wirklich erzählen das ein primitiver Datei Lister ohne weitere Einflussnahme auf den Server, ohne Interaktion mit einer Datenbank, unsicherer ist als WP?
    Dann zeig mir doch mal das Sicherheitsleck, für den der Programmierer ins Gefängniss gehört.
    Hinsichtlich Technik: solange etwas funktioniert ist es kein Schrott, das Teil macht genau das was es soll, das ist nur leider nicht alles, was man gerne hätte.
    Hinsichtlich Philosophie, es geht vielleicht eleganter, aber wahrscheinlich nicht kompakter.

    Mir nach meiner beiläufigen Erwähnung, daß ich KEIN Wordpress mehr benutzen will, mir weiterhin Wordpress als DIE Lösung zu offerieren ist, ich sage mal "ungeschickt". Sowohl technisch, als auch philosophisch.
    Und ebenfalls rein philosophisch betrachtet, ich habe vor 30 Jahren aufgehört zu programmieren -das ist wie eine Sprache können, nach 20 Jahren verstehst du vielleicht noch viel, von dem was dir gesagt wird, dir selbst fallen aber nicht mehr die Vokabeln und korrekt Syntax ein (wobei ich mir jetzt nicht sicher bin, ob du diese Analogie verstehst) - und du darfst mir meinetwegen dann Bequemlichkeit vorwerfen, dass ich wegen einem kleinen Problems nicht wieder damit Anfange, aber auch das wäre nicht die korrekte Antwort auf mein *Hilfe Ersuch* gewesen.

    Beenden wir diese Diskussion, sie bringt mich nicht weiter, sie kostet mich Zeit die ich sinnvoller verwenden kann, sie ist für mich nicht zielführend.
  8. Da der Code auf Github liegt, kannst du natürlich auch einfach ein Issue erstellen. Das hätte dann den Vorteil, dass alle Nutzer dieser Software von der Änderung profitieren.
  9. Autor dieses Themas

    blogvvard

    blogvvard hat kostenlosen Webspace.

    Danke für den Hinweis! Werde ich dann mal versuchen.
  10. Hallo blogvvard,

    nach langem Zögern und mit einigen Bauchschmerzen habe ich für dich einen Lösungsweg erstellt.

    https://timebandit.lima-city.de/blogvvard/

    lg
    timebandit
  11. Autor dieses Themas

    blogvvard

    blogvvard hat kostenlosen Webspace.

    Du bist mein Held! (das muss sein),
    Danke, auch wenn mir das mit deinen Bauchschmerzen leid tut.

    Kannst du mir den Sourcecode irgendwie zukommen lassen?

    Bzw, deiner Bauchschmerzen, siehst du ein reales Sicherheitsrisiko in dem Code oder liegt es eher darin begründet, daß der Code unelegant, primitiv, oder was auch immer ist.

  12. Hallo blogvvard,

    der gewünschte Code:
    $currDir=__DIR__.'/content/';
    foreach (scandir($currDir) as $key => $value){
    	if (!in_array($value,array(".","..")) && !is_dir($dir . DIRECTORY_SEPARATOR . $value)) //Ausschluss der Unterverzeichnisse
          {
             if (is_file($currDir."/".$value) && strpos($value,'.txt')!==false)  //Wenn der &&-Operator weggelassen wird werden alle Dateien erfasst 
             {$file=$currDir."/".$value;
    /***************************************************************************************************/         
    			$opfile = fopen($file, 'r'); // der teil ist unverändert macht kopfschmerz bei 
    			$post_title = trim(fgets($opfile),'#');//einer hohen dateizahl
    			fclose($opfile);//nicht gerade performant
    /***************************************************************************************************/ 
    			$post_title=ucfirst(trim($post_title));//alle dateinamen erhalten Großbuchstaben wg sortierbarkeit
    			$basename=basename($value,".txt");
    			$basenarr[$basename]=$post_title;//Dateinamen als Schlüssel;Blogtitel als Werte
    			
             }
          }
    }
    if(isset($basenarr)){
    	krsort($basenarr); //aufsteigend die Keys sortieren -->ksort ist das Gegenstück	
         foreach($basenarr as $key => $v){$content .= '<h2 class="list-title"><a href="'.$base_url.'?post='.$key.'">'.$key.' - '.$v.'</a></h2>';}
         echo "$content";}
    	 else {echo "keine Dateien gefunden";}

    Einzufügen in der letzten else-Anweisung. Achte auf die geschweiften Klammern PHP verzeiht da keinen Fehler und antwortet sonst mit einem 503 Status-Code (Internal Server Error). Am besten du löscht den Inhalt zwischen den geschweiften Klammern, sodass nur noch else{// Blog main page - list all posts } übrig ist.

    Nachtrag: Ich habe dir zwar bei einem konkreten Problem geholfen, aber ohne die Überzeugung Gutes getan zu haben. 8 Blogeinträge sind nicht viel, wie sieht es bei 100 und mehr aus? Der User wird schon an einem Desktop das Scrollen verfluchen mit einen Smartphone wischt er sich die Finger wund.
    Du wirst in deinen Blogs ohne Bilder auskommen müssen...etc.

    lg
    timebandit

    Beitrag zuletzt geändert: 2.6.2020 13:53:28 von timebandit
  13. Autor dieses Themas

    blogvvard

    blogvvard hat kostenlosen Webspace.

    Danke!
    Wenn ich wieder daheim bin, wird das das erste sein was ich ausprobiere,

    Was die Performance betrifft, mehr als 20-30 Beiträge/Jahr werde ich eh nie schreiben und das lässt sich problemlos über unterschiedliche Verzeichnisse für Jahre und/oder Themen regeln. Die haben dann eben jeweils ihre eigene index..php.

    Wobei mehrere Abfragen über tools.pingdom.com / pagespeed.de und einigen anderen bei einem Index von 50 Dateien zwischen 0,3 bis 0,5sek lagen. Nur sehen 50 unsortierte Dateien obersche**se aus ;-}
    Das ist signifikant schneller als Wordpress mit Cache Plugin oder Wordpress über statischen Seiten und 6 Artikeln auf der startpage. (0,8-1,1 sek). Und ohne Caching bekam ich WP nie unter 1.5sek, und das bei sparsamsten Einsatz von Plugins.
    0,25-0,3 Sekunden ist auch der Wert, den ich bei *einer*statischen HTML Seite mit einer CSS Datei bekomme, 80% der Zeit sind da dem generellen Verbindungsaufbau vorher geschuldet.

    Was Bilder betrifft, das mag für mich Tipperei sein (wobei ich aber snippets dafür habe, wo ich nur den Pfad eingeben muß), Markdown ist da nicht ganz so ergiebig/komfortabel, man muß html Anweisungen drunter mischen, aber in dem Eintrag "Bilder und Videos einbinden" habe ich das mal durch exerziert.
    Ok, auf den Index Seiten sind halt keine Bilder, werde ich mit leben können :)

    Danke nochmal!

    ps: nachdem ich in der vorletzten Zeile noch das echo "$content" rausgeschmissen habe, er hat mir den Index nämlich 2 mal angezeigt, läuft es jetzt so, wie ich es mir vorgestellt habe :-)

    Beitrag zuletzt geändert: 2.6.2020 15:16:45 von blogvvard
  14. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!