PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Webdesign]DKs Fragen-Thread



DK107
25.08.2009, 12:47
Da ich gerade dabei bin mich ins Webdesign einzuarbeiten und auch eine Homepage zu erstellen werden hier noch so einige Fragen zu Problemen kommen.

Aktuell hab ich das Problem das die 2 Bilder die ich in den Header-Frame setzen will im Firefox zu weit runterskaliert werden und beim IE wird gar nicht skaliert. Wie man hier (http://img154.imagevenue.com/img.php?image=01206_headerproblem_122_390lo.jpg) sehen kann, das sind zwar alles noch Platzhalter da ich noch dabei bin das Grundgerüst zu erstellen, aber wenn es mit dem Platzhalter zu Problemen kommt wird es sicherlich beim richtigen dann auch nicht funktionieren.

Der Code der Header-Datei sieht wie folgt aus:

<html>
<frameset cols="10%,90%" border="0" frameborder="0" framespacing="0">
<frame src="graphics-homepage/logo.jpg" height="" width="" alt="Logo">
<frame src="graphics-homepage/header.jpg" height="" width="" alt="The Gamers Blog -
News from Gamers to Gamers">
</frameset>
</html>
Die Bildplatzhalter haben folgende Größen:
Logo: 590x590
Header: 1218x590

Also kann mir jemand den Fehler sagen und beim korriegieren helfen. :gratz

Satans Krümelmonster
25.08.2009, 13:02
als source für einen fragme gibt man immer eine html-/php-/whatever-seite an. aber kein bild.
das macht keinen sinn. ;)
außerdem würde ich dir von frames abraten. vor allem zu diesem verwendungszweck. ;)
schau dich mal hier (http://www.css4you.de/wslayout1/index.html) um. da werden gt beispiele aufgezeigt, wie du solch eine teilung des bildschirms ohne tabelleun und frames hinbekommst.

und wenn du schon mit frames arbeiten willst, dann solltest du den frames feste breiten geben. zumindest in diesem fall, da deine bilder ja feste breiten und höhen haben.


<html>
<frameset cols="590px,*" border="0" frameborder="0" framespacing="0">
<frame src="navi.html" height="" width="" alt="Logo">
<frame src="contents.html" height="" width="" alt="The Gamers Blog -
News from Gamers to Gamers">
</frameset>
</html>

mfg

DK107
25.08.2009, 13:09
Jetzt kommst du mit css, soweit bin ich noch nicht, bin doch gerade erst bei HTML. §cry

Eine feste Größe hab ich nicht angegeben da es dynamisch sein soll und sich entsprechend der jeweiligen Bildschirm Größe anpassen soll.

Satans Krümelmonster
25.08.2009, 14:00
Jetzt kommst du mit css, soweit bin ich noch nicht, bin doch gerade erst bei HTML. §cry
HTML und css sind so eng miteinander verflochten, dass du ohne css gar keine webseite richtig gestalten werden kannst ;)

Eine feste Größe hab ich nicht angegeben da es dynamisch sein soll und sich entsprechend der jeweiligen Bildschirm Größe anpassen soll.

aber dir ist schon klar, dass wenn du dynamische breiten angibst die bilder vergrößert und verkleinert werden, so lange, bis es passt? :p
naja... zumindest wenn du das bild als source für den frame angibst. ;)

DK107
25.08.2009, 15:00
HTML und css sind so eng miteinander verflochten, dass du ohne css gar keine webseite richtig gestalten werden kannst ;)
Ich bin ja dabei mich einzuarbeiten und erst bei HTML das css wichtig ist ist mir klar das kommt aber alles eh erst nacheinander, ich weiß auch das ich noch PHP und SQL brauchen werde trotzdem setze ich mich noch nicht dran wenn ich HTML noch nicht richtig kann. ;)

aber dir ist schon klar, dass wenn du dynamische breiten angibst die bilder vergrößert und verkleinert werden, so lange, bis es passt? :p
naja... zumindest wenn du das bild als source für den frame angibst. ;)
Ich hoffte ja das es nicht so blöd aussieht. :o

