Sie sind nicht angemeldet.

sqall

Erleuchteter

  • »sqall« ist der Autor dieses Themas

Beiträge: 2 973

Registrierungsdatum: 20. Januar 2004

Wohnort: GNU/Linux

Danksagungen: 10 / 0
(erhalten / vergeben)

  • Nachricht senden

1

Mittwoch, 2. August 2006, 15:07

anmelde Seite in PHP (Source)

Hat J3nGO uns freundlicherweise geschrieben und zur Verfügung gestellt. Funktionierende Verbesserungen, Erweiterungen könnt ihr als Code als Beitrag pasten (nur als code, keine Verbesserungsvorschläge bitte):


J3nGO:
Ich hab das Anmeldesystemin 3 Dateien aufgeteil.
Einmal eine CSS-Datei, eine PHP-Datei mit den Logindaten für meinem Webserver und eine PHP-Datei wo der ganze Code untergebracht ist.
Alle Dateien sind im selben Ordner.

Hier die CSS-Datei (style.css)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
html, body
{
 height:100%;
}

html {  min-height: 100.05%; }

.index
{
 height:100%
}

*
{
 font-size:12px;
 color:#222222;
 font-family:Arial;
}

td
{
 background-color:#dddddd;
 border-width:1px;
 border-style:solid;
 border-color:#cccccc;
 border-width:1px
}

th
{
 background-color:#aaaaaa;
 border-width:1px;
 border-style:solid;
 border-color:#999999;
 border-width:1px
}

input
{
 background-color:#aaaaaa;
 border-width:1px;
 font-size:12px;
 color:#222222;
 border-style:solid;
 border-color:#999999;
}


Die PHP-Login-Datei (login.php)

Quellcode

1
2
3
4
5
6
<?php
	$argServer = "localhost";
	$argUser = "xxxx";
	$argPassword = "xxxx";
	$conn = mysql_connect($argServer, $argUser, $argPassword) or die(mysql_error());
?>


Die PHP-CODE-Datei (dooz.php)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>www.Y-d3sign.de | dooz's anmeldeliste</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta name="DC.language" content="de">
<meta http-equiv="imagetoolbar" content="no">
<meta name="author" content="cengiz mardin">
<link rel="shortcut icon" href="http://www.y-d3sign.de/V3/favicon.ico" title="Y-d3sign">
<link rel="stylesheet" type="text/css" href="style.css">
</head><body style="margin:0px 0px; padding:0px 0px; background-color:#FFFFFF;">
 <div class="index" align="center">
