Register-Script Problem!

sonnySTAR

Erfahrenes Mitglied
Hallo liebe User und Userinnen,

Ich habe vor kurzem an einem Registrierungs-Script gebastelt. Leider ging irgendwas da drinne wohl schief ^^. Ich habe eine register.php und eine do_register.php. Wenn sich nun einer Registriert kommt "Ihre Registrierung ist erfolgreich abgeschlossen, bitte überprüfen sie Ihren Post-eingang"... dann leitet es mich weiter auf eine seite bei dem ein error kommt: "Ihr benutzername muss länger als 1 Zeichen betragen. Bitte geben sie eine gültige Emailadresse an (host@domain.de)!" ... Wenn ich dann aber in meinen Posteingang schaue, habe ich eine email bekommen mit meinen Daten. Alle daten stimmen bis auf das Passwort. und wenn ich in PHPMyadmin schaue, wurde auch kein Eintrag in die Tabelle geschrieben. Woran liegt es ? wäre nett wenn mir jemand helfen könnte

register.php:
PHP:
<?
// AUSGABE FEHLERMESSAGE
$errmsg = urldecode($errmsg);
echo "<span class=\"text\"><center><b><font color=\"#585858\">$errmsg</font></b></center></span>";

if(empty($registered))
{
?>
<table width="525"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="521" height="28" class="content_head"><table width="100%"  border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="3%"></td>
        <td width="95%" height="3"></td>
        <td width="2%"></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td class="news_text_head"><div align="left"><b>Registrierung</b></div></td>
        <td>&nbsp;</td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td class="cont_head2" height="15"><table width="525"  border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="10"></td>
        <td width="501" class="news_text_unter"><div align="right">Status: Daten eingeben</div></td>
        <td width="14"></td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td height="80" align="center" valign="top" class="cont_body"><table width="525"  border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td width="10">&nbsp;</td>
            <td width="510"><div align="left">                <table width="100%"  border="0" cellspacing="0" cellpadding="0">
			<form name="register" action="do_register.php" method="post">
                  <tr>
                    <td>Nickname:</td>
                    <td><span class="text"><span class="Stil17">
                      <input type="text" name="register[username]" size="30" class="form">
                    </span></span></td>
                  </tr>
                  <tr>
                    <td>Name:</td>
                    <td><span class="text"><span class="Stil17">
                      <input type="text" name="register[uservname]" size="30" class="form">
                    </span></span></td>
                  </tr>
                  <tr>
                    <td>Geburtstag:</td>
                    <td><span class="text"><span class="Stil17">
                      <input name="register[userbirthday]" type="text" class="form" value="01.01.1970" size="13" maxlength="10" onFocus="this.value''">
                    </span></span></td>
                  </tr>
                  <tr>
                    <td>Geschlecht:</td>
                    <td><select name="register[usersex]" class="form">
								<option value="male" selected>Männlich</option>
								<option value="female">Weiblich</option>
                    </select></td>
                  </tr>
                  <tr>
                    <td>Nationalit&auml;t:</td>
                    <td><select name="register[userland]" class="form">
								<option value="unknown" selected>-- Choose --</option>
								<option value="deutschland">Deutschland</option>
								<option value="europa">Europa</option>
                    </select></td>
                  </tr>
                  <tr>
                    <td>Wohnsitz:</td>
                    <td><select name="register[usersitz]" class="form">
                      <option value="unknown" selected>-- Choose --</option>
                      <option value="deutschland">Deutschland</option>
                      <option value="europa">Europa</option>
                    </select></td>
                  </tr>
                  <tr>
                    <td>&nbsp;</td>
                    <td>&nbsp;</td>
                  </tr>
                  <tr>
                    <td>E-Mail:</td>
                    <td><span class="text"><span class="Stil17">
                      <input type="text" name="register[useremail]" size="30" class="form">
                    </span></span></td>
                  </tr>
                  <tr>
                    <td>Passwort:</td>
                    <td><span class="text"><span class="Stil17">
                      <input type="password" name="register[userpw]" size="30" class="form">
                    </span></span></td>
                  </tr>
                  <tr>
                    <td>&nbsp;</td>
                    <td>&nbsp;</td>
                  </tr>
                  <tr>
                    <td colspan="2"><span class="text"><span class="Stil17">
                      <input type="submit" name="submit_register" value="register" class="form">
                    </span></span></td>
                  </tr>
				  </form>
                </table>
</div></td>
            <td width="5">&nbsp;</td>
          </tr>
          <tr>
            <td colspan="3" class="news_end" height="23"><table width="100%"  border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td width="3%" height="3"></td>
                <td width="94%"></td>
                <td width="3%"></td>
              </tr>
              <tr>
                <td>&nbsp;</td>
                <td class="news_text_unter"><table width="494"  border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td width="380" class="newsdown"><div align="left"></div></td>
                    <td width="114" class="newsdown"><div align="right"></div></td>
                  </tr>
                </table></td>
                <td>&nbsp;</td>
              </tr>
            </table></td>
          </tr>
        </table>        </td>
  </tr>
</table>
<?
}
?>

