registration

Rev

Erfahrenes Mitglied
hi!
ich hab nen problem mit nem selbsgeschriebenen registrationsfile.. ich find den fehler einfach nicht!

PHP:
<?php

////////////////////////////////////////
//
// REGISTER-FILE
//
// Author: Marc Lindemann
// Funktion: Registration der User
// Erstellt: 02.04.2002
// Gedndert: 06.05.2002
//
///////////////////////////////////////
$zone=0;

// include important things...
include("../include/util.inc.php"); // not used at the moment
include("../include/prepend.php3");
require("zone_".$zone."/config.inc.php");
// ####### Connect zur DB #######
$db = new db_sql();



//some security notes
$errormessage="";
$url="";

// Nicküberprüfung

if ($service=="step0")
{

 // ####### Erstellen einer ZUfallszahl für den Bildcheck #######

 srand((double)microtime()* 1000000);
 $nummer=rand();
 $nummer=round($nummer);
 $nummer=substr($nummer,0,8);

 // ####### ENDE #######

 // ####### Zwischenspeichern in der DB #######

 $ip = getenv(REMOTE_ADDR);
 $db = new db_sql();
 $db->query("insert into bildcheck (id,nummer,ip) values('NULL','$nummer','$ip'");

 // ####### ENDE #######

} // service 0 ende

if ($service=="createregisterimage")
{
 header("Content-type: image/jpeg");
 $text="ERROR";
 $db->query("SELECT * from bildcheck where nummer='$nummer'");
 while ($Row=mysql_fetch_array($Result))
 {
  srand((double)microtime()* 1000000);
  $nummer2=rand();
  $nummer2=round($nummer2);
  $nummer2=substr($nummer2,0,4);
  $text=$nummer2;
 }
 $img=imagecreatefromjpeg("login.jpg");
 $textcol=imagecolorallocate($img,0,0,0);
 imagettftext($img,20,0,40,21,$textcol,"arial.ttf",$text);
 Imagejpeg($img);
 ImageDestroy($img);
 $db->query("UPDATE anmelden SET oksumme='$nummer2' where nummer='$nummer'");

} // Service createregisterimage ende