Edit: Ist da HTML oder XHTML besser geeignet, für das Endprodukt?

DK107
28.08.2009, 17:32
Hab ein Problem bei der Registrierungsfunktion der Seite.

Es wird beim Klicken auf den Registrieren-Button nur die aktuelle Seite neugeladen und der Datenbestand landet auch nicht in der Datenbank. :(

Kann mir jemand sagen wo der Fehler ist, und ein bisschen optik Tuning der Seite wäre auch nicht schlecht. Meine Testseite ist die hier (http://the-gamers-blog.bplaced.net/), wird wenn es fertig ist umziehen. Grafikelemente sind noch in Arbeit. :)

Also der Code der Registrierungsseite:


<?php
echo "<form ".
" name=\"Registrierung\" ".
" action=\"".$_SERVER['PHP_SELF']."\" ".
" method=\"post\" ".
" accept-charset=\"ISO-8859-1\">\n";
echo "<h5>Notwendige Angaben</h5>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"min.3\nmax.32\nNur Zahlen, Buchstaben und Unterstrich\">\n".
"Nickname :\n".
"</span>\n";
echo "<input type=\"text\" name=\"Nickname\" maxlength=\"32\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"min.6\">\n".
"Passwort :\n".
"</span>\n";
echo "<input type=\"password\" name=\"Passwort\">\n";
echo "<br>\n";
echo "<span>\n".
"Passwort wiederholen:\n".
"</span>\n";
echo "<input type=\"password\" name=\"Passwortwiederholung\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"Ihre.Adresse@Ihr-Anbieter.de\">\n".
"Email-Adresse:\n".
"</span>\n";
echo "<input type=\"text\" name=\"Email\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span>\n".
"Email-Adresse anzeigen:\n".
"</span>\n";
echo "<input type=\"radio\" name=\"Show_Email\" value=\"show\"> ja\n";
echo "<input type=\"radio\" name=\"Show_Email\" value=\"hide\" checked> nein\n";
echo "<h5>Freiwillige Angaben</h5>\n";
echo "<span>\n".
"Wohnort :\n".
"</span>\n";
echo "<input type=\"text\" name=\"Wohnort\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span>\n".
"ICQ :\n".
"</span>\n";
echo "<input type=\"text\" name=\"ICQ\" maxlength=\"20\">\n";
echo "<br>\n";
echo "<span>\n".
"AIM :\n".
"</span>\n";
echo "<input type=\"text\" name=\"AIM\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span>\n".
"Yahoo :\n".
"</span>\n";
echo "<input type=\"text\" name=\"YIM\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span>\n".
"MSN :\n".
"</span>\n";
echo "<input type=\"text\" name=\"MSN\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Registrieren\">\n";
echo "<input type=\"reset\" value=\"Zurücksetzen\">\n";
echo "</form>\n";
?>

Und der Code der Datei die es in die Datenbankschreiben soll:


<?php
error_reporting(E_ALL);
$MYSQL_HOST = 'localhost';
$MYSQL_USER = 'xxx';
$MYSQL_PASS = 'xxx';
$MYSQL_DATA = 'users';

$connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());

session_start();

if(isset($_POST['submit']) AND $_POST['submit']=='Registrieren'){
// Fehlerarray anlegen
$errors = array();
// Prüfen, ob alle Formularfelder vorhanden sind
if(!isset($_POST['Nickname'],
$_POST['Passwort'],
$_POST['Passwortwiederholung'],
$_POST['Email'],
$_POST['Show_Email'],
$_POST['Wohnort'],
$_POST['ICQ'],
$_POST['AIM'],
$_POST['Yahoo'],
$_POST['MSN']))
// Ein Element im Fehlerarray hinzufügen
$errors = "Bitte benutzen Sie das Formular aus dem Registrierungsbereich";
else{
// Prüfung der einzelnen obligatorischen Felder
// Alle Nicknames und Emailadressen zum Vergleich aus der Datenbank holen
$nicknames = array();
$emails = array();
$sql = "SELECT
Nickname,
Email
FROM
User
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
while($row = mysql_fetch_assoc($result)){
$nicknames[] = $row['Nickname'];
$emails[] = $row['Email'];
}
// Prüft, ob ein Nickname eingegeben wurde
if(trim($_POST['Nickname'])=='')
$errors[]= "Bitte geben Sie einen Nickname ein.";
// Prüft, ob der Nickname mindestens 3 Zeichen enthält
elseif(strlen(trim($_POST['Nickname'])) < 3)
$errors[]= "Ihr Name muss mindestens 3 Zeichen lang sein.";
// Prüft, ob der Nickname nur gültige Zeichen enthält
elseif(!preg_match('/^\w+$/', trim($_POST['Nickname'])))
$errors[]= "Benutzen Sie bitte nur alphanumerische Zeichen (Zahlen, Buchstaben und den Unterstrich).";
// Prüft, ob der Nickname bereits vergeben ist
elseif(in_array(trim($_POST['Nickname']), $nicknames))
$errors[]= "Dieser Nickname ist bereits vergeben.";
// Prüft, ob eine Email-Adresse eingegeben wurde
if(trim($_POST['Email'])=='')
$errors[]= "Bitte geben Sie Ihre Email-Adresse ein.";
// Prüft, ob die Email-Adresse gültig ist
elseif(!preg_match('§^[\w\.-]+@[\w\.-]+\.[\w]{2,4}$§', trim($_POST['Email'])))
$errors[]= "Ihre Email Adresse hat eine falsche Syntax.";
// Prüft, ob die Email-Adresse bereits vergeben ist
elseif(in_array(trim($_POST['Email']), $emails))
$errors[]= "Diese Email-Adresse ist bereits vergeben.";
// Prüft, ob ein Passwort eingegeben wurde
if(trim($_POST['Passwort'])=='')
$errors[]= "Bitte geben Sie Ihr Passwort ein.";
// Prüft, ob das Passwort mindestens 6 Zeichen enthält
elseif (strlen(trim($_POST['Passwort'])) < 6)
$errors[]= "Ihr Passwort muss mindestens 6 Zeichen lang sein.";
// Prüft, ob eine Passwortwiederholung eingegeben wurde
if(trim($_POST['Passwortwiederholung'])=='')
$errors[]= "Bitte wiederholen Sie Ihr Passwort.";
// Prüft, ob das Passwort und die Passwortwiederholung übereinstimmen
elseif (trim($_POST['Passwort']) != trim($_POST['Passwortwiederholung']))
$errors[]= "Ihre Passwortwiederholung war nicht korrekt.";
}
// Prüft, ob Fehler aufgetreten sind
if(count($errors)){
echo "Ihr Account konnte nicht erstellt werden.<br>\n".
"<br>\n";
foreach($errors as $error)
echo $error."<br>\n";
echo "<br>\n".
"Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Registrierungsformular</a>\n";
}
else{
// Daten in die Datenbanktabelle einfügen
$sql = "INSERT INTO
User
(Nickname,
Email,
Passwort,
Show_Email,
Registrierungsdatum,
Wohnort,
ICQ,
AIM,
Yahoo,
MSN
)
VALUES
('".mysql_real_escape_string(trim($_POST['Nickname']))."',
'".mysql_real_escape_string(trim($_POST['Email']))."',
'".md5(trim($_POST['Passwort']))."',
'".mysql_real_escape_string(trim($_POST['Show_Email']))."',
CURDATE(),
'".mysql_real_escape_string(trim($_POST['Wohnort']))."',
'".mysql_real_escape_string(trim($_POST['ICQ']))."',
'".mysql_real_escape_string(trim($_POST['AIM']))."',
'".mysql_real_escape_string(trim($_POST['Yahoo']))."',
'".mysql_real_escape_string(trim($_POST['MSN']))."'
)
";
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
echo "Vielen Dank!\n<br>".
"Ihr Accout wurde erfolgreich erstellt.\n<br>".
"Sie können sich nun mit Ihren Daten einloggen.\n<br>".
"<a href=\"login.php\">Zum Login</a>\n";
}
}
else {
echo "<form ".
" name=\"Registrierung\" ".
" action=\"".$_SERVER['PHP_SELF']."\" ".
" method=\"post\" ".
" accept-charset=\"ISO-8859-1\">\n";
echo "<h5>Notwendige Angaben</h5>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"min.3\nmax.32\nNur Zahlen, Buchstaben und Unterstrich\">\n".
"Nickname :\n".
"</span>\n";
echo "<input type=\"text\" name=\"Nickname\" maxlength=\"32\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"min.6\">\n".
"Passwort :\n".
"</span>\n";
echo "<input type=\"password\" name=\"Passwort\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"min.6\">\n".
"Passwort wiederholen:\n".
"</span>\n";
echo "<input type=\"password\" name=\"Passwortwiederholung\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"Ihre.Adresse@Ihr-Anbieter.de\">\n".
"Email-Adresse:\n".
"</span>\n";
echo "<input type=\"text\" name=\"Email\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span>\n".
"Email-Adresse anzeigen:\n".
"</span>\n";
echo "<input type=\"radio\" name=\"Show_Email\" value=\"1\"> ja\n";
echo "<input type=\"radio\" name=\"Show_Email\" value=\"0\" checked> nein\n";
echo "<h5>Freiwillige Angaben</h5>\n";
echo "<span style=\"font-weight:bold;\">\n".
"Wohnort :\n".
"</span>\n";
echo "<input type=\"text\" name=\"Wohnort\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\">\n".
"ICQ :\n".
"</span>\n";
echo "<input type=\"text\" name=\"ICQ\" maxlength=\"20\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\">\n".
"AIM :\n".
"</span>\n";
echo "<input type=\"text\" name=\"AIM\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\">\n".
"Yahoo :\n".
"</span>\n";
echo "<input type=\"text\" name=\"YIM\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\">\n".
"MSN :\n".
"</span>\n";
echo "<input type=\"text\" name=\"MSN\" maxlength=\"70\">\n";
echo "<br>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Registrieren\">\n";
echo "<input type=\"reset\" value=\"Zurücksetzen\">\n";
echo "</form>\n";
}
?>

Satans Krümelmonster
28.08.2009, 18:21
ich kann mir nur vorstellen, dass $_POST['submit'] falsch oder gar nicht übergeben wird.
füg' doch einfach mal ein echo $_POST['submit']; in dein script ein. dann weißt du mehr ;)

und ich an deiner stelle würde UTF-8 als zeichensatz verwenden.
der unterstützt wenigstens alle zeichen und wenn du später mal vielleicht was mit AJAX machen willst, hast du da keine probleme ;)