do_register.php
PHP:
<?
include('config.php');
include('functions_page.php');

### vars ###
$register[username] = $HTTP_POST_VARS['register']['username'];
$register[uservname] = $HTTP_POST_VARS['register']['uservname'];
$register[userbirthday] = $HTTP_POST_VARS['register']['userbirthday'];
$register[usersex] = $HTTP_POST_VARS['register']['usersex'];
$register[userland] = $HTTP_POST_VARS['register']['userland'];
$register[usersitz] = $HTTP_POST_VARS['register']['usersitz'];
$register[useremail] = $HTTP_POST_VARS['register']['useremail'];
$register[userpw] = $HTTP_POST_VARS['register']['userpw'];
#$register[userpw2] = $HTTP_POST_VARS['register']['userpw2'];

### umbruch, leerzeichen etc. entfernen ###
$register['username'] = str_replace("\r", '', $register['username']);
$register['username'] = str_replace("\n", '', $register['username']);
$register['username'] = str_replace(chr(160), '', $register['username']);
$register['username'] = trim($register['username']);
$_SESSION["username"] = $register['username'];

### prüfen verschiedener causalitäten ###

$read_user = mysql_query("SELECT userid FROM ".$pref."user WHERE username='".addslashes($register['username'])."'",$link);
if(mysql_num_rows($read_user) > 0)
{
	$errmsg .= "Benutzername bereits vergeben.<br>";
}

$read_user = mysql_query("SELECT userid FROM ".$pref."user WHERE useremail='".addslashes($register['useremail'])."'",$link);
if( mysql_num_rows($read_user) > 0 )
{
	$errmsg .= "Benutzer mit angegebener Emailadresse (".$register[useremail].") bereits registriert.<br>
	Falls sie ihr Passwort vergessen haben klicken sie <a href=\"send_password.php\">hier</a> um es sich zuschicken zu lassen.";
}

if( strlen($register['username']) > 25)
{
	$errmsg .= 'Benutzername muss kürzer als 25 Zeichen sein!<br>';
}

if( strlen($register['username']) < 2 )
{
	$errmsg .= 'Benutzername muss länger als 1 Zeichen sein!<br>';
}

if( !ereg("\.", $register['useremail']) OR !ereg("\@", $register['useremail']) OR ereg(" ", $register['useremail']) )
{
	$errmsg .= "Bitte geben sie eine g&uuml;ltige Emailadresse an (host@domain.de)!<br>";
}

### check nach nicht erlaubten zeichen im username ###
$allowedchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ _.-|()[]{}äÄöÖüÜß0123456789";

for( $i = 0; $i < strlen($register['username']); $i++ )
{
	$char = substr($register['username'], $i, 1);
	if( !strstr($allowedchars, $char) )
	{
		$errmsg .= "Ihr Benutzername enth&auml;lt ung&uuml;ltige Zeichen!<br>";
		break;
	}
}

### ###
if(strlen($errmsg) < 1)

{

### speichern der registrierung ###

#$register['userpw'] = substr(md5(microtime()), 0, 6);

$time = time();

#if( !$register['userpw'] )
#{
	#textbox('Fehler', 'Bitte geben Sie ein Passwort an');
#}
#$pass = md5($register['userpw']);
$pass = md5($_POST['userpw']);
$username = $_POST['username'];
$uservname = $_POST['uservname'];
$userbirthday = $_POST['userbirthday'];
$usersex = $_POST['usersex'];
$userland = $_POST['userland'];
$usersitz = $_POST['usersitz'];
$useremail = $_POST['useremail'];
$result = mysql_query("INSERT INTO new_user SET username = '$username', uservname = '$uservname', userpw = '$pass', userbirthday = '$userbirthday', usersex = '$usersex', userland = '$userland', usersitz = '$usersitz', useremail = '$useremail'",$link);

$register[userid] = mysql_insert_id();

mail("$register[useremail]","Registrierung bei kasHiroianer.de","Hi $register[username],
Du hast Dich auf der kasHiroianer (http://www.kasHiroianer.de) Clanseite erfolgreich regestriert! Hier sind nun deine Logindaten:
username: $register[username]\nemail: $register[useremail]\npassword: $pass", 
"From: pageadmin <planuX@gmx.de>");

echo 'Deine Registration wurde erfolgreich abgeschlossen, bitte überprüfen sie ihren Posteingang! sie werden in 3 sekunden weitergeleitet';
echo '<meta http-equiv="refresh" content="3" URL="http://www.e-doggz.de/secret/">';

$err = 102;

}

if(strlen($err) > 0)
{
	header("Location: index.php?err=$err&registered=1");
}
if(strlen($errmsg) > 0)
{
	$errmsg = urlencode($errmsg);
	header("Location: index.php?cont=register&errmsg=$errmsg");
}
?>

Vielen Dank im Vorraus an euch ;)
 
