Registrierung bei PHPbb

putzi

Gesperrt
Hallo!

Ich habe auf meiner Homepage eine Registrierung!
Jetzt möchte ich sie so umschreiben, sodass die daten gleich in das phpbb forum (phpbb_user) eingeschrieben werden.

Es kommt folgende Fehlermeldung:

[zitat]Die Registrierung war nicht erfolgreich! (db: phpbb_users)[/zitat]

Das script:
PHP:
<?
mysql_connect("localhost", "putz","*****") 
OR DIE ('<a class="error">Falscher Benutzername bzw. Kennwort!</a>');

mysql_select_db("board") 
OR DIE ('<a class="error">Es konnte keine Verbindung zur Datenbank hergestellt werden!</a>');

#################### Variablen #######################


$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"];
$email = $_POST["email"];
$geburtstag = $_POST["dd"];
$geburtsmonat = $_POST["mm"];
$geburtsjahr = $_POST["yy"];
$benutzername = $_POST["benutzername"];
$kennwort = $_POST["kennwort"];
$rekennwort = $_POST["rekennwort"];

#################### >>>ENDE Variablen #######################

#################### >>>Vorname #######################

if($vorname == "")
{
echo ('<a class="error"><b>Bitte Vornamen eingeben!</b></a><br>');
}
else
{
$vorname1 = 1;
}

#################### >>>Nachname #######################

if($nachname == "")
{
echo ('<a class="error"><b>Bitte Nachname eingeben!</b></a><br>');
}
else
{
$nachname1 = 1;
}

#################### >>>E-mail #######################

if (!ereg("^.+@.+\\..+$", $email))
{
echo ('<a class="error"><b>Bitte korrekte E-mail Adresse angeben!</b></a><br>');
}
else
{
$email1_2 = 1;
}


if($email == "")
{
echo ('<a class="error"><b>Bitte E-mail Adresse angeben!</b></a><br>');
}
else
{
$email1 = 1;
}



#################### >>>Geburtstag #######################

if($geburtstag == "" OR $geburtsmonat == "" OR $geburtsjahr == "")
{
echo ('<a class="error"><b>Bitte Geburtstag eingeben!</b></a><br>');
}
else
{
$geburtstag1 = 1;
}




#################### >>>Benutzername #######################

if(@mysql_num_rows (mysql_query("SELECT * FROM user WHERE benutzername = '".mysql_escape_string($benutzername)."';")) > 0){

echo ('<a class="error"><b>Dieser Benutzername existiert schon!</b></a><br>');
}
else
{
if($benutzername == "")
{
echo ('<a class="error"><b>Bitte Benutzername eingeben!</b></a><br>');
}
else
{
$benutzername1 = 1;
}
}



#################### >>>Kennwort #######################

if($kennwort !== $rekennwort)
{
echo ('<a class="error"><b>Die beiden Kennwörter stimmen nicht überein!</b></a><br><br>');
}
else
{
$kennwort1 = 1;
}

if($kennwort == "")
{
echo ('<a class="error"><b>Bitte geben Sie ein Passwort ein!</b></a><br><br>');
}
else
{
$kennwort1_2 = 1;
}

###########################user_regdate####################

$time = time();

########################user_level####################

$user = 0;

####################groupe#########

$group_type = 1; //In die Tabelle phpbb_groups!<<<<<<<<<

$groupe_description = 'Personal User';

$groupe_moderator = 0;

$groupe_single_user = 1;

#####################<<< phpbb_user_groupe //in die Tabelle phpbb_user_groupe!!

$user_pending = 0;


##########################################

if($vorname1 == 0 OR $nachname1 == 0 OR $email1 == 0 OR $benutzername1 == 0 OR $kennwort1 == 0 OR $geburtstag == 0 OR $kennwort1_2 == 0 OR $email1_2 !== 1)
{
echo ('<a href="index.php?section=reg" class="link">Zurück</a>');
}
else
{

################### >>>My SQL#####################



$ein = "INSERT INTO phpbb_users (vorname, nachname, user_email, geburtstag, geburtsmonat, geburtsjahr, username, user_password, 
user_regdate, user_level)
VALUES ('$vorname', '$nachname', '$email', '$geburtstag', '$geburtsmonat', '$geburtsjahr', '$benutzername', md5('$kennwort'), 
'$time', '$user')";

