Mit ID datenbankabfrage

bhalili

Mitglied
Hallo Leute, ich hab ein kleines Problem mit meiner Datenbankabfrage. Mit einem Link übergebe ich die ID an das Script email (mail.php?id=$id), und mein Mailscript das die ID übernehmen sollte sieht so aus:

PHP:
<?php
if (isset($HTTP_GET_VARS))
extract($HTTP_GET_VARS);
if (isset($HTTP_POST_VARS))
extract($HTTP_POST_VARS);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	
	<head>
		<title>E-Mail</title>
	</head>
	
<body bgcolor="#FFFFFF">

<p>
	<b>Kontakt </b>
	<form action="mail.php" method="get">
	   Betreff: <br>
	   <input type="Text" name="subject" value=""><br>
	   Deine E-mail: <br>
	   <input type="Text" name="absender" value=""><br>
	   Mail:<br>
	   <textarea name="message" value="" rows="7" cols="25"></textarea>
	   <br>
	   <br>
	   <input type="Submit" name="send" value="Mail senden">
	</form>
</p>

<p>
	<?php

    
// Verbindung mit Anzeigen
$dbhandle = mysql_connect("localhost","***","****"); 
$db = mysql_select_db("****", $dbhandle);
$result = mysql_query ("SELECT * FROM BI_firma WHERE id = '$id'");



$emailanzeige = mysql_result($result,"0","e_mail");	


	$to = "$emailanzeige"; //empfänger e-mail
	
	if($send == "Mail senden")
	{
		

		$header = "From: \"".$absender."\" <".$absender.">\n";
		
		if ($send <>"" && eregi("^[_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,3}\$", $absender) && $message != "" && $subject != "")
			$res = mail ($to,$subject,$message.'<br><br><br>Absender: '.$absender.'<br> IP: '.$REMOTE_ADDR,$header);
		
		if ($res)
			echo "<font color=green><b>Mail erfolgreich an $to versendet!</b></font>";
		else
			echo "<font color=red><b>Fehler!<br>Bitte füll alle Felder aus und gib eine korreckte E-Mail an!</b></font>";
	
 }

	?>
</p>
</body>
</html>

Das funktioniert aber nicht. Wenn ich aber bei der selectabfrage eine ID per Hand eingebe anstatt über den Link, funktioniert alles. Bitte um Hilfe, ich hab gestern den ganzen Abend verschiedene Möglichkeiten ausprobiert.
 
Die langen Superglobals sollte man nicht mehr nehmen! Verwende stattdessen $_GET, $_POST, $_SESSION, $_COOKIE usw.

Auch würde ich das extract nicht benutzen, denn dafür kannst du entweder register_globals auf on stellen oder $_REQUEST benutzen. Und beide Möglichkeiten sind nicht unbedingt sicher.

Also wenn du zum Beispiel per URL die Daten holen willst (sagen wir mal die Variable 'id'), dann machst du das mit dem:

PHP:
$_GET['id']

Es ist vielleicht ein wenig mehr Schreibaufwand, aber auf jeden Fall nicht so anfällig für Sicherheitslücken!
 
Du musst der variablen $id erstmal einen Wert zuweisen. Die Variable ist ja noch leer, und $HTTP_GET_VARS und $HTTP_POST_VARS sind veraltet, benutze anstelle dessen $_GET und POST!

Also:

PHP:
$id = $_get['id'];
 
Wenn die register_globals = off sind, kann das so nicht gehen

Versuch mal

PHP:
$result = mysql_query ("SELECT * FROM BI_firma WHERE id = $_GET['id']");
 
Wenn ich per Get die ID hole z.B. mit $id = $_GET['id']; erhalte ich die Fehlermeldung

Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 3 in /home/httpd/vhosts/eventpages.de/httpdocs/mail.php on line 42
 
BSA hat gesagt.:
Du musst der variablen $id erstmal einen Wert zuweisen. Die Variable ist ja noch leer, und $HTTP_GET_VARS und $HTTP_POST_VARS sind veraltet, benutze anstelle dessen $_GET und POST!

Also:

PHP:
$id = $_get['id'];

Theoretisch müsste das schon so gehen, wie er es geschrieben hat, da er ja die Funktion "extract();" benutzte. Diese bewirkt, dass für jedes Array-Element eine Variable erstellt wird, welche den Namen des Array-Keys hat. In diesem Falle wollte er mit dem hier:

PHP:
extract($HTTP_GET_VARS);

erreichen, dass er $id bekommt.
 
Hallo exxe wenn ich das so
PHP:
$result = mysql_query ("SELECT * FROM BI_firma WHERE id = $_GET['id']");
einfüge erhalte ich die Fehlermeldung

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /home/httpd/vhosts/eventpages.de/httpdocs/mail.php on line 32
 
Zurück