Was ist hier falsch?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
arbeiten
auftritt
benutzerdaten
betreff
code
fehler
http
manual
oleander
post
raten
semikolon
set
syntax
test
text
update
url
wissen
zeile
-
Hi!
Ich habe gerade was ausprobiert, und es gab einen Fehler.
Was ist hier falsch?
<?php $aktivierungscode = mt_rand(); mysql_query("INSERT INTO benutzerdaten SET aktivierungscode = '$activierungscode' WHERE Nickname = '"$_POST['username']"'") $empfaenger = "'$_POST['mail']'"; $betreff = "Aktivierungsmail von SchülerSV.eu"; $from = "From: Test <absender@domain.de>"; $text = "Bitte bestätige deinen Account unter: http://www.schuelersv.eu/activated.php?code=$aktivierungscode . Viel Spaß noch !"; mail($empfaenger, $betreff, $text, $from); ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
mysql_query("INSERT INTO benutzerdaten SET aktivierungscode = '$activierungscode' WHERE Nickname = '"$_POST['username']"'")
Da bei dem Post-Nickname fehlt der Verkettungsoperator "." -
nikic schrieb:
mysql_query("INSERT INTO benutzerdaten SET aktivierungscode = '$activierungscode' WHERE Nickname = '"$_POST['username']"'")
Da bei dem Post-Nickname fehlt der Verkettungsoperator "."
Leider geht es immer noch nicht..
Bis jetzt sieht es so aus:
$aktivierungscode = mt_rand(); mysql_query("INSERT INTO benutzerdaten SET aktivierungscode = '$activierungscode' WHERE Nickname = '".$_POST['username']."'") $empfaenger = "'$_POST['mail']'"; $betreff = "Aktivierungsmail von SchülerSV.eu"; $from = "From: Test <absender@domain.de>"; $text = "Bitte bestätige deinen Account unter: http://www.schuelersv.eu/activated.php?code=$aktivierungscode . Viel Spaß noch !"; mail($empfaenger, $betreff, $text, $from);
-
$aktivierungscode = mt_rand(); mysql_query("INSERT INTO benutzerdaten (aktivierungscode) VALUES ( '$activierungscode') WHERE Nickname = '".$_POST['username']."'") $empfaenger = $_POST['mail']; $betreff = "Aktivierungsmail von SchülerSV.eu"; $from = "From: Test <absender@domain.de>"; $text = "Bitte bestätige deinen Account unter: http://www.schuelersv.eu/activated.php?code=$aktivierungscode . Viel Spaß noch !"; mail($empfaenger, $betreff, $text, $from);
Du kannst bei INSERT nicht mit SET arbeiten!
Beitrag zuletzt geändert: 12.5.2009 20:52:39 von cookies -
tct schrieb:
cookies schrieb:
Du kannst bei INSERT nicht mit SET arbeiten!
Dann solltest du aber mal das MySQL-Manual lesen.
@chathc
Es wäre ganz hilfreich noch die Zeilenummer zu wissen bzw. in welcher Zeile der Fehler auftritt.
Das lässt uns weniger raten.
Achso, der Fehler lautet:
Parse error: syntax error, unexpected T_VARIABLE in /home/webpages/lima-city/chathc/html/seiten/anmelden.php on line 294
Das ist im obigen Script die Zeile 7 ungefähr
EDIT: Die Zeile 294 ist genau die Zeile:
$betreff = "Aktivierungsmail von SchülerSV.eu";
Beitrag zuletzt geändert: 12.5.2009 21:43:34 von chathc -
Ändere diese Zeile
mysql_query("INSERT INTO benutzerdaten (aktivierungscode) VALUES ( '$activierungscode') WHERE Nickname = '".$_POST['username']."'")
bitte in
mysql_query("INSERT INTO benutzerdaten (aktivierungscode) VALUES ( '".$aktivierungscode."') WHERE Nickname = '".$_POST['username']."'");
Es fehlte auf jeden Fall das Semikolon am Ende (da dürfte auch der genannte Fehler herkommen). Dann hattest du $activierungscode (also mit "c" statt "k") geschrieben.
Gruß
Karlja -
Danke es geht!
Die Aktivierungsmail wird auch verschickt.
Allerdings gibt es in der activated.php einen Fehler:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/webpages/lima-city/chathc/html/activated.php on line 6
Hier die Datei:
<?php include ("sql.php"); ?> <?php @mysql_query("UPDATE benutzerdaten SET activated = '1' WHERE Nickname = '".$user."' AND aktivierungscode = '$_GET['code']'"); ?>
Außerdem hätte ich gerne noch, das ein Text bei erfolgreichem Aktivieren ausgegeben wird !
Beitrag zuletzt geändert: 13.5.2009 15:37:07 von chathc -
<?php include ("sql.php"); ?> <?php @mysql_query("UPDATE benutzerdaten SET activated = '1' WHERE Nickname = '".$user."' AND aktivierungscode = '$_GET['code']'"); ?>
Nix mit @!
activated = '1'
Ist (ich geh davon aus) ein Integer. Also wäre
activated = 1
besser.
'$_GET['code']'"
Afaik kannst du auf eine GET-Variable nicht so zugreifen, dass musst du so machen:
= '".$_GET['code']."'
Hoffe es hilft, aber ich glaube der von dir ausgegebene Error wird damit nicht behoben... -
mysql_query("INSERT INTO benutzerdaten (aktivierungscode) VALUES ( '".$aktivierungscode."') WHERE Nickname = '".$_POST['username']."'");
Juhu, wie heißt denn die Seite?
Sieht mir nach ner Schönen Quelle für E-Mails und Private Daten aus.
Ne, jetzt, mal ehrlich, der Code ist so unsicher wie er grottig ist.
Schau dir mal mindestens das hier an.
lg
Oleander -
Hallo,
zu deiner eigenen sicherheit empfehle ich dir, nicht nur
$_POST['username']
zu schreiben. geschickte hacker schreiben dann da sowas als username wie ich';DROP benutzerdaten, und schon ist deine tabelle futsch. schreib lieber
mysql_escape_string($_POST['username'])
das schützt dich davor.
Gruß Tillorgias -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage