Versand von Formular verändert Layout

Alles, was PHP betrifft, kann hier besprochen werden.

Versand von Formular verändert Layout

Postby Poison of the Cursed » 06. August 2010 14:33

Hallo Zusammen,

ich habe zu meinem Problem schon gegooglt und leider nichts gefunden. Entweder scheine nur ich dieses Problem zu haben oder ich bin die einzige, die sich daran stört.

Die ersten PHP-Dateien, die ich erstellt hatte, waren vom Aufbau her wie folgt gegliedert:

-SESSION Start
- PHP-Code (keine Ausgabe von Inhalt per Echo, sondern Speichern in Variablen)
- HTML-Head
- HTML-Body mit html-Code und der Ausgaben der Variablen aus dem PHP-Script

Also, nach dem schönen EVA-Prinzip.
Dabei ist mir aufgefallen, dass bei manchen PHP-Dateien (vorwiegend bei denen, die Daten aus Formularen verarbeitet haben) der in der CSS-Datei eingestellte Abstand zwischen dem Bildschirmrand und dem Inhalt der Seite größer war, als bei den anderen.
Sehr deutlich wurde es jetzt, nachdem ich das PHP-Script des Login (vorher willkommen.php) in die gleiche Datei geschoben habe, wie das Login Formular.

Beim aufrufen der Seite beträgt der Abstand zwischen Bildschirmrand und Inhalt, wie in der css eingestellt 10px. Nachdem das Formular versendet ist und damit das PHP-Script durchlaufen wird (Login ist jedes Mal erfolgreich, als kein Fehler), verändert sich der Abstand und ist plötzlich (geschätzt) 50px breit.
Wie geht das denn?

Kann und darf PHP das Design aus der CSS Datei beeinflussen? Oder habe ich einen Fehler im Script, der mit einem error_reporting nicht angezeigt wird? Hier mal das Script:

Code: Select all
<?php
session_start();
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title>LogIn</title>
<meta name="author" content="Regina Jost">
<meta name="copyright" content="Regina Jost">
<meta name="description" content="Durmstrang - Deine Harry-Potter-Fanseite! Werde Schüler am Institut für Zauberei, sammle Hauspunkte, löse Rätsel und bestehe das ein oder andere Abenteuer.">
<meta name="keywords" content="Harry, Potter, Durmstrang, Zauberschule, Zauberer, Hexe, Viktor, Krum, Igor, Karkaroff, Quidditch, Zauberstab, Gregorowitsch, Schiff">
<meta name="page-topic" content="Spiel">
<meta name="page-type" content="Private Homepage ">
<meta name="audience" content="Kinder, Jugendliche, Fans, Schüler, Studenten">
<meta name="robots" content="index, follow">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="stylesheet" type="text/css" href="../style.css">
</head>

<body>

<div id="Navigation">

<?php
include("../menu.php");
?>

</div>

<div id="Info">

<?php
include("../infobox.php");
?>

</div>


<div id="Inhalt" align="center">
<h1>LogIn</h1>

<img src="trittein.gif" alt="">

<p>Wenn Du bereits Schüler im Institut für Zauberei bist, kannst Du Dich hier mit Deinem Nickname und Passwort
einloggen.</p>
<br>

<?php
error_reporting(E_ALL);

if (isset($_GET["logout"]) AND !empty($_GET["logout"]))
{
$status = 'Auf Wiedersehen. <img src="wiedersehen.gif" alt=""> Bis zum nächsten Mal.';
}
else
{
$status = "";
}