<br />
<!--////////////////////////////////////////////////////////////////////////-->
<?php
	// data initial

 	$formVorname 	= $_POST['vorname'];
 	$formNachname 	= $_POST['nachname'];
 	$formgebtag 	= $_POST['gebtag'];	// temp
 	$formgebmonat 	= $_POST['gebmonat'];	// temp
 	$formgebjahr 	= $_POST['gebjahr'];	// temp
 	$formOrt 	= $_POST['ort'];
 	$formPlz	= $_POST['plz'];
 	$formTeam 	= $_POST['team'];
 	$formgebdatum	= mktime(0,0,0,$formgebmonat,$formgebtag,$formgebjahr);
 	$send           = $_POST['s'];
 	$EINGETRAGEN    = 0;
	
        // connecten // connecten // connecten // connecten // connecten //

  	// import logindaten
        include "login.php";                    $timestamp = time();
        
        // connect to datenbank
	mysql_select_db("usr_web59_1", $conn) or die(mysql_error());

 	// input // input // input // input // input // input // input //
 	
 	// check and pullin oder so...
 	
 	if($send == 1)
 	{
 	        if($formVorname != "")
 	        {
 	                if($formNachname != "")
 	                {
				if($formOrt != "")
				{
					if($formPlz != "")
					{
					//	if($formTeam != "")
					//	{
						        if($formgebjahr != "1900")
						        {
						                $eintrag = "INSERT INTO dooz_anmeldeliste (vorname , nachname , gebtimestamp , plz , ort , team ) VALUES ('$formVorname', '$formNachname', '$formgebdatum', '$formPlz', '$formOrt', '$formTeam')";
        							mysql_query($eintrag);
						        
						                // inhalte reseten
			                 	 		$formVorname 	= "";
 								$formNachname 	= "";
 			                 	 		$formOrt 	= "";
 			                 	 		$formPlz	= "";
 			                 	 		$formTeam 	= "";
 			                 	 		$EINGETRAGEN    = 1;
 			                 	 		echo "Sie wurden erfolgreich eingetragen";
						        }
						        else
						        {
						                echo "ERROR: Sie sind bestimmt nicht im jahre 1900 geboren.";
						        }
					//	}
					//	else
 					//	{
 	     				//		echo "ERROR: Sie haben kein Team angegeben.";
 					//	}
					}
					else
 					{
 	        				echo "ERROR: Sie haben keine Postleitzahl angegeben.";
 					}
				}
				else
 				{
 	        			echo "ERROR: Sie haben keinen Wohnort angegeben.";
 				}
 	                }
 	                else
 			{
 	        		echo "ERROR: Sie haben keinen Namen angegeben.";
 			}
 	        }
 	        else
 		{
 	        	echo "ERROR: Sie haben keinen Vornamen angegeben.";
 		}
 	}

	// output // output // output // output // output // output //
	
	// connect to tabelle and get values
	$abfrage = "SELECT * FROM dooz_anmeldeliste ORDER BY id";
	$ergebnis = mysql_query($abfrage) OR die(mysql_error());

	// tablehead
	echo '<table cellpadding="2" cellspacing="1">'; echo "\n";
	echo ' <tr>'; echo "\n";
	echo '  <th>Name</th>'; echo "\n";
	echo '  <th>Geburtsdatum</th>'; echo "\n";
	echo '  <th>Wohnort</th>'; echo "\n";
	echo '  <th>Team</th>'; echo "\n";
	echo '   </tr>'; echo "\n";

	$anzahl = 0;
	while($row = mysql_fetch_array($ergebnis))
 	{
 	        $anzahl++;
 	        $gebtimestamp = $row['gebtimestamp'];
                $alterjetzt = floor(($timestamp-$gebtimestamp)/60/60/24/365);
		$gebdatumstrung = date("d.m.Y", $gebtimestamp);
		$gebdatumstrung .= ' ('.$alterjetzt.')';
		
		echo '   <tr>'; echo "\n";
		echo '    <td align="left">'.$row['vorname'].' '.$row['nachname'].'</td>'; echo "\n";
		echo '    <td align="left">'.$gebdatumstrung.'</td>'; echo "\n";
		echo '    <td align="left">'.$row['plz'].' '.$row['ort'] .'</td>'; echo "\n";
		echo '    <td align="left">'.$row['team'].'</td>'; echo "\n";
		echo '   </tr>'; echo "\n";
	}
	
	// tablefoot
	echo '  </table>'; echo "\n";
	if($anzahl == 0)
	{
		echo "<font style=\"font-size:9px\">Es ist kein Eintrag vorhanden.</font>";
	}
	else if($anzahl == 1)
	{
		echo "<font style=\"font-size:9px\">Es ist 1 Eintrag vorhanden.</font>";
	}
	else if($anzahl > 1)
	{
		echo "<font style=\"font-size:9px\">Es sind insgesamt $anzahl Einträge vorhanden.</font>";
	}
?>

<br />
<br />
<form action="dooz.php" method="post">

<table>
 <tr>
  <td align="right">Vorname* </td>
  <td><input type="Text" value="<?php echo $formVorname; ?>" name="vorname" SIZE="24" maxlength="30"></td>
 </tr>
 <tr>
  <td align="right">Name* </td>
  <td><input type="Text" value="<?php echo $formNachname; ?>" name="nachname" SIZE="24" maxlength="30"></td>
 </tr>
 <tr>
  <td align="right">Geburtsdatum* </td>
  <td>

     <select name="gebtag" size="1">
     <?php
       $laufjungelauf = 0;
       while($laufjungelauf < 31)
       {
        $laufjungelauf++;
	$schreib = $laufjungelauf;
        if($laufjungelauf<10)
        {
          $schreib = "0".$schreib;
	}
       	echo '<option>'.$laufjungelauf.'</option>'; echo "\n";
       }
     ?>
    </select>
    <select name="gebmonat" size="1">
     <?php
       $laufjungelauf = 0;
       while($laufjungelauf < 12)
       {
        $laufjungelauf++;
	$schreib = $laufjungelauf;
        if($laufjungelauf<10)
        {
          $schreib = "0".$schreib;
	}
       	echo '<option>'.$laufjungelauf.'</option>'; echo "\n";
       }
     ?>
    </select>
    <select name="gebjahr" size="1">
      <?php
       $laufjungelauf = 1899;
       while($laufjungelauf < 2006)
       {
        $laufjungelauf++;
	$schreib = $laufjungelauf;
        if($laufjungelauf<10)
        {
          $schreib = "0".$schreib;
	}
       	echo '<option>'.$laufjungelauf.'</option>'; echo "\n";
       }
     ?>
    </select>
  </td>
 </tr>
 <tr>
  <td align="right">Wohnort* </td>
  <td><input type="Text" value="<?php echo $formOrt; ?>" name="ort" SIZE="24" maxlength="50"></td>
 </tr>
 <tr>
  <td align="right">Postleitzahl* </td>
  <td><input type="Text" value="<?php echo $formPlz; ?>" name="plz" SIZE="24" maxlength="5"></td>
 </tr>
 <tr>
  <td align="right">Team  </td>
  <td><input type="Text" value="<?php echo $formTeam; ?>" name="team" SIZE="24" maxlength="50"></td>
 </tr>
 <tr>
  <td align="center">
   <input type="submit" value="Eintragen" style="border-style:solid;" />
  </td>
  <td>
   <input type="hidden" name="s" value="1" />
  </td>
 </tr>
