Jump to content
- Werbung nur für Gäste -

IGNORIERT

Hab mehrere PHP Seiten Probleme auf meiner HP ...


JND3004

Recommended Posts

- Werbung nur für Gäste -

Das kann mehrer Gründe haben, schon mal geprüft ob auch wirklich der wert in der Variable ist? Und ist das Datenbankfehld tauglich für die IP ;).

Prinzipielle mal zur perfomace :)

if(isset($_POST['username']) || !isset($_POST['pass']) || !isset($_POST['email']) ||
empty($_POST['username']) || empty($_POST['pass']) || empty($_POST['email'])) {

Das ist eigentlich unsinnig... es reicht eigentlich das empty... und php ist auch wesentlich schneller empty herauszufinden als isset (bedingt durch null prüfung) sind zwar nur ms was das aussmacht ;) aber ich wollte es mal gesagt haben *g*.

Achja empty ist auch false wenn es !isset ist ;).

Link zu diesem Kommentar
Auf anderen Seiten teilen

also zur ip-adresse... hier ist der code wo auch am anfang die ip ist. was danach so kommt ist glaub ich eher unwichtig für die ip :D

$user_ip = ip2long ($_SERVER['RENOTE_ADDR']);

$sql = '
	INSERT INTO
				user
				(Username, Password, Email, IP, date)

	VALUES
				(?, ?, ?, ?, NOW())';

$stmt = $db->prepare($sql);
$stmt->bind_param('sssi', $_POST['username'], $_POST['pass'], $_POST['email'], $user_ip);

if(!$stmt->execute()) {

if(strpos($db->error, 'Duplicate') !== false) {
	$error_msg = "Der Benutzername oder die E-Mail wurde bereits verwendet.";
	} else {

$error_msg = "Es ist ein Fehler aufgetreten.";
}
return;
}

$stmt->close();

$success_msg = "Das Benutzerkonto ".htmlspecialchars($_POST['username'])." wurde erfolgreich angelegt";
?>

**********************************

und dann noch eine sache. ich habe eben zwei meiner freunde geben sich versuchen zu regis. auf meiner seite. aber bei beiden kam der fehler das die email adresse bereits verwendet wird? wieso?

Link zu diesem Kommentar
Auf anderen Seiten teilen

- Werbung nur für Gäste -

Es heißt REMOTE_ADDR und nicht RENOTE_ADDR, das dürfte der fehler sein warum es mit der ip nicht geht. ^^

das Problem mit der Fehlermeldung liegt daran das bei der Zeile mit dem $stmt->bind_param kein [0] hinter und [pass] ist

habs geändert wie du es jzt gesagt hast. code lautet jzt so

$user_ip = ip2long ($_SERVER['REMOTE_ADDR']);

$sql = '
	INSERT INTO
				user
				(Username, Password, Email, IP, date)

	VALUES
				(?, ?, ?, ?, NOW())';

$stmt = $db->prepare($sql);
[b]zeile 68: $stmt->bind_param('sssi', $_POST['username'], $_POST['pass'][0], $_POST['email'][0], $user_ip);[/b]

if(!$stmt->execute()) {

if(strpos($db->error, 'Duplicate') !== false) {
	$error_msg = "Der Benutzername oder die E-Mail wurde bereits verwendet.";
	} else {

$error_msg = "Es ist ein Fehler aufgetreten.";
}
return;
}

$stmt->close();

$success_msg = "Das Benutzerkonto ".htmlspecialchars($_POST['username'])." wurde erfolgreich angelegt";
?>

wenn ich mich jzt versuche zu registrieren, dann meint er jzt

Fatal error: Only variables can be passed by reference in /data/multiserv/users/703938/projects/1873530/www/phpinclude/db/registration_logic.php on line 68

in meiner db möchte er das auto_increment nicht akzeptieren. ich hatte es auch schon versucht nachträglich es einzutragen. aber hier nochmal ein pic

leoskpnhj4pu.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

