scriptproblem

Rev

Erfahrenes Mitglied
hi!
ich hab nen script für meine comm geschrieben, welche eine "sichere" anmeldung erlauben soll.. dies beinhaltet 2 phps

anmeldescript:
PHP:
<?php

//variabeln
$template_first="login.html";
$template_step2="step2.html";
$template_step3="step3.html";
$template_error="error.html";
$error=0;
$cookie="n";
$nickok=1;

//datenbank
require("datenbank_user.php");
$Link=mysql_connect ($Host,$User,$Password);
$Query="SELECT * from $TableName where id<>'0'";
$Result=mysql_db_query ($DBName,$Query,$Link);

while ($nicksperre=mysql_fetch_array($Result))
{
If (strlen($nick)> 0)
{
  $nick_check=strtolower($nick);
  $problem=$nicksperre[nick];
  
  if (strstr($nick_check,$problem))  
  {
   $error=1;
  }
  ELSE
  {
  $nickok=1;
  }
}

if ($step==1) 
{
$template=$template_first;
}


if (($step==2) AND ($nickok==1))
{
srand((double)microtime()* 1000000);
$nummer=rand();
$nummer=round($nummer);
$nummer=substr($nummer,0,8);
$image_reg="nummer.php?nummer=$nummer&nick=$nick";
$template=$template_step2;
// In der DB werden die ergebnisse zwischengespeichert
$Query2="INSERT INTO checksum (id,nummer,nick) values('NULL','$nummer','$nick')";
$checksum_speichern=mysql_db_query ($DBName,$Query2,$Link);
}



if (($step=="3") AND ($nickok==1))
{
$Quer3="SELECT * from checksum where checksum='$nummer'";
$tmp=mysql_db_query ($DBName,$Query3,$Link);
while ($check=mysql_fetch_array($tmp))
 {
 if ($tmp[oksumme]>0)
  {
  if ($tmp[oksumme]==$checksum)
   {
    $template=$template_step3;
   }
  ELSE
  {
  $error=2;
  }
 }
ELSE
{
$error=2;
}
}
}




// error Behandlung
if ($error==1)
{
$template=$template_error;
$message="Dein Nick ist leider nicht erlaubt";
$url="javascript:history.back(1)";
}
if ($error==2)
{
$template=$template_error;
$message="Die Eingabe des Sicherheitscode´s war falsch";
$url="javascript:history.back(1)";
}


// ausgabe der seite
$fd = fopen($template,"r");
$seite = fread ($fd, filesize ($template));
fclose ($fd);
$seite = str_replace("§nick§",$nick,$seite);
$seite = str_replace("§image_reg§",$image,$seite);
$seite = str_replace("§password§",$password,$seite);
$seite = str_replace("§password_2§",$password_2,$seite);
$seite = str_replace("§reminder§",$reminder,$seite);
$seite = str_replace("§gender§",$gender,$seite);
$seite = str_replace("§email§",$email,$seite);
$seite = str_replace("§country§",$country,$seite);
$seite = str_replace("§employment§",$employment,$seite);
$seite = str_replace("§zip§",$zip,$seite);
$seite = str_replace("§date_birth_dd§",$date_birth_dd,$seite);
$seite = str_replace("§date_birth_mm§",$date_birth_mm,$seite);
$seite = str_replace("§date_birth_yyyy§",$date_birth_yyyy,$seite);
$seite = str_replace("§homepage§",$homepage,$seite);
$seite = str_replace("§portrait§",$portrait,$seite);
$seite = str_replace("§es§",$es,$seite);
$seite = str_replace("§url_bookmark2§",$url_bookmark2,$seite);
$seite = str_replace("§url_bookmark2§",$url_bookmark3,$seite);
$seite = str_replace("§soundeffects§",$soundeffects,$seite);
$seite = str_replace("§cookie§",$cookie,$seite);
$seite = str_replace("§url§",$url,$seite);
echo $seite;
mysql_close($Link);
}
?>
imagescript
PHP:
<? 
header("Content-type: image/png");
require("datenbank_user.php");
$text="0aw";
if ($nummer<0)
{
$Link=mysql_connect ($Host,$User,$Password);
$Query="SELECT * from checksum where checksum='$nummer'";
while ($Row=mysql_fetch_array($Result))
{
srand((double)microtime()* 1000000);
$text=rand();
$text=round($nummer);
$text=substr($nummer,0,4);
$img=imagecreate(100,20);
$background=imagecolorallocate($img,230,255,230); 
$textcol=imagecolorallocate($img,0,0,0);
imagerectangle($img,0,0,30,20, $background);
imagettftext($img,10,0,5,10,$textcol,"arial.ttf",$text);
Imagepng($img);
ImageDestroy($img);
$Query2="UPDATE checksum SET oksumme='$text'";
$Result2=mysql_db_query ($DBName,$Query2,$Link);
while ($update=mysql_fetch_array($Result2))
{

}
}
}