mysql_query($ein)
OR DIE ('<a class="error"><b>Die Registrierung war nicht erfolgreich! (db: phpbb_users)</b></a>');
echo ('<a class="text">Danke für deine Registrierung!<br></a><a href="index.php?section=login" class="link">Zum Login</a>');


################phpbb_groups################

$ein2 = "INSERT INTO phpbb_groups (group_type, groupe_description, groupe_moderator, groupe_single_user)
VALUES ('$group_type', '$groupe_description', '$groupe_moderator', '$groupe_single_user')";

mysql_query($ein2)
OR DIE ('<a class="error"><b>Die Registrierung war nicht erfolgreich! (db: phpbb_groups)</b></a>');
echo ('<a class="text">Danke für deine Registrierung!<br></a><a href="index.php?section=login" class="link">Zum Login</a>');


################phpbb_user_groupe################

$ein3 = "INSERT INTO phpbb_user_groupe (user_pending)
VALUES ('$user_pending')";

mysql_query($ein3)
OR DIE ('<a class="error"><b>Die Registrierung war nicht erfolgreich! (db: phpbb_user_groupe)</b></a>');
echo ('<a class="text">Danke für deine Registrierung!<br></a><a href="index.php?section=login" class="link">Zum Login</a>');
}





touch("nickpage/$benutzername.php");

?>

Am Ende werden die Daten eingeschrieben

Doch leider funktioniert das nicht!

Findet jemand den Fehler?


Danke!
 
Schreib in deine OR DIE('..') mal am Ende noch .mysql_error() rein, damit du detalierte Informationen bekommst. Also:

PHP:
OR DIE ('<a class="error"><b>Die Registrierung war nicht erfolgreich! (db: phpbb_groups)</b></a>MySql meldet: '.mysql_error());
 
Hm, hab grad mal gegooglet... Soviel ich rausbekommen hab, meint das, dass du ein als UNIQUE deklariertes Feld zweimal eintragen willst. Also das der Wert schon einal in der Datenbank steht.
 