if(empty($_POST["gesendet"]))
{
$output ="";
}
else
{


if(empty($_POST["passwort"]))
{
$error =  "Du hast vergessen Dein Passwort anzugeben.";
}
else if(empty($_POST["benutzername"]))
{
$error =  "Du hast vergessen Deinen Benutzernamen einzugeben.";
}
else
{


include("../connect.php");

if(!$verbindung OR !mysql_select_db("homepage"))
{
$error =  "Deine Anmeldung ist leider fehlgeschlagen. Sollte die Anmeldung nochmals fehlschlagen sende
mir bitte eine E-Mail:
<br>
<br><b><a href=\"mailto:mail@potionmaster.de\">mail@potionmaster.de</a></b>";
}
else
{

$abfrage = "SELECT profil.datum, profil.galleonen, profil.punkte, rustleoaks.benutzername, rustleoaks.passwort, rustleoaks.login1, abenteuer.hinweis FROM profil JOIN rustleoaks
ON profil.benutzername='" . mysql_real_escape_string($_POST["benutzername"]) . "' AND rustleoaks.benutzername='" . mysql_real_escape_string($_POST["benutzername"]) . "'
JOIN abenteuer ON rustleoaks.benutzername='" . mysql_real_escape_string($_POST["benutzername"]) . "' AND abenteuer.benutzername='" . mysql_real_escape_string($_POST["benutzername"]) . "'";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

$kontostand=$row->galleonen;
$punktestand=$row->punkte;
$_SESSION["hinweis"]=$row->hinweis;

$datum = date("Y-m-d");


$passwort = md5($_POST["passwort"]);


if(!$_POST["benutzername"] AND !$passwort)
{
$error =  'Tut mir leid,<br>
aber <a href="anmeldung.php">Der magische Spiegel</a> hat Dich noch keinem Haus zugeteilt.';
}
else
{


if($row->passwort != $passwort)
{
$error = "Dein Benutzername und/oder Dein Passwort ist falsch.";
}
else
{
$_SESSION["username"] = $_POST["benutzername"];


if($row->login1==0)
{
$galleonen1=20;
}
else
{
$galleonen1=0;
}


if($row->datum < $datum)
{
$galleonen2=1;
$punkteneu=3;
$output = "Hallo <b>".htmlspecialchars($_SESSION['username'])."</b>, schön das Du da bist!
<br>Du erhältst 1 Galleone und 3 Punkte.";
}
else
{
$galleonen2=0;
$punkteneu=0;
$output = "Hallo <b>".htmlspecialchars($_SESSION['username'])."</b>, schön das Du da bist!";
}


$ergebnis=$galleonen1+$galleonen2;
$galleonen=$kontostand+$ergebnis;

$punkte=$punktestand+$punkteneu;


$tstamp = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
$datum = date("Y-m-d", $tstamp);

$aendern = "UPDATE profil Set galleonen='" . mysql_real_escape_string($galleonen) . "', datum='" . mysql_real_escape_string($datum) . "',
punkte='" . mysql_real_escape_string($punkte) . "' WHERE benutzername='" . mysql_real_escape_string($_SESSION["username"]) . "'";
$update = mysql_query($aendern);

$aendern = "UPDATE rustleoaks Set login1=1, online=1 WHERE benutzername='" . mysql_real_escape_string($_SESSION["username"]) . "'";
$update = mysql_query($aendern);


mysql_close ($verbindung);

// schließen der noch offenen else Befehle
}
}
}
}
}
?>

<?php
if (!empty($error))
{
echo '<div class="error"><p>'.$error.'</p></div>';
}
else
{
echo $output;
echo $status;
}
?>
<form action="login.php" method="post">
<table border="0" cellspacing="0" cellpadding="2" style="border: 3px double #101010; background-color: #666666;">
<tr>
<td>Benutzername:</td>
<td><input type="text" name="benutzername" size="24" maxlength="50"></td>
</tr>
<tr>
<td>Passwort:</td>
<td><input type="password" name="passwort" size="24" maxlength="50"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="gesendet" value="Absenden"></td>
</tr>
</table>
</form>
<br>

<p>Falls nicht, musst Du zuerst zur Anmeldung,<br>damit der <a href="anmeldung.php">Der magische Spiegel</a> Dich
Deinem Haus zuteilen kann.<br>
<br>
Du hast Dein Passwort vergessen? <a href="vergessen.php">Hier</a> findest Du Hilfe!</p>

</div>

</body>
</html>


Bitte nicht wundern, dass PHP jetzt in den HTML-Code eingebettet ist. Der Fehler, falls es einer ist, tritt an dieser Stelle auch noch auf, sticht aber nicht so sehr ins Auge.
Kann man diese "Veränderung" der Seite irgendwie beheben oder braucht der PHP-Code bei der Ausführung einfach mehr "Platz"?

Ansonsten funktioniert alles einwandfrei und es wird mir keine Fehlermeldung angezeigt. Datei ist in ANSI as UTF8 (also UTF8 ohne BOM) gespeichert.

Für Hilfe oder Erklärungen wäre ich sehr dankbar.

Liebe Grüße
Poison
Poison of the Cursed
 
Posts: 31
Joined: 27. April 2010 17:56

Re: Versand von Formular verändert Layout

Postby Altrea » 06. August 2010 15:48

Prüfe vorallem auch, ob alle Tags vor und nach dem Absenden des Formulars richtig geöffnet und geschlossen sind.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: Versand von Formular verändert Layout

Postby Poison of the Cursed » 06. August 2010 19:21

Hallo wole, hallo Altrea,

wenn ich euch nicht hätte. :oops:
Ich habe, so glorreich, wie ich war, tatsächlich eine Class im Inhalt eingetragen, die in der CSS nicht definiert ist. Mega-super-Idee.

Gott, ist das peinlich und ich Schaf, doktor die ganze Zeit am Script rum.
OK, ich stelle mich in die Ecke und schäme mich. Dabei war ich die letzten Tage ganz ekelhaft stolz, dass meine Seite endlich mal funktioniert.

Werde alles nochmal checken und verbessern.
Nochmals vielen Dank euch beiden.

Liebe Grüße
Poison
Poison of the Cursed
 
Posts: 31
Joined: 27. April 2010 17:56

Re: Versand von Formular verändert Layout

Postby Poison of the Cursed » 06. August 2010 20:28

Hallo,

doch nochmal ich.
Habe jetzt die undefinierte Class aus dem html-code der login.php genommen und den php-code wieder unterhalb der Doc-Type eingefügt. Leider ist der Fehler immer noch da. :x