so sieht es jzt aus

$user_ip = ip2long ($_SERVER['REMOTE_ADDR']);

$sql = '
	INSERT INTO
				user
				(Username, Password, Email, IP, date)

	VALUES
				(?, ?, ?, ?, NOW())';

$stmt = $db->prepare($sql);
$_POST['pass'][0];
$_POST['email'][0];
$stmt->bind_param('sssi', $_POST['username'], $pass, $email, $user_ip);

if(!$stmt->execute()) {

if(strpos($db->error, 'Duplicate') !== false) {
	$error_msg = "Der Benutzername oder die E-Mail wurde bereits verwendet.";
	} else {

$error_msg = "Es ist ein Fehler aufgetreten.";
}
return;
}

$stmt->close();

$success_msg = "Das Benutzerkonto ".htmlspecialchars($_POST['username'])." wurde erfolgreich angelegt";
?>

aber wenn ich mich registr. möchte meint er "Es ist ein Fehler aufgetreten"

Link zu diesem Kommentar
Auf anderen Seiten teilen

habs eben nur mal aktualiesiert um die neue meldung zu sehen

Es ist ein Fehler aufgetreten.Column 'Password' cannot be null

$user_ip = ip2long ($_SERVER['REMOTE_ADDR']);

$sql = '
	INSERT INTO
				user
				(Username, Password, Email, IP, date)

	VALUES
				(?, ?, ?, ?, NOW())';

$stmt = $db->prepare($sql);
$_POST['pass'][0];
$_POST['email'][0];
$stmt->bind_param('sssi', $_POST['username'], $pass, $email, $user_ip);

if(!$stmt->execute()) {

if(strpos($db->error, 'Duplicate') !== false) {
	$error_msg = "Der Benutzername oder die E-Mail wurde bereits verwendet.";
	} else {

$error_msg = "Es ist ein Fehler aufgetreten." . $db->error;
}
return;
}

$stmt->close();

$success_msg = "Das Benutzerkonto ".htmlspecialchars($_POST['username'])." wurde erfolgreich angelegt";
?>

ich weis sonst nicht wie du es meinst. oder hab ich es falsch gemacht?

Link zu diesem Kommentar
Auf anderen Seiten teilen

- Werbung nur für Gäste -

Scheinbar kein freund von Arrays

Einfach die Zeile durch folgendes ersetzten:

$pass = $_POST['pass'][0];
$email = $_POST['email'][0];
$stmt->bind_param('sssi', $_POST['username'], $pass, $emai, $user_ip);

das meine ich.

Bei dir fehlt "$pass = " und "$email = "

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eindeutig dein primary hat kein auto_increment ;) du kannst im endeffekt nur einen Datensatz anlegen da du in deinem query nicht festlegst welche id der neue datensatz bekommt *g*. Wenn ich das so richtig sehe, weiß aber nicht wie das db script funktioniert was du verwendet ;).

Link zu diesem Kommentar
Auf anderen Seiten teilen

- Werbung nur für Gäste -

hab eben nochmal versucht das auto_increment hinzuzufügen und es hat jzt plötzlich geklappt.

den acc hat er angelegt. ip hat er gespeichert. aber beim pw hat er als verschlüsselung nur eine "9" eingetragen. das ist das gleiche pw wie von meinem hauptkonto. aber dort hat er die verschlüsselung komplett hingeschrieben

EDIT: ich bedanke mich jzt nochmal herzlichst die mir geholfen haben diese probleme zu beheben. ich werde jzt nochmal alles auf herz und nieren prüfen. danach melde ich mich nochmal :)

also beim einloggen möchte die daten nicht akzeptieren. er meint die daten wären falsch.

EDIT: hier nochmal ein pic aus der datenbank da er die verschlüsselung nicht macht

vragj9xat1oa.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.
Wende dich an einen Admin, wenn du in diesem Thema etwas posten möchtest.

×
×
  • Neu erstellen...