</table>
</form>
<br />
powered by <a href="http://www.y-d3sign.de" target="_blank">www.y-d3sign.de</a>
<!--////////////////////////////////////////////////////////////////////////-->

 </div>
</body>
</html>



Das mit dem Einrücken is so ne Sache, wenn man es vom Editor hie rein kopiert... werds jetzt aber auch nicht verbessern ;)
Gibt es eigendlich keine programme, die das einrücken übernehen? In AS (FLASH) war das immer geil, da musste man nur auf einen Button klicken und schon war alles ordendlich.



Die Datenbank sieht vollgendermasen aus (usr_xxxxx_1-> dooz_anmeldeliste):

Quellcode

1
2
3
4
5
6
7
id - int - unsigned - auto_increment - (primärschlüssel)
vorname  - varchar(30) - / - / 
nachname - varchar(30) - / - /
gebtimestamp - int - unsigned - /
plz - mediumint - unsigned - /
ort -  varchar(50) - / - /
team - varchar(50) - / - /



Wenn man z.b. etwas vergisst einzutippen und aufgefordert wird, das zu korigieren, bleiben die Daten, die man davor noch eingetragen hatte erhalten. Nicht so wie bei manch anderen kontaktformularen oder anmeldeseiten >.<. Das mit javascript zu löschen wäre warscheinlich besser gewesen, allerdings bin ich noch nciht so weit, das ich gleich alles, was ich noch nie gemacht habe einfach sofort ausproieren. ;)
Your effort to remain what you are is what limits you.
-Ghost in the Shell

XyLoN

Anfänger

Beiträge: 34

Registrierungsdatum: 23. Juli 2008

Beruf: Fachinformatiker für Systemintegration

  • Nachricht senden

2

Dienstag, 8. Dezember 2009, 12:40

Re: anmelde Seite in PHP (Source)

Da es in diesem code recht schwer/umständlich ist, sich gegen Angreifer zu schützen, würde ich jedem Programmierer ans Herz legen, die SQL-Abfrage über eine PDO und ein Prepare-Statement zu realisieren.

Da bei einer SQL-Abfrage, wie z.B. einem einfachen Login die eingegebenen Daten des User überprüft und schließlich über beispielsweise mysql_query() an die Datenbank übergeben werden, hat der User hier natürlich die Möglichkeit sogenannte escape zeichen oder sonstige SQL-Schnipsel gegen Euch zu verwenden.


Dieses Problem lässt sich einfach umgehen, indem Ihr wie folgt vorgeht:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
$dbc = new PDO("mysql:host=$host;dbname=$db", "$user", "$pwd"); // Datenbankverbindung aufbauen
$sql = "SELECT * FROM abc WHERE X = :irgendwas"; //Abfrage definieren

$stmt = $dbc->prepare($sql); //Die Abfrage vorbereiten
$stmt->bindParam(':irgendwas', $userid); //Gegebenenfalls Variablen übergeben

if($stmt->execute()) //Die SQL-Abfrage ausführen und überprüfen ob diese auch wirklich ausgeführt wurde
{
 while ($result = $stmt->fetch(PDO::FETCH_ASSOC)){ //Ausgabe ein einen Array packen - vergleichbar mit sql_fetch_array()
  echo "Die id des User ist" . $data->id; //Auslesen der Daten
 }
}



Gruß
xylon
&lt;?php echo &quot;Hello World&quot;; ?&gt;

If you want to reach the sky, fuck a duck and try to fly!

Social bookmarks