@Altrea
Ich habe die Tags geprüft. Alles ist geöffnet und geschlossen.

@wole
Hier mal meine css. Ich finde den Fehler einfach nicht:

Code: Select all
body { background-image: url(dbg1.gif); margin: 10px; font-family: Verdana; font-size: 14px; font-style: normal; color: #cccccc; letter-spacing: 0px; }

address { font-family: Verdana; font-size: 12px; font-style: normal; font-weight: bold; color: #901d1d; letter-spacing: 0px; }


div#Navigation { background-color: #272727; text-align: center; font-family: Verdana; color: #cccccc; letter-spacing: 0px; float: right; width: 190px; min-height: 200px;
margin-top: 20px; padding-right: 5px; padding-bottom: 10px; margin-bottom: 10px; border-width: 5px; border-style: solid; border-color: #101010; }

div#Navigation p { font-family: Verdana; font-size: 11px; font-style: normal; color: #cccccc; letter-spacing: 0px; padding-top: 20px; margin: 0px; border: none; }

div#Navigation a { display: block; margin: 0px; padding: 0px; text-align: center; font-family: Verdana; font-size: 11px; font-style: normal; font-weight: bold; }

div#Navigation a:link { color: #ffffff; letter-spacing: 0px; text-decoration: none; }

div#Navigation a:visited { color: #ffffff; letter-spacing: 0px; text-decoration: none; }

div#Navigation a:hover { color: #901d1d; letter-spacing: 0px; text-decoration: none; }

div#Navigation a:active { color:#ffffff; letter-spacing: 0px; text-decoration: none; }


div#Info { background-color: #272727; text-align: left; font-family: Verdana; font-size: 12px; font-style: normal; letter-spacing: 0px; float: left;
width: 190px; min-height: 200px; margin-top: 20px; padding-left: 5px; padding-bottom: 10px; margin-bottom: 10px; border-width: 5px; border-style: solid; border-color: #101010; }

div#Info p { text-align: center; font-family: Verdana; font-size: 12px; font-style: normal; color: #; letter-spacing: 0px; padding-top: 30px; margin-top: 0px; border: none; }

div#Info table { font-family: Verdana; font-size:12px; font-style:normal; color: #cccccc; letter-spacing:0px; border: 3px double #491111; background-color: #333333; }

div#Info td { font-family: Verdana; font-size:12px; font-style:normal; color: #cccccc; letter-spacing:0px; }

div#Info div { margin: 0px; padding: 0px; }


div#Inhalt { background-color: #272727; font-family: Verdana; font-size: 14px; font-style: normal; color: #cccccc; letter-spacing: 0px;
min-height: 600px; margin-right: 250px; margin-left: 250px; padding-left: 10px; padding-top: 20px; padding-bottom: 20px; padding-right: 10px;
border-width: 5px; border-style: solid; border-color: #101010; }

div#Inhalt h1 { margin-top: 10px; font-family: Verdana; font-size: 22px; font-style: italic; font-weight: bold; color: #cccccc; letter-spacing: 0px; }

div#Inhalt h2 { background-color: #999999; font-family: Verdana; font-size: 14px; font-weight: bold; color: #000000; letter-spacing: 0px; }

div#Inhalt h3 { font-family: Verdana; font-size: 14px; font-style: italic; font-weight: bold; color: #cccccc; letter-spacing: 0px; }

div#Inhalt p { font-family: Verdana; font-size: 14px; font-style: normal; color: #cccccc; letter-spacing: 0px; padding-bottom: 10px; padding-top: 20px; border: 0px; }

div#Inhalt div { font-family: Verdana; font-size: 14px; font-style: normal; color: #cccccc; letter-spacing: 0px; padding-bottom: 10px; padding-top: 0px; border: 0px; }

div#Inhalt td { font-family: Verdana; font-size: 14px; font-style: normal; color: #cccccc; letter-spacing: 0px; }

div#Inhalt form { font-family: Verdana; font-size: 14px; font-style: normal; color: #cccccc; letter-spacing: 0px; padding: 4px; border: 0px; }

div#Inhalt a:link,a:visited,a:active { font-family: Verdana; font-size: 14px; font-style: normal; font-weight: bold; color: #901d1d; letter-spacing: 0px; text-decoration: none; }

div#Inhalt a:hover { font-family: Verdana; font-size: 14px; font-style: normal; font-weight: bold; color: #bb2525; letter-spacing: 0px; text-decoration: none; }

div#Inhalt address { font-family: Verdana; font-size: 12px; font-style: normal; font-weight: bold; color: #901d1d; letter-spacing: 0px; }

div#Inhalt hr { color:#bb2525; }


In dem php-script sind keine div's, p's und class's eingetragen. Ist das vielleicht der Fehler? Da ich im Script aber eine Mailadresse angeben, habe ich den Punkt "address" außerhalb der Navigation, der Info und dem Inhalt angeführt.

Liebe Grüße
Poison
Poison of the Cursed
 
Posts: 31
Joined: 27. April 2010 17:56


Return to PHP

Who is online

Users browsing this forum: No registered users and 15 guests