if ($service=="step1")
{


 // ####### Überprüfung ob Nick Existiert #######

 $nick_check=strtolower($nick);
 $db->query("SELECT nick_cs from members where nick='$nick_check'");
 if ($db->num_rows() > 0) 
 {
  $error=1;  // Wenn Nick vorhanden wird error auf 1 gesetzt
 }

 // ####### ENDE #######

 // ####### Überprüfung ob Nick / Nickpräfix gesperrt ist #######

 $db->query("SELECT * from anmeldung");
 while ($resultanmeldung->fetchInto($nicksperre))
 {
 If (strlen($nick_check)> 2)
 {
  $gesperrternick=$nicksperre[praefix];
  if (strstr($nick_check,$problem))  
  {
   $error=3;  // Nick ist gesperrt
  }
 }
  // ####### ENDE #######

  // ####### Nick auf Sonderzeichen überprüfen #######

  if (preg_match("/[^a-zA-Z0-9_\*\-]",$nick_check)) 
  {
   $error=2;    
  }

  // ####### ENDE #######


 // ####### Überprüfung ob Nick lang genug ist #######

 If (strlen($nick)<4) 
 {
  $error=4;
 }

 // ####### ENDE #######

 // ####### Datenbank auslesen, welche Felder Pflichtfelder sind #######

 $sqlrequire="SELECT * from requireanmeldung";
 $resultrequire=$db->query($sqlrequire);
 $resultrequire->fetchInto($require);
 
 // ####### ENDE #######


 // ####### Überprüfung der Emailadresse #######


 if (($require[email]==1) OR (strlen($email)>0))
 {
  $check=".+@.+\..+";
  if (eregi($check,$email))
  {
   $emailergebnis=0;
  }
  ELSE
  {
   $emailergebnis=1;
  }
 }

 // ####### ENDE #######

 // ####### Überprüfung des Passworts #######

 if (($require[password]==1) OR (strlen($password)>0))
 {
  if ($password!=$password_2) 
  {
   $pwdfalse=1;
  }
  if (strlen($password)<4)
  { 
   $pwdshort=1;
  }
 }

 // ####### ENDE #######

 // ####### Überprüfung des Geschlechts #######

 if (($require[gender]==1) OR (strlen($gender)>0))
 {
  if (($gender!="m") AND ($gender!="f"))
  {
   $genderfalse=1;
  }
 }

 // ####### ENDE #######


 // ####### Überprüfung des Geburtsjahrs #######

 if (($require[birthday]==1) OR (strlen($date_birth_yyyy)>0))
 {
  if (!checkdate($date_birth_mm,$date_birth_dd,$date_birth_yyyy))
  {
   $birthdayerror=1;    
  }
 }

 // ####### ENDE #######


 // ####### Auswertung der Eingabe der User #######

 if ($error!=0)
 {
  if ($error==1)
  {
   $errormessage=$errormessage.$errormessage[nickvorhanden];
  }
  ELSE
  {
   $errormessage=$errormessage.$errormessage[nick];
  }
 }
 if ($emailergebnis==1)
 {
  $errormessage=$errormessage.$errormessage[email];
 }
 if ($pwdfalse==1)
 {
  $errormessage=$errormessage.$errormessage[pwdfalse];
 }
 if ($pwdshort==1)
 {
  $errormessage=$errormessage.$errormessage[pwdshort];
 }
 if ($birthdayerror==1)
 {
  $errormessage=$errormessage.$errormessage[birthday];
 }
 if ($genderfalse==1)
 {
  $errormessage=$errormessage.$errormessage[gender];
 }
 // ####### ENDE #######

 // ####### Templateausgabe #######

 if (strlen($errormessage)==0)
 {
  $template="zone_".$zone."/register_form.html";
  $date_reg=time(); 
  $date_reg=$date_reg * 1000;
  $db->query("INSERT INTO members 

(nick,nick_cs,password,date_reg,reminder,gender,misc,points,date_birth_yyyy,date_birth_mm,date_birth_dd,email) 

values('$nick','$nick','$password','$date_reg','$reminder','$gender','4','0000000000010','$date_birth_yyyy','$date_birth_mm',

'$date_birth_dd','$email')");
 }
 ELSE
 {
  $template="zone_".$zone."/error.html";
 }
 $string = implode ('', @file($template));
 $string = addslashes($string);
 eval("\$string = \"$string\";");
 $string = stripslashes($string);
 echo $string;

 // ####### ENDE #######

} // ####### Schleife register_form ENDE #######


$db->disconnect(); // disconnectet von der DB


?>

fehler:
Parse error: parse error, unexpected $ in c:\programme\apache group\apache\htdocs\community\core\register.php on line 255
 
Ach wie nett:

1. Ellenlanger Quelltext, nicht als File an das Posting angehängt
2. Keine Markierung der betroffenen Zeile (meinst du, wir zählen hier 255 Zeilen ab?)
3. Keine genau Angabe der gewünschten Funktion des Scripts

Bäh. Nichts für ungut, aber wie sollen wir dir denn da helfen können?



reima
 
oh sorry *schäm*
abber schon cool das reima immer zur stelle ist *lob* ;)

also 255 ist der schluss, da steht nix besonderes drin..
wenn ich
if ($service=="step1")
{

ausklammer läuft es soweit.. ich hab jetzt mehrmals alles durchgeschaut udn denke nicht das da nen klammerfehler oder so drin ist.. das ganze ist ein registrationsscript für eine community.. die einzelnen abschnitte sind alle kommentiert und sollten soweit laufen..
 
Also da in deinem Script 30 '{' sind, aber nur 29 '}', muss da irgendein Block offen sein.

Ich tippe mal darauf, dass der Fehler hier liegt:
PHP:
// ####### Überprüfung ob Nick / Nickpräfix gesperrt ist #######

$db->query("SELECT * from anmeldung");
while ($resultanmeldung->fetchInto($nicksperre))
{
	if (strlen($nick_check)> 2)
	{
		$gesperrternick=$nicksperre[praefix];
		if (strstr($nick_check,$problem))  
		{
			$error=3;  // Nick ist gesperrt
		}
	}
} // Der hier hat gefehlt
// ####### ENDE #######


reima


PS: <--- 500 :-)
 
jo da wars auch ;)

hab jetzt noch nen prob mit meinem pc..
der meldet:
Notice: Undefined variable: service in c:\programme\apache group\apache\htdocs\community\core\register.php on line 14
la
Notice: Undefined variable: service in c:\programme\apache group\apache\htdocs\community\core\register.php on line 30

Notice: Undefined variable: service in c:\programme\apache group\apache\htdocs\community\core\register.php on line 63

Notice: Undefined variable: service in c:\programme\apache group\apache\htdocs\community\core\register.php on line 86

obwohl ich in die url ?service=step0 angehängt habe.. irgendwie stimmt da ne einstellung wohl net.. hab php 4.2.1 mit apache
 
The biggest change in PHP 4.2.0 concerns variable handling. External variables (from the environment, the HTTP request, cookies or the web server) are no longer registered in the global scope by default.The preferred method of accessing these external variables is by using the new Superglobal arrays, introduced in PHP 4.1.0.

Quelle: http://www.php.net/release_4_2_0.php

Im Klartext heißt das, dass du entweder anstatt $service $_GET['service'] schreibst, oder an den Anfang des Scriptes extract($_GET, EXTR_OVERWRITE);


reima
 
Zurück