und ich würde an deiner stelle das grün ganz aus der seite werfen.
das sticht einfach nur in den augen ;)

und wieswo muss man unbedingt seine icq nummer etc. angeben?
es gibt bestimmt auch leute, die sowas nicht haben ;)

Thoronador
28.08.2009, 19:57
Aus dem zweiten Codeabschnitt:

// Alle Nicknames und Emailadressen zum Vergleich aus der Datenbank holen
$nicknames = array();
$emails = array();
$sql = "SELECT
Nickname,
Email
FROM
User
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
while($row = mysql_fetch_assoc($result)){
$nicknames[] = $row['Nickname'];
$emails[] = $row['Email'];
}
Das ist hochgradig ineffektiv, weil der Code so lineare Laufzeit in Abhängigkeit von der Anzahl der schon vorhandenen Nutzer hat. Außerdem müssen für jeden Nutzer Einträge in den beiden Arrays erstellt werden - das kostet auch Zeit und (zumindest temporär) zusätzlichen Speicherplatz. Bei vielleicht nur fünf in die Tabelle eingetragenen Nutzern ist das ja in Ordnung und spielt keine so bedeutende Rolle, aber stell dir mal vor, diese Seite hätte dann 500 Nutzer.
Sinnvoller wäre es da, gleich über die SQL-Abfrage gleich entsprechend zu modifizieren, sodass nur die Einträge ausgegeben werden, bei denen die Mailadresse oder der Nickname mit der Eingabe übereinstimmen. So hat man dann je nach Fall nur null bis maximal zwei Datensätze als Rückgabe.

