Beiträge von Sören

    Nach xml-Standard (welcher XHTML zugrunden liegt), müssen alle Attribute (wie "id" und "href") und Tags (body, div, ...) kleingeschrieben werden.
    Ein Browser kann sich an den Standard halten und bei großgeschriebene Attributen wie dein "ID" das komplette Attribut einfach ignorieren, wodurch dann die von CSS angesprochenene id in der HTML-Datei nicht existiert und somit auch nicht gestylt wird, oder dem Browser ist Groß- und Kleinschreibung egal.

    Flow Snow:


    isset() gibt keine Notiz aus, wenn die Variable nicht gesetzt ist, dazu ist die Funktion ja gedacht, daher kann es auch so gemacht werden, wie chris80 es gemacht hat und es auch zu empfehlen ist.


    Es ist außerdem kein guter Stil bei jeder Gelegenheit den @-Operator zu verwenden, um Fehler nicht auszugeben. Was bei preg_match für ein Fehler entstehen kann, kannst du mich aber gerne aufklären


    Und if($var) ist nicht mit if(isset($var)) gleichzusetzen. Bei einer booleschen Variable, die false ist wird z.B. erstere Bedingung false sein, di zweite dagegen true (die Variable ist halt gesetzt).


    Ich hab den Code mal angepasst:

    PHP
    <span class="syntaxhtml"><br />  <article><br />    <h1>Kontaktformular</h1><br /><br /><span class="syntaxdefault"><?php<br /><br /></span><span class="syntaxcomment"># Theoretisch ist es egal wo wir in PHP Dateien etwas definieren<br /># da vor Verarbeitung der Daten sowieso erst alles eingelesen wird.<br /># Semantisch korrekt, und auch übersichtlicher, ist es aber<br /># z.B. Funktionen am Anfang zu definieren, die Ausgabe<br /># von Text erfolgt auch erst später.<br /><br /># Also definieren wir die Funktion:<br /></span><span class="syntaxkeyword">function </span><span class="syntaxdefault">tuersteher</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$zum_testen</span><span class="syntaxkeyword">)<br />{<br />    </span><span class="syntaxcomment"># Um Quellcode und Arbeit zu sparen schreiben wir<br />    # beide "Prüfcodes" in eine if Abfrage<br />    </span><span class="syntaxkeyword">if<br />    (<br />      </span><span class="syntaxcomment"># 1. Prüfcode ACHTUNG, hier schleicht sich eventuell ein Bug ein, daher mit @ kenzeichnen um fehlerausgabe<br />      # zu vereiteln<br />      </span><span class="syntaxkeyword">@</span><span class="syntaxdefault">preg_match</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/(to:|cc:|bcc:|from:|subject:|reply-to:|content-type:|MIME-Version:|multipart/mixed|Content-Transfer-Encoding:)/ims'</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$zum_testen</span><span class="syntaxkeyword">)<br />      OR </span><span class="syntaxcomment"># Alternativ einfach || statt OR<br />      # 2. Prüfcode<br />      </span><span class="syntaxkeyword">@</span><span class="syntaxdefault">preg_match</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/%0A|\\r|%0D|\\n|%00|\\0|%09|\\t|%01|%02|%03|%04|%05|%06|%07|%08|%09|%0B|%0C|%0E|%0F|%10|%11|%12|%13/i'</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$zum_testen</span><span class="syntaxkeyword">)<br />    )<br />    {<br />      </span><span class="syntaxcomment"># Funktionen sollten bitte IMMER etwas zurückgeben<br />      # Gibt eine Funktion z.B. false zurück teilen wir<br />      # mit folgendem Aufbau der Variable $wert die Rückgabe<br />      # der Funktion mit (also false): $wert = meine_funktion();<br /><br />      # In diesem Fall geben wir false zurück falls besagter<br />      # Text gefunden wird, dazu später mehr<br />      </span><span class="syntaxkeyword">return </span><span class="syntaxdefault">false</span><span class="syntaxkeyword">;<br />    }<br /><br />    </span><span class="syntaxcomment"># Übersteht der Text die Prüfung geben wir true zurück<br />    </span><span class="syntaxkeyword">return </span><span class="syntaxdefault">true</span><span class="syntaxkeyword">;<br />}<br /><br /></span><span class="syntaxcomment"># Wir wenden einen kleinen Trick an<br /># um die 3 Variablen zu definieren<br /></span><span class="syntaxdefault">$name </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$email </span><span class="syntaxkeyword">=  </span><span class="syntaxdefault">$inhalt </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">false</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">$name </span><span class="syntaxkeyword">= </span><span class="syntaxstring">''</span><span class="syntaxkeyword">;<br />if (isset(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">])) </span><span class="syntaxdefault">$name </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">];<br /><br /></span><span class="syntaxdefault">$email </span><span class="syntaxkeyword">= </span><span class="syntaxstring">''</span><span class="syntaxkeyword">;<br />if (isset(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'email'</span><span class="syntaxkeyword">])) </span><span class="syntaxdefault">$email </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'email'</span><span class="syntaxkeyword">];<br /><br /></span><span class="syntaxdefault">$inhalt </span><span class="syntaxkeyword">= </span><span class="syntaxstring">''</span><span class="syntaxkeyword">;<br />if (isset(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'inhalt'</span><span class="syntaxkeyword">])) </span><span class="syntaxdefault">$inhalt </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'inhalt'</span><span class="syntaxkeyword">];<br /><br /></span><span class="syntaxcomment"># '!$var' ist das Selbe wie 'false == $var'<br /># nur kürzer und .. meiner Meinung nach cooler ;)<br /># Da wir den 3 Variablen false zugeweisen haben<br /># trifft folgender Vergleich nicht zu falls<br /># in einen der 3 Variablen das false nicht<br /># ersetzt wurde<br /></span><span class="syntaxkeyword">if(!</span><span class="syntaxdefault">$name </span><span class="syntaxkeyword">OR !</span><span class="syntaxdefault">$email </span><span class="syntaxkeyword">OR !</span><span class="syntaxdefault">$inhalt</span><span class="syntaxkeyword">)<br />{<br /><br />  echo </span><span class="syntaxstring">'<br />    <p>Wir w&uuml;rden uns &uuml;ber ein Feedback freuen, was sie gut finden und was eher nicht! <br><br />    Fragen zur Homepage, zur meiner Person werde ich soweit ich kann beantworten. <br>Wir freuen uns schon<br />    auf ihre Nachricht.</p><br />    <form action="'</span><span class="syntaxkeyword">;<br />    </span><span class="syntaxcomment">#  wir sind so schlau und schreiben hier einfach nichts hin,<br />    #  über die Variable $_SERVER['SCRIPT_NAME'] lassen sich unschöne<br />    #  Sachen vom Benutzer einschleusen, wenn nichts in diesem Attribut steht<br />    #  ruft das Script diese Seite erneut auf wenn man das Formular absendet<br />  </span><span class="syntaxkeyword">echo </span><span class="syntaxstring">'<br />      " method="post"><br />      <fieldset>'</span><span class="syntaxkeyword">;<br /><br /> if(isset(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'absenden'</span><span class="syntaxkeyword">]))<br /> {<br />   </span><span class="syntaxcomment"># Hier wollen wir den Benutzer gar nicht weiter drauf<br />   # hinweisen was er vergessen hat, bei 3 Feldern kann man<br />   # nicht viel vergesen ;)<br />   </span><span class="syntaxkeyword">echo </span><span class="syntaxstring">"<p>Bitte f&uuml;llen sie alle Felder vollst&auml;ndig aus.</p>"</span><span class="syntaxkeyword">;<br /> }<br /><br /> echo </span><span class="syntaxstring">'<br />        <p>Vor - Nachname: <br><br />        <input type="text" name="name" size="40" maxlength="50" /></p><br /> '</span><span class="syntaxkeyword">;<br />  </span><span class="syntaxcomment"># Wir sparen uns hier das<br />  # Value Attribut da diese Ausgabe eh nur<br />  # erfolgt wenn $name NICHT gesetzt ist ;)<br />  # Digne wie size aber ansonsten immer fein<br />  # mit CSS setzen ;)<br /><br />  </span><span class="syntaxkeyword">echo </span><span class="syntaxstring">'<br />        <p>E-Mail: <br><br />        <input type="text" name="email" size="40" maxlength="50" /></p><br /><br />        <p>Ihr Anliegen: <br><br />        <textarea name="inhalt" rows="10" cols="50"></textarea></p><br />        <p><input type="submit" name="absenden" value="absenden" /></p><br />       <br><br />      </fieldset><br />    </form>'</span><span class="syntaxkeyword">;<br /><br /><br />}<br /><br /></span><span class="syntaxcomment"># Hier beginnt jetzt der Teil falls alle ANgaben gemacht wurden<br /></span><span class="syntaxkeyword">else<br />{<br /><br />  </span><span class="syntaxdefault">$header     </span><span class="syntaxkeyword">= </span><span class="syntaxstring">'From: webmaster@mannchristian.de' </span><span class="syntaxkeyword">. </span><span class="syntaxstring">"\r\n" </span><span class="syntaxkeyword">.<br />                </span><span class="syntaxstring">'Reply-To: webmaster@mannchristian.de' </span><span class="syntaxkeyword">. </span><span class="syntaxstring">"\r\n" </span><span class="syntaxkeyword">.<br />                </span><span class="syntaxstring">'X-Mailer: PHP/' </span><span class="syntaxkeyword">. </span><span class="syntaxdefault">phpversion</span><span class="syntaxkeyword">();<br /><br />  </span><span class="syntaxcomment"># Wenn der tuersteher true zurück gibt wird alles gesetzt<br />  # und verschickt<br />  </span><span class="syntaxkeyword">if(</span><span class="syntaxdefault">tuersteher</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$inhalt</span><span class="syntaxkeyword">) AND </span><span class="syntaxdefault">tuersteher</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$from</span><span class="syntaxkeyword">)<br />  </span><span class="syntaxcomment">#  AND preg_match('/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i',$email)<br />  # irgendwo kam die funktion 'is_mail' zu wort,<br />  # diese existiert nicht, deshalb habe ich hier mal ersatzweise ein prüfmuster erstellt<br />  # wenn die email gecheckt werden soll einfach die Zeile aktivieren<br />  # ACHTUNG: dieser FIlter ist nicht 100% genau<br />   </span><span class="syntaxkeyword">)<br />  {<br />    </span><span class="syntaxdefault">$empfaenger </span><span class="syntaxkeyword">= </span><span class="syntaxstring">"webmaster@mannchristian.de"</span><span class="syntaxkeyword">;<br />    </span><span class="syntaxdefault">$betreff    </span><span class="syntaxkeyword">= </span><span class="syntaxstring">"Anfrage zur Webseite: "</span><span class="syntaxkeyword">;<br />    </span><span class="syntaxcomment"># htmlentities maskiert alle Sondezreichen so das<br />    # HTML und PHP Code ihre Wirkung verlieren<br />    </span><span class="syntaxdefault">$nachricht  </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">htmlentities</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$inhalt</span><span class="syntaxkeyword">);<br />    </span><span class="syntaxdefault">$from       </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">htmlentities</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$email</span><span class="syntaxkeyword">);<br /><br />    </span><span class="syntaxdefault">mail</span><span class="syntaxkeyword">( </span><span class="syntaxdefault">$empfaenger</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$betreff</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$nachricht</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$from </span><span class="syntaxkeyword">);<br /><br />    echo </span><span class="syntaxstring">"<br />    <h2>Vielen Dank!</h2><br />    <p>Ihre Nachricht wurde erfolgreich verschickt.</p>"</span><span class="syntaxkeyword">;<br />  }<br />  </span><span class="syntaxcomment"># Gibt der Türsteher Alarm weisen wir den Besucher freundlich darauf hin:<br />  </span><span class="syntaxkeyword">else<br />  {<br />    echo </span><span class="syntaxstring">"<br />      <p>Leider sind bestimmte Daten von Ihnen von unseren Filter als<br />      gef&auml;hrlich identifiziert worden, bitte &uuml;berpr&uuml;fen sie<br />      Ihre Daten.</p>"</span><span class="syntaxkeyword">;<br />  }<br />}<br /></span><span class="syntaxdefault">?><br /></span>  </article><br /></span>

    Von clear: both in Footer sehe ich nichts ...


    Hast du vor, noch mehr von unseren Verbesserungsvorschlägen umzusetzen?
    Wenn nicht, wäre es müßig noch etwas zu deiner Seite zu sagen.

    Das Design ist meiner Meinung nach gar nicht schlecht, also meinen Augen tuts nicht weh und die Kontraste find ich auch nicht schlimm.


    Die Schrift im Footer sieht mittig oder nach rechts gepackt wahrscheinlich besser aus. Wenn es links bleiben soll, würd ich die Schriftgröße verkleinern, damit der Text nicht breiter ist, als die linke Spalte.


    Die Schriftart wirkt nicht sonderlich seriös. Solltest eine andere nehmen.


    Die Navigationspunkte sollten etwas anderes zur Abtrennung bekommen oder die Kästchen jeweils gleiche Abstände zum linken und rechten Menüpunkt haben. ( Flow Snow: das beim ersten Listenpunkt das Aufzählungszeichen fehlt ist beabsichtigt)


    Zur Technik:
    Der Quellcode ist etwas gewöhnungsbedürftig eingerückt, zumindest den CSS-Code solltest du gleichmäßig einrücken, dann kann mans sehr viel leichter lesen.


    Den Div am Ende fürs Clearen kannst du dir sparen und im Footer clearen.
    Den top-Div kannst dir auch sparen, weise doch einfach dem body den Hintergrund zu.


    Der Validator spuckt auch nen Fehler aus:http://validator.w3.org/check?verbose=1&uri=http%3A%2F%2Fwww.p-schuster.sarkkan.de%2F
    Solltest du beheben.

    Achso, sonderlich technisch war mein Post aber auch nicht :D


    Eine große und eine kleine Spalte passt, glaub ich, am besten.
    Das aus den jetzigen Seitenspalten wirst du kaum vernünftig mit dem Hauptinhalt in einer großen Spalte zusammenbekommen und für zwei Seitenspalten ist das zu wenig.
    Die Seitenspalte sollte dann aber nach rechts, ist man einfach so gewohnt.

    Naja, dass kannst du ganz einfach machen.
    Ich denke, für die News ist rechts noch Platz frei, den +1-Button, Spenden und Support kannst du ja zusammen packen.


    Notfalls machst die rechte Spalte halt etwas größer.

    Oh, hab nicht bemerkt, dass da Banner sind (hatte AdBlocker an). Dann gehen meine beiden Punkte natürlich nicht.


    Das Design gefällt mir so ganz gut, das einzige, was mich stört, ist die News-Überschrift.
    Das Bild der Überschrift passt nicht wirklich ins Design rein.
    Das Bild würd ich entweder ganz weglassen oder auf die Breite der Spalte machen, so dass an den Seiten und oben nichts mehr von dem Spaltenhintergrund zu sehen ist und den Farbverlauf in der Spaltenhintergrundfarbe enden lassen, sodass dort ein weicher Übergang ist.

    Ich weiß nicht mehr, wie die Seite vorher aussah, kann also nicht sagen, was jetzt besser ist.


    Was man noch verbessern könnte:


    • Die beiden divs links und rechts sind überflüssig, das kann genauso gut ohne erreicht werden. (bei div body kann das das float weg)
    • Der div body ist auch überflüssig, alle dort enthaltenen Style-Angaben können dem Element body zugeordnet werden, wodurch es dann wegfällt. Die alten Styles vom body-Tag können dann weg.

    Also wie es anders geht steht hier:

    Zitat von &quot;Sarkkan&quot;

    Ich würde 3 Spalten erzeugen und diese alle Links floaten lassen.
    In Spalte 1 kommt dann die Seitliche Navigation, in Spalte 2 der Content und in Spalte 3 die Sidebar.
    So hat man viel mehr Controlle über seine Boxen^^


    Das heißt, du floatest alle drei Elemente, die nebeneinander stehen (Navigation, Inhalt und die rechte Spalte), nach links.
    Dafür musst du die rechte Spalte und den Inhalt jeweils in einen umschließenden div-Container (oder section) packen.
    Die Elemente müssen im Code so untereinander stehen, dass das ganz links (die Navigation) oben steht und darunter dann jeweils das weiter rechtsstehende Element, du musst also Inhalt und rechte Spalte vertauschen.


    So ordnen sich die Elemte automatisch nebeneinander an. Die Abstände musst du als Abstände vom linken Bildschirmrand mit margin-left machen.


    Sollte das dein Problem nicht beheben, kannst du, wie ich dir vorher geschrieben hatte, der section, in der das Bild ist, über CSS ein overflow: hidden geben (zusätzliche Inhalte würden nur abgeschnitten, wenn du für die section eine feste Breite vorgibst). Dadurch wird das Bild in der section gehalten.


    Ich hoffe, das hilft dir.
    Sonst solltest du nochmal in aller Ruhe das html-seminar durchgehen und dir das floaten und clearen genauer anschauen.


    Es wurde hier auch schon öfter erklärt, die Suchfunktion wird dir also auch helfen können.

    Das kann ich mir auch nicht erklären, was auf jedenfall hilft ist ein overflow: hidden bei der section, die das bild beinhaltet.
    Damit wird jeglicher Inhalt, der größer als die section ist, in der section abgeschnitten, so dass das Bild "hineinegepresst" wird.


    Das ist aber auch nicht die beste Lösung.