Ich sehe da nix mit Monats-kästchen o.ä.
Beiträge von cottton
-
-
Verstehe ich nicht.
Hast Du nen Screenshot o.ä.? -
Du brauchst ja kein extra array.
Du kannst ja neue Seiten in dem $pages array anlegen.
Allerdings sind das alles .html Dateien. Heißt: es wird kein PHP ausgeführt, wenn es auf dem Server nicht anderes eingerichtet ist.Ich weiß ja nicht was oder wie Du suchen möchtest. aber sobald Du PHP nutzen möchtest, sollte die einzubindende Datei eine .php Datei sein und mit include oder require eingebunden werden.
Ich guck mir das morgen nochmal an. -
Alles klar.
also hast Du da drin - also zB in der kontakt.html - mehrere Templates in einem,
aber das eigtl Template - das grundgerüst - liegt in './pages/template.html' (?)Ist denn zw <!-- MAINaf --> und <!-- MAINe --> immer der Seiteninhalt?
Ich glaube, was ich Dir heschrieben hab ist zu "umständlich". Wenn ichs richtig verstanden hab, dann geht es auch einfacher.
Wenn Du willst schreib ichs mal um =) -
"Tutorial" ist hier falsch gewählt.
Du hast ja eine Frage, und schreibst keine anleitung, wie es gemacht wird =) -
So wie ich das sehe:
gibt es in der url (also in $_GET) eien Schlüssel "p" und existiert der Schlüssel im array $pages,
dann wird der Wert - die Datei - eingebunden.PHP$pages = array( 'kontakt' => 'kontakt.html', // ... usw usw // neue seite dazu: 'neue_seite' => 'datei_zu_neuer_seite.html' );
Die Datei dürfte dann wohl als Template genutzt werden.Das Problem: es werden nur .html genutzt.
Selbst Wenn Du eine .php Datei nutzen würdest - PHP würde nicht ausgeführt werden.
Das System lädt die Dateien (Seiten) "als Text", und nicht als ausführbaren code.Man könnte jetzt:
array erweitern (nur dort, wo auch eine .php gebraucht wird)PHP$pages = array( 'kontakt' => 'kontakt.html', // ... usw usw // neue seite "suche" dazu: 'neue_seite' => array( 'require' => 'suche.php', 'template' => 'suche.html', ) );
und weiter unten:PHP
Alles anzeigen// Bei jeder Anfrage wir die if-Schleife überprüft. if (array_key_exists("p", $_GET) // Gibt es in der Superglobalen Variable $_GET einen Schlüssel p ? && array_key_exists($_GET["p"], $pages) // Und gibt es in dem Schlüssel eine Seite aus dem Array $pages ? ) { if( is_array($pages[$_GET["p"]]) // $pages[$_GET["p"]] ist ein array, and isset($pages[$_GET["p"]]['require']) // ebene 'require' ist gesetzt and file_exists($pages[$_GET["p"]]['require']) // und das dort eigetragene .php file existiert ){ $contents = require_once $pages[$_GET["p"]]['require']; $nav = file_get_contents('./pages/'.$pages[$_GET["p"]]['template']); $head = file_get_contents('./pages/'.$pages[$_GET["p"]]['template']); }else{ // sonst weiter wie bisher: $contents = file_get_contents('./pages/'.$pages[$_GET["p"]]); $nav = file_get_contents('./pages/'.$pages[$_GET["p"]]); $head = file_get_contents('./pages/'.$pages[$_GET["p"]]); } } // Wenn beides "True", lade die gewünschte Seite in die Variable $contents etc. else { $_GET = array("p" => "home"); }Natülich ungetestet, da ich nicht weißm wieso hier mehrmals die gleichen .html Dateien gelesen werden und ich auch nicht weiß was da drin steht.
BTW:
Zitat// Bei jeder Anfrage wir die if-Schleife überprüft.
If ist keine Schleife =) -
Nun weiß ich nicht, wie ich diese Suche gestalten soll, da ich überall lese, dass man die Daten die vom Formular aus mit $_GET gesendet werden an eine weiter PHP senden muss, z.B. suche.php. Somit verlasse ich aber mein Template-System, oder? Irgendwie fehlt es mir in dieser Hinsicht an dem Verständnis wie hier gearbeitet werden sollte.
Du kannst eine andere PHP-Datei ansprechen, musst es aber nicht.Du nutzt ja (logisch) ein Formular (<form>).
Und bei diesem Element gibtst Du ein attribute "action" an.
Hier ist action leer. Also würde das Formular sich selbst aufrufen.Angenommen die Anfrage kommt über die index.php,
dann:HTML<forum name="" action="" > <!-- ruft beim absenden auf sich selbst auf (also index.php) --> </form> <forum name="" action="auswertung.php" > <!-- ruft beim absenden auf auswertung.php --> </form>Wenn Du nun alles über die index.php laufen lassen möchtest, dann nutzt Du einfach diese.
Bei Dir wird wohl das Routing über ?p= erledigt.
Wenn Du also eine Suche auswerten möchtest, könnte der Link zur Auswertung in etwa so aussehen: http://simon-no-japan.de/?p=suche -
Also ich finde es sinnvoller einzellne Dateien anzulegen.
Bei der Ausgabe (in devmode wie live) wird das "verbessern" einem tool/plugin/ect überlassen.Ich fand mod pagespeed eigl sehr einfach.
Da gits (wenn nicht inzw geändert) ein config file, bei dem man alles einzelln de-/aktivieren kann - wie man es eben braucht.
Das ging von lazyload bis hin eben zu js/css file-handling/cache/... -
Ich denke ohne cors wird nix akzeptiert (also eigtl logisch).
Daher kommst Du "nicht rein".Via PHP (wenn ich jetzt nix ganz falsch denke) müsste es funktionieren.
Entweder per file_get_contents (http://php.net/manual/de/function.file-get-contents.php)
oder per curl (http://de1.php.net/manual/de/book.curl.php)
wobei du bei curl sehr viel Möglichkeiten hast. Manche sagen, man könnte "alles" mit curl machen =) -
Eine Vorschau musst Du Dir "selbst basteln".
Dürfte aber nicht so schwer sein.Du baust 2 Buttons ein: Absenden | Vorschau
Bei Absenden - klar - verarbeitest Du in Deinem Script die Eingaben und handelst wie bisher.
Bei Vorschau ist der einzige Unterschied, dass Du nicht handelst und das Formular noch einmal mit den eingegebenen Benutzerdaten anzeigst.Das Prinzip könnte das so aussehen:
PHP
Alles anzeigen<?php // kontroll-vars: $erster_aufruf = false; $vorschau = false; $fehlervorhanden = false; // feld-values vordefinieren: $titel = ''; $feld1 = ''; $feld2 = ''; if(!$_POST){ // $_POST ist leer - das formular wurde zum erstenmal auf dieser seite aufgerufen $erster_aufruf = true; } elseif(isset($_POST['absenden'])) { // nutzer möchte das formular absenden // hier dann handeln ... // zB fehlerprüfung: if(/*deine checks*/0){ $fehlervorhanden = true; }else{ // keine fehler: also daten verarbeiten } } elseif(isset($_POST['vorschau'])) { // nutzer möchte das formular in der vorschau sehen $vorschau = true; if(isset($_POST['titel'])){ $titel = $_POST['titel']; } if(isset($_POST['feld1'])){ $feld1 = $_POST['feld1']; } if(isset($_POST['feld2'])){ $feld2 = $_POST['feld2']; } } // vorschau anzeigen wenn benutzer "vorschau" gewählt hat: if($vorschau) { ?> <h2>Vorschau:</h2> <div><b>titel:</b> <?php echo htmlspecialchars($titel)?></div> <div><b>feld1:</b> <?php echo htmlspecialchars($feld1)?></div> <div><b>feld2:</b> <?php echo htmlspecialchars($feld2)?></div> <?php } // END if($vorschau){ // formular nur anzeigen, wenn: // vorschau gewählt wurde, das formular zum ersten mal aufgerufen wurde, oder fehler vorkamen if($vorschau or $erster_aufruf or $fehlervorhanden) { ?> <h2>Formular:</h2> <form name="" method="post"> <input type="text" name="titel" value="<?php echo htmlspecialchars($titel)?>"> <input type="text" name="feld1" value="<?php echo htmlspecialchars($feld1)?>"> <input type="text" name="feld2" value="<?php echo htmlspecialchars($feld2)?>"> <!-- ... --> <input type="submit" name="absenden" value="Absenden"> <input type="submit" name="vorschau" value="Vorschau"> </form> <?php } // END if($vorschau or $erster_aufruf or $fehlervorhanden){ elseif(!$vorschau and !$erster_aufruf and !$fehlervorhanden) { // keine vorschau, nicht der erste aufruf und keine fehler vorhanden. // hier könnte jetzt eine erfolgsmeldung ausgegeben werden ?> <b>formular abschickt ... danke usw ...</b> <?php } -
Das Problem liegt hier wohl bei dem " (Anführungszeichen).
original:HTML<nav><li><a href="anlagen_details.php?navi=2&ida="<?php echo $_GET['ida'];?> title"normal Darstellung">Allgemein</a></li>
so sollte es funtionieren:HTML<nav> <li> <a href="anlagen_details.php?navi=2&ida=<?php echo $_GET['ida'];?>" title"normal Darstellung">Allgemein</a> </li>
Zusätzlich aber bitte noch die von aussen kommenden Daten prüfen und maskieren: -
http://stackoverflow.com/questions/4530…t-in-javascript
ZitatThere is a way, although more expensive: throw an exception, catch it immediately, and dig out the first entry from its stack trace.
Klingt danach. -
Hab zwar auch noch nicht gewusst, dass PHP mit FILTER_VALIDATE_EMAIL nicht die "perfekte" Lösung darstellt,
aber was spricht dagegen?
Wenn Du clientseitig (JS) prüfen willst, musst Du wohl selbst was "basteln".
Per PHP aber sollte FILTER_VALIDATE_EMAIL doch reichen.Wenn man es aufs Böseste genau machen will, dann wird man ja verrückt.
Da gehts schon bei der Gesamtlänge der Emailaddresse los. Laut Wiki 254 OktettenZitat
(ein Oktett ist auf den meisten Computern identisch mit einem Byte)
...
Eine längere Adresse kann über RFC-konforme SMTP-Server weder E-Mails versenden noch empfangen
Bis hin zu Groß-/Kleinschreibung:Zitat
Da jedoch die daraus entstehende Verwirrung und die Probleme zu groß sind, gibt es kaum einen Provider, der tatsächlich zwischen hans@example.com und Hans@example.com unterscheidet.
http://de.wikipedia.org/wiki/E-Mail-AdressePHPs FILTER_VALIDATE_EMAIL:
Codevalid Max."Musterjunge".Mustermann@example.com invalid "Max Mustermann"@example.com invalid MaxMuster(Kommentar)@example.com invalid (Kommentar)MaxMuster@example.com valid hans@example.com valid hans@example.eu valid hans@example.e valid hans@example.longlonglong valid h@e.d
(so prüft) php-5.5.15:Code
Alles anzeigenvoid php_filter_validate_email(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ { /* * The regex below is based on a regex by Michael Rushton. * However, it is not identical. I changed it to only consider routeable * addresses as valid. Michael's regex considers a@b a valid address * which conflicts with section 2.3.5 of RFC 5321 which states that: * * Only resolvable, fully-qualified domain names (FQDNs) are permitted * when domain names are used in SMTP. In other words, names that can * be resolved to MX RRs or address (i.e., A or AAAA) RRs (as discussed * in Section 5) are permitted, as are CNAME RRs whose targets can be * resolved, in turn, to MX or address RRs. Local nicknames or * unqualified names MUST NOT be used. * * This regex does not handle comments and folding whitespace. While * this is technically valid in an email address, these parts aren't * actually part of the address itself. * * Michael's regex carries this copyright: * * Copyright © Michael Rushton 2009-10 * http://squiloople.com/ * Feel free to use and redistribute this code. But please keep this copyright notice. * */ const char regexp[] = "/^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/iD"; ...
mehr: http://squiloople.com/2009/12/20/ema…idation/#more-1Via JS könnte man auch per Ajax ein PHP-Script auf dem Server aufrufen, das dann das Ergebnis von FILTER_VALIDATE_EMAIL returnt.
Zu 2.:
mail() reicht, solange man nichts komisches vorhat.
Aber es gibt Probleme (unabhängig von mail()), wenn Du von per PHP-Script eMails von Dyn-IPs versendest. Die eMails werden dann von Providern oft direkt in die Tonne getreten (weil als Spam angesehen). -
Stimmt - Betreiber fragen gehört sich so. (btw: Stichwort "Content stealing")
Falls dort niemand eine API schreiben will/zur Verfügung stellen will, kannst Du ja immer noch (wenn Einverständnis) die Daten über nen Umweg holen.
Wobei ich allerdings die Ajax-variante nicht verstehe. Ich meine warum Ajax?
Wenn Du die Daten (egal ob API oder nicht) in Deine DB schicken willst, dann ist es doch einfacher in bestimmten Abständen einen Cronjob (zB PHP) laufen zu lassen.Hab mir das mal angesehen.
Etwas ähnliches hab ich schon gemacht. Das ist allerdings kein einfaches "Spiel".
Brauchst Du dort nur die Grunddaten, oder auch die Daten unter "Details anzeigen" ? -
Hammer! Gleich ab in die Lesezeichen =)
tnx! -
Deine js Lösung scheint mir sinnvoller =)
Und via css only wird das wohl nicht funzen. -
nice.
hab in der zwZeit hier ne css Lösung gefunden:
http://stackoverflow.com/questions/1527…ing-a-169-ratio
deren jsfiddle: http://jsfiddle.net/5CMYw/3/keine ahnung wie - aber scheint zu funktionieren.
-
Mach mal n jsfiddle bidde

edit: btw:
ZitatFormat 16:9 (= 1,78:1)
also breite/1.78 ? -
Naja, Du willst doch die width auf x setzen.
Und die height soll ja sich ja nun zu width x im Verhältnis y verhalten.CSS
Alles anzeigendiv{ background:red; position:absolute; width:calc(100%/2); /*vorgabe*/ height:calc( ( (100%/2) /*vorgabe*/ /16 /*teile*/ ) *9 /*teile*/ ); }
Aber - ich hab da nen Denkfehler glaub ich.
aber so in der Richtung muss es möglich sein. Musst nur rausfinden, wie Du das Format (die Anteile) verteilst.
Siehe: http://de.wikipedia.org/wiki/Seitenverh%C3%A4ltnis
=)EDIT: hate nen grundlegenden Denkfehler: % (was immer da raus kommt) sind ja die Anteile des Benutzerbildschirms. Also so nicht zu verwenden.
Man müsste erstmal herausfinden:
- ist momentaner screen Hochformat, oder Querformat?
- erstelle Quadrat mit max möglicher Größe
- näder nun dieses max mögliche Quadrat in format (zB) 16:9 um -
Geht da nicht was mit calc?
Habs nie angewandt, aber wenn Du die wifth berechnen lässt, dann kannst Du ja sicherlich auch das Verhältnis für die height aus-calc-en lassen.
edit: also alles in % dann, natürlich.