Im Prinzip sähe die SQL-Abfrage dann so aus:

$sql = "SELECT Nickname, Email FROM User"
." WHERE Nickname='".$_POST['Nickname']."' OR Email='".$_POST['Email']."'";
Vorher sollte man beide POST-Felder aber auf Sonderzeichen, speziell Anführungszeichen oder andere Zeichen, welche in SQL-Syntax eine Bedeutung haben könnten, überprüfen, und diese entfernen oder geeignet maskieren, um SQL-Injections zu verhindern.

DK107
28.08.2009, 20:02
ich kann mir nur vorstellen, dass $_POST['submit'] falsch oder gar nicht übergeben wird.
füg' doch einfach mal ein echo $_POST['submit']; in dein script ein. dann weißt du mehr ;)
Hab das Problem gelöst, das blöde tutorial hatte verschwiegen das der Inhalt der ersten Datei in der zweiten auch drin und nur die zweite brauchbar ist, jetzt geht es die Daten kommen in die Datenbank und die Erfolgsmeldung erscheint auch.

und ich an deiner stelle würde UTF-8 als zeichensatz verwenden.
der unterstützt wenigstens alle zeichen und wenn du später mal vielleicht was mit AJAX machen willst, hast du da keine probleme ;)
Also einfach nur das "ISO-8859-1" gegen "UTF-8" ersetzen oder?