Zuletzt bearbeitet:
Probier mal Folgendes:
PHP:
<?php

	include 'config.php';
	include 'functions_page.php';

	### vars ###
	$register = $_POST['register'];
	$errors = array();

	### umbruch, leerzeichen etc. entfernen ###
	$register['username'] = trim(preg_replace('/(?:\x0A|\x0D\x0A|\x0D|\x0C|0xA0)/', '', $register['username']));
	$_SESSION['username'] = $register['username'];

	### prüfen verschiedener kausalitäten ###

	$query = "
		SELECT
		        1
		  FROM
		        `".$pref."user`
		  WHERE
		        `username` = '".mysql_real_escape_string($register['username'])."'
		";
	if( mysql_num_rows(mysql_query($query, $link)) > 0 ) {
		$errors[] = 'Benutzername bereits vergeben.';
	}

	$query = "
		SELECT
		        1
		  FROM
		        `".$pref."user`
		  WHERE
		        `useremail` = '".mysql_real_escape_string($register['useremail'])."'
		";
	if( mysql_num_rows(mysql_query($query, $link)) > 0 ) {
		$errors[] = 'Benutzer mit angegebener Emailadresse ('.$register['useremail'].') bereits registriert.<br>Falls Sie Ihr Passwort vergessen haben, klicken Sie <a href="send_password.php">hier</a> um es sich zuschicken zu lassen.';
	}

	if( strlen($register['username']) > 25) {
		$errors[] = 'Benutzername muss kürzer als 25 Zeichen sein!';
	}

	if( strlen($register['username']) < 2 ) {
		$errors[] = 'Benutzername muss länger als 1 Zeichen sein!';
	}

	if( !preg_match('/\./', $register['useremail']) || !preg_match('/@/', $register['useremail']) || preg_match('/ /', $register['useremail']) ) {
		$errors[] = 'Bitte geben Sie eine gültige E-Mail-Adresse an (Beispiel: host@domain.de)!';
	}

	### check nach nicht erlaubten zeichen im username ###
	if( preg_match('/[^a-zA-Z0-9 _.\-|()\[\]{}äÄöÖüÜß]/', $register['username']) ) {
		$errors[] = 'Ihr Benutzername enthält ungültige Zeichen!';
	}

	### ###
	if( count($errors) < 1 ) {

		### speichern der registrierung ###

		#$register['userpw'] = substr(md5(microtime()), 0, 6);
		$time = time();

		/*
			if( !$register['userpw'] ) {
				textbox('Fehler', 'Bitte geben Sie ein Passwort an');
			}
		*/
		$query = "
			INSERT INTO
			        `new_user`
			  SET
			        `username`     = '".mysql_real_escape_string($register['username'])."',
			        `uservname`    = '".mysql_real_escape_string($register['uservname'])."',
			        `userpw`       = '".md5($register['userpw'])."',
			        `userbirthday` = '".mysql_real_escape_string($register['userbirthday'])."',
			        `usersex`      = '".mysql_real_escape_string($register['usersex'])."',
			        `userland`     = '".mysql_real_escape_string($register['userland'])."',
			        `usersitz`     = '".mysql_real_escape_string($register['usersitz'])."',
			        `useremail`    = '".mysql_real_escape_string($register['useremail'])."'
			";
		$result = mysql_query($query, $link);

		$register['userid'] = mysql_insert_id();

		mail($register['useremail'], 'Registrierung bei kasHiroianer.de', "Hi ".$register['username'].",
Du hast Dich auf der kasHiroianer (http://www.kasHiroianer.de) Clanseite erfolgreich regestriert! Hier sind nun deine Logindaten:
username: ".$register['username']."\nemail: ".$register['useremail']."\npassword: ".$register['userpwd'],
'From: pageadmin <planuX@gmx.de>');

		echo 'Deine Registration wurde erfolgreich abgeschlossen, bitte überprüfen sie ihren Posteingang! sie werden in 3 sekunden weitergeleitet';
		echo '<meta http-equiv="refresh" content="3" URL="http://www.e-doggz.de/secret/">';

		$err = 102;

	}

	if( strlen($err) > 0 ) {
		header('Location: index.php?err='.$err.'&registered=1');
	}
	if( count($errors) > 0 ) {
		echo '<ul>';
		echo '<li>'.join('</li><li>', $errors).'</li>';
		echo '</ul>';
		// header('Location: index.php?cont=register&errmsg='.$errmsg);
	}

?>
 
Danke für deine schnelle Antwort. Folgendes Problem taucht jetzt auf:

Parse error: parse error, unexpected ';' in /customers/e-doggz.de/e-doggz.de/httpd.www/secret/do_register.php on line 70

Das ist folgende Zeile:
$pass = ;

Wie muss ich es umändern ? oder brauch ich das gar nicht mehr und kann es mit einem Rautezechen versehen ? ;P ...
 
Nun bekomme ich folgende Fehlermeldung:

* Benutzername muss länger als 1 Zeichen sein!
* Bitte geben sie eine gültige E-Mail-Adresse an (Beispiel: host@domain.de)!


als Benutzername habe ich "Test-User" genommen. Und für die Email habe ich "sonnySTAR[atforspam]gmx.de" verwendet ...

Das Teil bringt mich noch zum weinen ;)
 
Ich hab da was nicht ganz verstanden ist

* Benutzername muss länger als 1 Zeichen sein!
* Bitte geben sie eine gültige E-Mail-Adresse an (Beispiel: host@domain.de)!


deine Fehlermeldung
oder was anderes?
 
also ich habe nun den code von Gumbo genommen. Nun sobald ich mich registrieren will kommt die Fehlermeldung! Hab aber richtige email und richtigen nickname angegeben :-/

*ausflipp* ^^
 
Zurück