PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Registrierung - Wo ist der Fehler in meinem Hack?


reisser
20.08.2005, 15:16
Hallo,

ich habe einen kleinen Hack für die Registrierung in meinem Board erstellt.
Dazu benötigte ich zwei Profilfelder:
"Was bin ich?" - Studenten, Professoren, etc.
"Matri-nummer - 5 stellige Nummer
Beide Felder werden bei der Registration zwingend abgefragt.

Hier nun der Code

if ($bbuserinfo['field5'] == 'Studenten' )
{
$sqlmail = $DB_site->query_first("SELECT email FROM " . TABLE_PREFIX . "Matrikular WHERE MatriNr =".$bbuserinfo['field6']."");

$sqlStat = $DB_site->query_first("SELECT Status FROM " . TABLE_PREFIX . "Matrikular WHERE MatriNr =".$bbuserinfo['field6']."");

if ( $sqlmail == $bbuserinfo['email'] AND $sqlStat == '0' )
{
$user['usergroupid'] = 9;
$DB_site->query("UPDATE " . TABLE_PREFIX . "Matrikular SET Status = '1' WHERE MatriNr=".$bbuserinfo['field6']."");
}
else
{
$user['usergroupid'] = 4;
}
}

else if ( $bbuserinfo['field5'] == 'Professoren' OR $bbuserinfo['field5'] == 'Lehrbeauftragte' )
{
$comparemail = stristr($bbuserinfo['email'], $vboptions['Ver_string']);
if ( $comparemail == FALSE )
{
$user['usergroupid'] = 4;
}
else
{
$differ = stristr( $bbuserinfo['email'], '.' );
if ( $differ == '.de' )
{
$mailtest = var1;
}
else
{
$mailtest = var2;
}

if ($bbuserinfo['field5'] == 'Professoren' AND $mailtest == var2)
{
$user['usergroupid'] = 10;
}
else if ($bbuserinfo['field5'] == 'Lehrbeauftragte' AND $mailtest == var2)
{
$user['usergroupid'] = 11;
}
else
{
$user['usergroupid'] = 4;
}


}
}
Wichtig ist im Moment nur der erste Teil bis zum "else if"
Wenn für das Profilfeld 5 "Studenten" ausgewählt wurde, soll in einer Tablle geguckt werden ob die E-Mail, diejenige ist, die bei der Registration angegeben wurde und ob der Status ($sqlStat) 0 ist.
Nach der zuordnung in die Gruppe 9 würde er ja auf 1 gesetzt werden.

Leider wird grundsätzlich die benutzergruppe 4 gewählt, obwohl E-mail, Matrinummer und Status richtig sind.

weiß jemand vielleicht wo mein Fehler ist?

Vielen Dank

reisser

Mystics
20.08.2005, 15:56
Ersetze:if ( $sqlmail == $bbuserinfo['email'] AND $sqlStat == '0' )mit:if ($sqlmail['email'] == $bbuserinfo['email'] AND $sqlStat['Status'] == '0' )

reisser
20.08.2005, 18:13
Leider hat das auch nicht funktioniert.
Ich verstehe zwar den Sinn der Änderungen und habe sie auch so übernommen, dennoch belibt das Resultat gleichbleibend.

Ich habe die beiden Query mal getestet, indem ich sie folgend im Code hinterlegt habe..
$DB_site->query("SELECT email FROM Matrikular WHERE MatriNr='12345'");
und
$DB_site->query("SELECT Statusl FROM Matrikular WHERE MatriNr='12345'");

Nun müssten genau die Werte rauskommen die ich benötige für ..
if ($sqlmail['email'] == $bbuserinfo['email'] AND $sqlStat['Status'] == '0' )

Hier liegt also meiner Meinung nach der immernoch Fehler :( oder irre ich mich da?

//edit: Ich habe nochmal einen Test gemacht und für jede Bedigung eine andere Benutzergruppe gewählt. Es also definitv an diesen Vergleichsoperationen.

Mystics
20.08.2005, 19:09
Wo hast du denn den Code überhaupt eingebaut?

Was kommt raus, wenn du testweise alle Variablen ausgibst?

Also echo $sqlmail['email']; usw.

Ist an der Stelle, wo der Code eingebaut wurde, $bbuserinfo['email'] überhaupt bereits gesetzt? In der register.php gibt es ja z.B. nur $_POST['email'] und kein $bbuserinfo['email'] etc.

reisser
21.08.2005, 17:24
Der Code befindet sich in der Register.php

$bbuserinfo['email'] müsste schon vorhanden sein.
Nach der Registration wird die E-Mail auf Existenz überprüft. Wenn man den Link in der zugesandten E-mail bestätigt beginnt der Code.

Das mit dem echo werde ich mal testen. Danke