Fehler aber wo ?

Wipeout

Erfahrenes Mitglied
N'Abend,

kriege bei folgendem Script ein fehler

Fehler

Parse error: syntax error, unexpected T_STRING in /php/download/downloads.php on line 15

Script

PHP:
<?php
ini_set("display_errors", 1);
error_reporting(E_ALL);
$verbindung = mysql_connect("$host","$uname", "$pass");
if (!$verbindung)
{
echo"<br><center><b>:::::: Keine Verbindung zur Datenbank ::::::</b></center>";
exit;
}
mysql_select_db("$db");
$auswahl="select * from wipidownload";
$sqlanfrage=mysql_query($auswahl) or die ("SQL Anfragen Error");
if ($_GET['action']==downloaden && isset($_GET['id']))
    {
	$downaus=mysql_query(select * from wipidownload where down_id==$_GET['id']);
	$daten=mysql_fetch_array($downaus);
	$zaehl=$daten['down_anzahl'];
	$zaehl=$zaehl+1;
	$update="UPDATE wipidownload SET down_anzahl='$zaehl' where down_id=$id[$_GET['id']]";
	mysql_query($update) or die ("Update nicht erfolgreich");
    print "<meta http-equiv=\"refresh\" content=\"3;URL=$daten[down_url]\">";
	print "<center><font><b>Der Download beginnt automatisch nach 3 Sekunden!<br>Wenn nicht, klicken sie <a href=\"$daten[down_url]\" target=\"_self\">hier</a><br><a href=\"index.php\">zur&uuml;ck</a></b></font></center>";
    mysql_close($verbindung);
    exit;
    }
?>
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr bgcolor="#00ADAB">
    <td><font class="black"><div align="center">Link</div></font></td>
    <td><font class="black"><div align="center">Name</div></font></td>
    <td><font class="black"><div align="center">Downloadanzahl</div></font></td>
  </tr>
<?php
while($down=mysql_fetch_array($sqlanfrage))
{
?>
  <tr>
    <td><font><div align="center"><a href="index.php?seite=download/downloads&action=downloaden&id=<?php echo $down['down_id'] ?>">Downloaden</a></div></font></td>
    <td><font><div align="center"><?php echo $down['down_name'] ?></div></font></td>
    <td><font><div align="center"><?php echo $down['down_anzahl'] ?></div></font></td>
  </tr>
<?php
}
?>
</table>
<br>

Wo hab ich einen Fehler gemacht ?
 
PHP:
$downaus=mysql_query(select * from wipidownload where down_id==$_GET['id']);
ersetzen durch
PHP:
$downaus=mysql_query("select * from wipidownload where down_id=={$_GET['id']}");
 
PHP:
$downaus=mysql_query(select * from wipidownload where down_id==$_GET['id']);
ersetzen durch
PHP:
$downaus=mysql_query("select * from wipidownload where down_id=={$_GET['id']}");

Ok, das hat geklappt danke soweit, habe das Script nun umgeschrieben und kriege zwei Fehler die ich noch nie gesehen habe.
Kannst Du mir eventuell erklären warum das so umgeschrieben wurde ?

Erstmal das umgeschriebene Script
Script

PHP:
<?php
ini_set("display_errors", 1);
error_reporting(E_ALL);
$verbindung = mysql_connect("$host","$uname", "$pass");
if (!$verbindung)
{
echo"<br><center><b>:::::: Keine Verbindung zur Datenbank ::::::</b></center>";
exit;
}
mysql_select_db("$db");
$auswahl="select * from wipidownload";
$sqlanfrage=mysql_query($auswahl) or die ("SQL Anfragen Error");
if ($_GET['action']==downloaden && isset($_GET['id']))
    {
	$downaus=mysql_query("select * from wipidownload where down_id=={$_GET['id']}");
	$daten=mysql_fetch_array($downaus);
	$zaehl=$daten['down_anzahl'];
	$zaehl=$zaehl+1;
	$update="UPDATE wipidownload SET down_anzahl='$zaehl' where down_id={$_GET['id']}";
	mysql_query($update) or die ("Update nicht erfolgreich");
    print "<meta http-equiv=\"refresh\" content=\"3;URL=$daten[down_url]\">";
	print "<center><font><b>Der Download beginnt automatisch nach 3 Sekunden!<br>Wenn nicht, klicken sie <a href=\"$daten[down_url]\" target=\"_self\">hier</a><br><a href=\"index.php\">zur&uuml;ck</a></b></font></center>";
    mysql_close($verbindung);
    exit;
    }
?>
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr bgcolor="#00ADAB">
    <td><font class="black"><div align="center">Link</div></font></td>
    <td><font class="black"><div align="center">Name</div></font></td>
    <td><font class="black"><div align="center">Downloadanzahl</div></font></td>
  </tr>
<?php
while($down=mysql_fetch_array($sqlanfrage))
{
?>
  <tr>
    <td><font><div align="center"><a href="index.php?seite=download/downloads&action=downloaden&id=<?php echo $down['down_id'] ?>">Downloaden</a></div></font></td>
    <td><font><div align="center"><?php echo $down['down_name'] ?></div></font></td>
    <td><font><div align="center"><?php echo $down['down_anzahl'] ?></div></font></td>
  </tr>
<?php
}
?>
</table>
<br>

Fehler

Notice: Undefined index: action in /php/download/downloads.php on line 13

Notice: Use of undefined constant downloaden - assumed 'downloaden' in /php/download/downloads.php on line 13
 
PHP:
if ($_GET['action']==downloaden && isset($_GET['id']))
=>
PHP:
if ($_GET['action']=='downloaden' && isset($_GET['id']))

Notice: Undefined index: action in /php/download/downloads.php on line 13
Versuch es so:
Code:
http://deine.seite.de/dein/pfad/dein_skript_name?action=downloaden
Diese Fehlermeldung kannst du wie folgt unterbinden...
PHP:
if(!isset($_GET['action']) || !empty($_GET['action'])){ echo('Variable "action" ungesetzt und/oder leer.'); die(); }
 
Zuletzt bearbeitet:
Ok der erste Fehler ist damit ausgemerzt aber der zweite noch nicht

Notice: Undefined index: action in /php/download/downloads.php on line 13

bzw ich will ja die Id mit übergeben, dein script snippet geht ja nur davon aus das action = downloaden ist oder hab ich das falsch verstanden ?

Und wenn ich dann auf downloaden klicke kriege ich diesen Fehler

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /php/download/downloads.php on line 16

Und habe eine endlosschleife :(
 
Zuletzt bearbeitet:
Prüfe mal, ob in Zeile 15 die SQL-Anfrage wirklich richtig ist.

PHP:
$downaus=mysql_query("select * from wipidownload where down_id=={$_GET['id']}");
ändern in
PHP:
$downaus=mysql_query('select * from wipidownload where down_id = "'.(int)$_GET['id'].'";');

und schau, dass deine Anfragen sicher werden.
Alles was per _GET und _POST etc übergeben wird, muss validiert werden, damit dein
Script nicht wer missbraucht um z.B. Passwörter aus der Datenbank zu klauen.

Siehe auch SQL-Injektion
 
Zuletzt bearbeitet:
und schau, dass deine Anfragen sicher werden.
Alles was per _GET und _POST etc übergeben wird, muss validiert werden, damit dein
Script nicht wer missbraucht um z.B. Passwörter aus der Datenbank zu klauen.

Siehe auch SQL-Injektion

Mit der sicherheit habe ich mich bis jetzt noch nicht wirklich beschäftigt, da ich nur für den Privat Bereich also für meine eigene Seite mit PHP arbeite ;)
 
Hi,

aber wenn jemand aus Spaß an der Freude (ja, solche gibt's) Deinen Server hackt, Deine Datenbank plattmacht, Deine Seite als Viren- oder Spamschleuder missbraucht, etc. würde Dich das nicht glücklich machen, oder? ;)

LG
 
Hi,

aber wenn jemand aus Spaß an der Freude (ja, solche gibt's) Deinen Server hackt, Deine Datenbank plattmacht, Deine Seite als Viren- oder Spamschleuder missbraucht, etc. würde Dich das nicht glücklich machen, oder? ;)

LG

*lacht* ne das mit sicherheit nicht ;)
Gibt es für die sicherheit gute tuts ?
Ich glaub ich sollte mich doch mal mehr mit PHP beschäftigen ;)
 
Prüfe mal, ob in Zeile 15 die SQL-Anfrage wirklich richtig ist.

PHP:
$downaus=mysql_query("select * from wipidownload where down_id=={$_GET['id']}");
ändern in
PHP:
$downaus=mysql_query('select * from wipidownload where down_id = "'.(int)$_GET['id'].'";');

und schau, dass deine Anfragen sicher werden.
Alles was per _GET und _POST etc übergeben wird, muss validiert werden, damit dein
Script nicht wer missbraucht um z.B. Passwörter aus der Datenbank zu klauen.

Siehe auch SQL-Injektion

Ok das hat nun geklappt nun habe ich nur noch den fehler

Notice: Undefined index: action in /php/download/downloads.php on line 13

Und kann mir mal einer erklären warum das bei PHP4 ohne Probleme lief und bei PHP 5 nun nicht mehr
 
Zurück