Probier mal Folgendes:
PHP:
<?php

	mysql_connect('localhost', 'putz', '*****')
		or die('Verbindungsaufbau zum Datenbankserver schlug fehl!');
	mysql_select_db('board')
		or die('Auswahl der Datenbank schlug fehl!');

	$errors = array();

	if( !isset($_POST['vorname']) || trim($_POST['vorname']) == '' ) {
		$errors[] = 'Bitte geben Sie Ihren Vorname ein.';
	}
	if( !isset($_POST['nachname']) || trim($_POST['nachname']) == '' ) {
		$errors[] = 'Bitte geben Sie Ihren Nachnamen ein.';
	}
	if( !isset($_POST['email']) || !preg_match('/^.+@.+\.+$/', trim($_POST['email'])) ) {
		$errors[] = 'Bitte geben Sie eine gültige E-mail-Adresse an.';
	}
	if( !checkdate($_POST['mm'], $_POST['dd'], $_POST['yy']) ) {
		$errors[] = 'Bitte geben Sie Ihr Geburtsdatum ein.');
	}
	if( !isset($_POST['benutzername']) || trim($_POST['benutzername']) = '' ) {
		$errors[] = 'Bitte geben Sie Ihren gewünschten Benutzernamen an.';
	} else if( @mysql_result(mysql_query('SELECT COUNT(*) FROM `user` WHERE `benutzername` = "'.mysql_escape_string(trim($_POST['benutzername'])).'"'), 0) > 0 ) {
		$errors[] = 'Dieser Benutzername ist bereits vergeben.';
	}
	if( $_POST['kennwort'] == '' ) {
		$errors[] = 'Bitte geben Sie ein Passwort ein.';
	} else if( $_POST['kennwort'] !== $_POST['rekennwort'] ) {
		$errors[] = 'Die beiden Kennwörter stimmen nicht überein.';
	}

	while( true ) {

		if( !empty($errors) ) {
			break;
		}

		$user = 0;
		$group_type = 1; //In die Tabelle phpbb_groups!<<<<<<<<<
		$groupe_description = 'Personal User';
		$groupe_moderator = 0;
		$groupe_single_user = 1;
		$user_pending = 0;

		$query = '
			INSERT INTO
			        `phpbb_users`
			  SET
			        `vorname`       = "'.mysql_real_escape_string($_POST['vorname']).'",
			        `nachname`      = "'.mysql_real_escape_string($_POST['nachname']).'",
			        `user_email`    = "'.mysql_real_escape_string($_POST['email']).'",
			        `geburtstag`    = "'.mysql_real_escape_string($_POST['dd']).'",
			        `geburtsmonat`  = "'.mysql_real_escape_string($_POST['mm']).'",
			        `geburtsjahr`   = "'.mysql_real_escape_string($_POST['yy']).'",
			        `username`      = "'.mysql_real_escape_string($_POST['username']).'",
			        `user_password` = "'.md5($_POST['kennwort']).'",
			        `user_regdate`  = "'.time().'",
			        `user_level`    = "'.$user.'"
			';
		mysql_query($query)
			or die('Die Registrierung war nicht erfolgreich! (db: phpbb_users)');

		$query = '
			INSERT INTO
			        `phpbb_groups`
			  SET
			        `group_type`         = "'.$group_type.'",
			        `groupe_description` = "'.$groupe_description.'",
			        `groupe_moderator`   = "'.$groupe_moderator.'",
			        `groupe_single_user` = "'.$groupe_single_user.'"
			';
		mysql_query($query)
			or die('Die Registrierung war nicht erfolgreich! (db: phpbb_groups)');

		$query = '
			INSERT INTO
			         `phpbb_user_groupe`
			  SET
			         `user_pending` = "'.$user_pending.'"
			';
		mysql_query($query)
			or die('Die Registrierung war nicht erfolgreich! (db: phpbb_user_groupe)');
		echo 'Danke für deine Registrierung! Zum <a href="index.php?section=login" class="link">Login-Formular</a>.';
		touch("nickpage/$benutzername.php");
		break;
	}

	if( !empty($errors) ) {
		echo '<div class="note error"><ul>';
		foreach( $errors as $error ) {
			echo '<li>'.$error.'</li>';
		}
		echo '</ul></div>';
		echo '<a href="index.php?section=reg" class="link">Zurück zum Registrierungsformular</a>';
	}

?>
 
Hallo!

Wenn Du den SQL-Dump von phpBB unverändert übernommen hast, müsstest Du eigentlich eine ganz andere Meldung bekommen...... dass es die Tabelle nicht gibt.
Denn phpbb_user_groupe heisst richtig phpbb_user_group, also ohne "e" am Ende.

Kam mir gleich verdächtig vor..... allerdings hätte ich eher gedacht dass ein "s" an das Ende gehört.
Ich habe mir phpBB aber mal runter geladen und in den SQL-Dump gesehen..... und dort steht es halt nur als phpbb_user_group.
mysql_schema.sql hat gesagt.:
#
# Table structure for table 'phpbb_user_group'
#
CREATE TABLE phpbb_user_group (
group_id mediumint(8) DEFAULT '0' NOT NULL,
user_id mediumint(8) DEFAULT '0' NOT NULL,
user_pending tinyint(1),
KEY group_id (group_id),
KEY user_id (user_id)
);
Du solltest also mal den Tabellennamen überprüfen.

Gruss Dr Dau
 
OK, Danke an all! :)

Es funktioniert

@gumbo:

Danke für dein Script.
Ich werde es auf jeden Fall behalten :)
 
Zurück