und ich würde an deiner stelle das grün ganz aus der seite werfen.
das sticht einfach nur in den augen ;)
Das wird ja noch geändert wenn die Grafikschmiede mit den Designelementenfertig wird, das dient aktuell nur dazu damit ich die anderen Farben schon ordentlich abstimmen kann. :o

und wieswo muss man unbedingt seine icq nummer etc. angeben?
es gibt bestimmt auch leute, die sowas nicht haben ;)
Das ist Optional und keine Bedingung. :o

Ist das Tutorial (http://www.mywebsolution.de/workshops/2/page_1/show_Loginsystem.html#up) hier zur Erstellung der Login-Funktion brauchbar? Vor allem wenn man die Daten auch für ein Forum nutzen will?

Satans Krümelmonster
28.08.2009, 21:16
Hab das Problem gelöst, das blöde tutorial hatte verschwiegen das der Inhalt der ersten Datei in der zweiten auch drin und nur die zweite brauchbar ist, jetzt geht es die Daten kommen in die Datenbank und die Erfolgsmeldung erscheint auch.

Also einfach nur das "ISO-8859-1" gegen "UTF-8" ersetzen oder?
Genau.
Aber du solltest darauf achten, dass deine Dateien im UTF-8 Zeichensatz gespeichert werden. Sonst werden Sonderzeichen inkorekt dargestellt und das willst du ja mit UTF-8 verhindern ;)
Schau einfach mal in den Optionen deines Editors nach. da müsste man den Zeichensatz beim Speichern irgendwo ändern können.
Aber du musst auch die Kollation in deiner Datenbank auf UTF-8 umstellen. Sonst kommt ist die Ausgabe in einem anderen Format -> Fehlermeldung... ;)

Das wird ja noch geändert wenn die Grafikschmiede mit den Designelementenfertig wird, das dient aktuell nur dazu damit ich die anderen Farben schon ordentlich abstimmen kann. :o
Das hoffe ich doch:p

Das ist Optional und keine Bedingung. :o
Wenn du aber auch nur eine Angabe nicht machst, wird der Fehler "Bitte benutzen Sie das Formular aus dem Registrierungsbereich" ausgegeben :dnuhr:

Ist das Tutorial (http://www.mywebsolution.de/workshops/2/page_1/show_Loginsystem.html#up) hier zur Erstellung der Login-Funktion brauchbar? Vor allem wenn man die Daten auch für ein Forum nutzen will?

Benutze lieber die Daten, die von der Forensoftware gespeichert werden als Maßgebend für die Seite und verlinke auf das Registrierungsscript des Forums.
Damit ersparst du dir lästige Fehler im Forum und zusätzlich viel Arbeit ;)