IRC-Server Registrierung... usercp_register.php verändern?!

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
XenonTW
Mitglied
Beiträge: 17
Registriert: 02.02.2003 18:29

IRC-Server Registrierung... usercp_register.php verändern?!

Beitrag von XenonTW »

So.. also ich hab einen IRC-Client eingebunden und einen eigenen IRC-Server, nu dachte ich mir es wär doch wunderschön, wenn man sich bei der Registrierung zu phpBB gleich auch seinen Nick beim Nickserv des Serves registriert.

So nu hab ich mir mal ein php-Script gebastelt, mit dem man seinen Nick beim Nickserv registrieren kann und es funktioniert ausserhalb von phpBB einwandfrei.
Dann dachte ich mir, wenn den entsprechenden Teil des Scripts in die
usercp_register.php packe sollte es funktionieren.. so gedacht, getan
ich hab es vor den Teil der usercp_register.php gepackt :

Code: Alles auswählen

$sql = "UPDATE " . USERS_TABLE . "
				SET " . $username_sql . $passwd_sql . "user_email = '" . str_replace("\'", "''", $email) ."', user_icq = '" . str_replace("\'", "''", $icq) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "', user_sig = '" . str_replace("\'", "''", $signature) . "', user_sig_bbcode_uid = '$signature_bbcode_uid', user_viewemail = ....etc.
nur passiert nun aber leider gar nix, die phpBB Registrierung läuft wie immer ab, es kommt weder eine Fehlermeldung noch funktioniert es.
Warum??! Ich lese mir immer wieder den source durch probier rum aber irgendwie klappt nix...

Hier mal zur Übersicht das IRC-Register Script:

Code: Alles auswählen

<?
if ($function == "") {
?>
<html>
<head>
<?PHP
include("config.inc.php");
print("<title>$network | Register nickname</title>");
?>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<style>
<!--
.form { background-color: <?php echo "$fcolor";?>; }
-->
</style>
</head>

<body bgcolor="<?php echo "$bgcolor";?>" text="<?php echo "$textcolor";?>" link="<?php echo "$linkcolor";?>" vlink="<?php echo "$vlink";?>">
<form method="POST" action="register.php">
<input type="hidden" name="function" value="register">
  <p>Nickname: <input type="text" name="nick" size="20" class="form"></p>
  <p>Password: <input type="password" name="pass" size="20" class="form"></p>
  <p>E-mail: <input type="text" name="email" size="20" class="form"></p>
  <p><input type="submit" value="Submit" class="form"><input type="reset" value="Reset" class="form"></p>
</form>
</body>
</html>
<?
}
if ($function == "register") {
?>
<html>
<head>
<?PHP
include("config.inc.php");
print("<title>$network | Register nickname</title>");
?>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<style>
<!--
.form { background-color: <?php echo "$fcolor";?>; }
-->
</style>
</head>

<body bgcolor="<?php echo "$bgcolor";?>" text="<?php echo "$textcolor";?>" link="<?php echo "$linkcolor";?>" vlink="<?php
echo "$vlink";?>">
<?PHP
include("config.inc.php");
include("irc.php");
$wanted_nick = $nick;
if(!irc_init())	die("Initialization error.<br>");
irc_change_nick($wanted_nick);
if(!irc_connect($wanted_server, $wanted_port))
	die("Connection Error. Bist du bereits eingeloggt?!!<br>");

irc_privmsg($nickserv, "register $pass $email");

irc_add_callback(IRCCB_ONNOTICE, "privmsg_callback");
function privmsg_callback($code, $nick, $identd, $host, $destination, $text)
	{ 
	 
	if ($text{2} != "e") {
    print "Dein Nick wurde erfolgreich registriert!";
} else {
    print "Dieser Nick ist leider schon vergeben, bitte wähle einen anderen";
}
	
}

if(!irc_whois($nick))
irc_disconnect("");
?>
und das habe ich davon in die usercp_register.php gepackt:

Code: Alles auswählen

if ( $mode == 'register' )
		{	
				include("config.inc.php");
				include("irc.php");
				$wanted_nick = $username;
				if(!irc_init())	message_die(GENERAL_ERROR, 'Initialisierung Fehlgeschlagen', '', __LINE__, __FILE__);
				irc_change_nick($wanted_nick);
				if(!irc_connect($wanted_server, $wanted_port))
					message_die(GENERAL_ERROR, 'Connection Error. Bist du bereits eingeloggt?!', '', __LINE__, __FILE__);
				

				irc_privmsg($nickserv, "register $password_confirm $email");

				irc_add_callback(IRCCB_ONNOTICE, "privmsg_callback");
				function privmsg_callback($code, $username, $identd, $host, $destination, $text)
				{ 
	 
					if ($text{2} != "e") {
					 message_die(GENERAL_MESSAGE, $lang['Username_taken'], '', __LINE__, __FILE__);
					} 
	
					}

					if(!irc_whois($username))
					irc_disconnect("");
		}
Leider bin ich relativ neu in Sachen php, also wenn mir einer ein Tip geben könnte woran es liegen könnte... wär ich mehr als dankbar..
es käm einer Erlösung nahe :) ..

Danke schonmal im vorraus...

Bye,bye
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag von Jensemann »

Hi

Ähnliche query gibt es nochmal, nur fängt sie da mit INSERT an, da musses hin, die Update wird aufgerufen wenn jemand man sein profil geändert hat.
XenonTW
Mitglied
Beiträge: 17
Registriert: 02.02.2003 18:29

thx :)

Beitrag von XenonTW »

Thx Jensemann für deine Hilfe..

Inzwischen hab ich das schon zum laufen bekommen.. ich hab das nu unter

Code: Alles auswählen

( isset($HTTP_POST_VARS['submit']) )
gepackt... mir ist aufgefallen, das das die einzig sinnvolle Stelle ist, da er sonst das irc-register ausführt unabhängig von der Überprüfung ob alle Felder ausgefüllt sind, die eMail korrekt ist etc...

Nun, funkt das auch soweit ganz gut.. nur hab ich ein neues Problem, was
allerdings in meinem IRC-Register-Script liegt, ich es mir aber nicht erklären kann...

Und zwar an dieser Stelle:

Code: Alles auswählen

irc_privmsg($nickserv, "register $password_confirm $email");

				irc_add_callback(IRCCB_ONNOTICE, "privmsg_callback");
				function privmsg_callback($code, $username, $identd, $host, $destination, $text)
				{ 
	 
					if ($text{2} != "e") {
					 message_die(GENERAL_ERROR, 'Nick vergeben', '', __LINE__, __FILE__);  
					} 
	
					}

					if(!irc_whois($username))
					irc_disconnect("");
Das

Code: Alles auswählen

if ($text{2} != "e") {
					 message_die(GENERAL_ERROR, 'Nick vergeben', '', __LINE__, __FILE__);
habe ich gemacht, da die Server Message bei einer erfolgreichen Registrierung "The Nickname is now registered" oder so ist, also zumindest guck ich eben so, ob das "e" vom The da ist, weil alle anderen Messages vom Server mit "This" oder ähnliches anfangen. Funktioniert theoretisch auch, nur irgendwie läuft da was mehrmals ab und ich weiß nicht warum. Ich hab mal statt "die" "print" gemacht und dann hat er mir das ausgegeben:
Nick vergebenNick vergebenNick vergebenNick vergebenNick vergebenNick vergebenNick vergebenNick vergeben

Dann dachte ich vielleicht wird die ServerMessage mehrmals gesendet oder so, aber wenn ich diese direkt ohne if else ausgebe steht sie nur einmal da...
So im Bezug auf phpBB bedeutet das jetzt folgendes, er registriert meinen Nick erfolgreich beim Nickserv, als erstes ist das "e" da, doch da sich da nu irgendwas wiederholt ist es dann nicht mehr da und er führt die "die-message" aus, obwohl der nick registriert wurde...

Das klingt jetzt alles konfus und ist sicher schwer zu verstehen, was ich eigentlich meine...

Also eigentlich ist es ganz simple mein Problem ich muss irgendwie unterdrücken, das er das mehrmals macht.. aber ich weiß nicht wie? Da ich noch nicht mal verstehe warum er das macht?

Wieso macht er mir aus dem:

Code: Alles auswählen

irc_add_callback(IRCCB_ONNOTICE, "privmsg_callback");
function privmsg_callback($code, $nick, $identd, $host, $destination, $text)
	{ 
	 
	if ($text{2} != "e") {
    print "Dieser Nick ist leider schon vergeben, bitte wähle einen anderen";
} 
Das als Output auf der Seite:
Dieser Nick ist leider schon vergeben, bitte wähle einen anderenDieser Nick ist leider schon vergeben, bitte wähle einen anderenDieser Nick ist leider schon vergeben, bitte wähle einen anderen

Kann mit vielleicht einer einen Hinweis geben, woran das liegen kann?
Please help me!! :cry:
Benutzeravatar
Draco
Mitglied
Beiträge: 55
Registriert: 01.05.2004 16:07
Wohnort: Wien
Kontaktdaten:

Beitrag von Draco »

Also genau dannach habe ich jetzt lange gesucht im NET, aber ich find nix ...

in der Hoffnung, dass haben schon welche, gibt es eine Einbauanleitung, dass ich einen NIck in meinem IRC Netzwerk (genauer natürlich im NickServ) ZUSAMMEN bei der Forenregistrierung anlege? Mit der Bitte um unterstützung.



P.S.:
Hab schon versucht mit Anope Services und MySQL anbindung, aber die Anope schreiben nur in die Datenbank, lesen nicht.

PHP-Bot, aber das herausfiltern der mir wichtigen Codes überstieg meine Fähigkeiten

Bisher keine Lösung gefunden :-(
http://www.thedragonworld.com

Avatar by Lady Neomae
Antworten

Zurück zu „Coding & Technik“