?>

beim anmeldescript tut sich nix, egal was ich mach!
zu sehen unter http://www.teensweb.de/community/php/anmeldung/anmeldung.php?step=1
 
Frage nr. 1 :

ist das ein selbst geschriebenes Script ? oder free source?

Frage nr. 2:

Du hast keinen Fehler aber auch keine "Schnittstelle" zwischen PHP und User (sprich kein Formular wo ich denn den namen eintragen koennt). Wo hast du dein Formular gelagert ?
 
zu frage nr. 1:
ja hab ich komplett

zu frage nummer 2:
das ist in den templates gelagert.. das geht doch oder?
 
ah, ok. hab's nach einiger zeit der überlegung endlich verstanden. es soll also eine registrierung sein und der nickname soll noch nicht vergeben sein. hab ich das richtig verstanden?

tipp: beim nächsten mal gleich bisschen besser erklären ;)

ok, da wirst du aber ein problem haben. denn du checkst hier nicht nur, ob der nick schon vorhanden ist, sondern du checkst auch, ob dieser nick auch schon in einem anderen nick vorkommt.

beispiel: user eins nennt sich 'jesusfreak'. user 2 nennt sich 'jesus'. tja, user 2 hat pech gehabt und wird abgelehnt, das 'jesus' schon in dem nick von user 1 vorkommt. anders rum aber, wenn sich user 1 'jesus' und user 2 'jesusfreak' genannt hätten, wäre user 2 angenommen worden. das ist dein problem.

lösung: ich würd's einfach vergleichen: $problem == $nick_check. oder mach einfach das sql-statement anders: "SELECT nick from $TableName where nick = '$nick'". wenn was zurückkommt, dann weißt du ja, dass der nick existiert. wenn nich, dann kann er sich getrost anmelden.

matt:)
 
also, das erste ist nen nickscheck, da nicht alle nicks zugelassen werden sollen ;) das ist schon pure absicht ,).. also nicks die in der db stehen sollen gar nich zugelassen werden..

trotzdem versteh ich immer noch nich warums nich geht..


ps: schau dir mal http://www.teensweb.de an, ich glaub die seite iss was für dich ;)
 
die frage war, ob das ding sicher isch und wirklich nur neue namen zulässt. allerdings so wie es im moment ist, werden auch namen, die teil eines anderen namens sind, ausgefiltert.

der rest ist nich so stark von bedeutung, meiner meinung nach. es soll halt eine registrierung sein...

matt:)

ps: wenn das an mich ging: is'n alter hut! ausserdem bau ich grad selber ne community in der richtung :D
 
ich hab den fehler übrigens, die while schleife wird nich ausgeführt weil in der db noch kein ergebnis ist *schäm*

zum sperren: das soll so sein da wir bestimmte nickpräfixe sperren wollen


ps: wieso alter hut?
 
uiuiui, ;)
ich war grad vorher irgendwie voll verpeilt *lol*.

ok, das mit teensweb hab ich falsch verstanden. wusste nich, dass du da mitmachst, sondern hab das eher als verar*ung gedacht. sorry! bei teensweb bin ich angemeldet, so viel ich weiß unter dem nick matt. (deswegen auch 'alter hut' ;)) aber ich war schon lange nich mehr dort. bin eher auf jesus.de, aber meistens auch nur dann, wenn ich dort ne mail bekomme. hab viel zu tun und programmier ja grad auch ne eigene community, von daher wenig zeit. bin ja auch kein schüler mehr ;) (azubi)

ok, klar, die schleife wird nur dann ausgeführt, wenn auch schon was in der db drin steht. hatte die frage und das imagescript irgendwie übersehen/nich gesehen, oder wurde da was editiert?

aber das problem besteht immer noch, dass auch nicks, die teil eines anderen nicks sind, nicht zugelassen werden (beispiel: 'jesus' ist teil von 'jesusfreak' und wird daher mit der funktion strstr() aussortiert und abgelehnt). lieber direkt überprüfen oder mit dem mysql-statement das ich vorher schon geschrieben habe.

matt:)
 

Neue Beiträge

Zurück