"We are back" « oc.at

[Solved] if anweisung in php

bambooS 08.02.2009 - 14:43 2306 21
Posts

Hansmaulwurf

u wot m8?
Avatar
Registered: Apr 2005
Location: VBG
Posts: 5639
Zitat von bambooS
Das mit der sql-injections werd ich machen.
Dafür solltest auch ein bischen Zeit nehmen, und das in Ruhe extra durchgehen ;) Ist nur damit man keinen Schadcode einschleussen kann ;)

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4303
im grunde ist das if so gar nicht nötig. denn daß der benutzer zu einem der beiden teams gehört hast du ja schon im sql überprüft. es würde daher eigentlich reichen zu überprüfen ob 0 zeilen zurückgeliefert werden oder nicht.

generell schaut der code derzeit richtig aus. dürfte daher eher an einer nicht geposteten zeile liegen

bambooS

OC Addicted
Avatar
Registered: Oct 2005
Location: Vienna
Posts: 672
Nun gut. Habe es wiederrum angepasst und jetzt sieht es so aus (es wird auch nur noch mehr dieser Code ausgeführt. Alles andere habe ich auskommentiert):

Code: PHP
$Form_ID = $_REQUEST['Form_ID']; 
if($Form_ID == '46') //hier soll später dann nur auf Form_ID != NULL überprüft werden
{ 
$Team_ID1 = $_REQUEST['Team_ID1']; 
$Team_ID2 = $_REQUEST['Team_ID2'];

$query = "SELECT Id, Nickname, teamlink FROM tbl_benutzerdaten WHERE"; 		
$query .= " (Nickname like '".$_REQUEST["name"]."') AND (Kennwort = '".md5 ($_REQUEST["pwd"])."')";  		
$query .= " AND ((teamlink = '".$Team_ID1."') OR (teamlink = '".$Team_ID2."'))"; 		
$result = mysql_query( $query, GetConnection() ) or die ( mysql_error() ); 

$data = mysql_fetch_array ($result);

 if (mysql_num_rows($result) > 0) 
{  				
$_SESSION["user_id"] = $data["Id"];
$_SESSION["user_nickname"] = $data["Nickname"];
header("Location:ergebnis.php?TeamID=".$Form_ID); 						 				
}
else
{ 
header ("Location: formular.php?ID=". $Form_ID ."&TeamID1=" .$Team_ID1. "&TeamID2=" .$Team_ID2."&fehler=1");
} 
} 

Wenn ich ein berechtigtes Team eingebe, kommt wieder diese Meldung:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4303
ganz hast du es nicht ausgebessert ;)

versuch mal temalink = 1 statt teamlink ='1'

bzw. echo mal $query, falls das nicht hilft.

bambooS

OC Addicted
Avatar
Registered: Oct 2005
Location: Vienna
Posts: 672
Hab die Zeilen auf dies umgeändert.
Code: PHP
$query = "SELECT Id, Nickname, teamlink FROM tbl_benutzerdaten WHERE";
$query .= " (Nickname like '".$_REQUEST["name"]."') AND (Kennwort = '".md5 ($_REQUEST["pwd"])."')";
$query .= " AND ((teamlink = ".$Team_ID1.") OR (teamlink = ".$Team_ID2."))";
$result = mysql_query( $query, GetConnection() ) or die ( mysql_error() );

Hab das Ganze auch noch mit echos versehen und folgendes kommt raus:
Team1: 1
Team2: 5

query:
SELECT Id, Nickname, teamlink FROM tbl_benutzerdaten WHERE (Nickname like 'culpa') AND (Kennwort = 'b7ea858d1320d9ecf7e99079fdf96a9a') AND ((teamlink = 1) OR (teamlink = 5))

data:
Array ( [0] => 2 [Id] => 2 [1] => culpa [Nickname] => culpa [2] => 1 [teamlink] => 1 )


*grml*

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4303
funktioniert ja dann anscheinend eh.

bambooS

OC Addicted
Avatar
Registered: Oct 2005
Location: Vienna
Posts: 672
Jupp tut es auch!

Ich bin so vernarrt gewesen, dass ich es nicht bemerkt habe, dass ich auf die ergebnis.php umgeleitet wurde.

Dort ist irgendwo ein Fehler in einer der SQL Anweisungen.

Ich könnte mich so dermaßen ohrfeigen...

Danke kleinerChemiker für deine Geduld und Zeit. Vielen Dank.

lg
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz