gulli:board Logo

Anzeige


  Antwort
Grandmaster_Killer
Kein Gott aber ein Engel
 
Registrierungsdatum: Jul 2000
Ort: Zu hause
Beiträge: 135
probleme mit WoltLab Burning Board

ich habe hier version 2.irgendwas *g* und habe immer wenn sich wer anmeldet eine fehlermeldung

erstmal der angemeldete bekommt seinen account aber diese fehlermeldung kommt jedes mal .....

SQL-DATABASE ERROR

Database error in WoltLab Burning Board: Invalid SQL: INSERT INTO bb1_userfields VALUES (71,'','','')
mysql error: Column count doesn't match value count at row 1
mysql error number: 1136
Date: 29.01.2003 @ 19:16
Script: /forum/register.php
Referer: http://www.sagichnet.de/forum/regist...895e3a4c9e19ce


kann mir da jemand helfen ?
Alt 29. 01. 2003, 18:31 Grandmaster_Killer is offline Mit Zitat antworten #1
mip
The M.I.P.
 
Benutzerbild von mip
 
Registrierungsdatum: Apr 2002
Ort: 127.0.0.1
Beiträge: 3.715
Falls Du ein unmodifiziertes Board hast, kann ich da erstmal keinen Fehler erkennen.
Aber Du könntest ja mal in register.php
PHP-Code:
$db->query("INSERT INTO bb".$n."_userfields VALUES (".$insertid.$fieldvalues.")"); 
durch
PHP-Code:
$db->query("INSERT INTO bb".$n."_userfields (userid,field1,field2,field3) VALUES (".$insertid.$fieldvalues.")"); 
ersetzen.

P.S.: WBB suckz
Alt 29. 01. 2003, 20:09 mip is offline Mit Zitat antworten #2
Grandmaster_Killer
Kein Gott aber ein Engel
(Threadstarter)
 
Registrierungsdatum: Jul 2000
Ort: Zu hause
Beiträge: 135
hilft nich immernoch der selbe fehler hier mal die register.php


<?php
$filename="register.php";

require("global.php");

if(isset($_REQUEST['action']) && $_REQUEST['action']=="activation") {
if(isset($_REQUEST['usrid']) && isset($_REQUEST['a'])) {
$result=$db->query_first("SELECT userid, activation FROM bb".$n."_users WHERE userid='".intval($_REQUEST['usrid'])."'");
if(!$result['userid']) eval("error(\"".$tpl->get("error_usernotexist")."\");");
if($result['activation']==1) eval("error(\"".$tpl->get("error_accountalreadyactive")."\");");
if($result['activation']!=intval($_REQUEST['a'])) eval("error(\"".$tpl->get("error_falseactivationcode")."\");");
$db->query("UPDATE bb".$n."_users SET activation=1 WHERE userid='$result[userid]'");
eval("redirect(\"".$tpl->get("redirect_accountactive")."\",\"index.php?sid=$session[hash]\",10);");
}
else eval("\$tpl->output(\"".$tpl->get("register_activation")."\");");
exit();
}

if($wbbuserdata['userid']!=0) access_error();
if($allowregister!=1) eval("error(\"".$tpl->get("error_register_disabled")."\");");
if($showdisclaimer==1 && $_POST['disclaimer']!="viewed") {
eval("\$tpl->output(\"".$tpl->get("register_disclaimer")."\");");
exit();
}
else {
$group = $db->query_first("SELECT * FROM bb".$n."_groups WHERE default_group = 2");
if(isset($_POST['send'])) {
reset($_POST);
while(list($key,$val)=each($_POST)) {
if(is_string($val)) $$key=trim($val);
elseif(is_array($val)) $$key=trim_array($val);
}

$r_username=preg_replace("/\s{2,}/"," ",$r_username);

$error="";
$userfield_error=0;
$fieldvalues="";

$result = $db->query("SELECT profilefieldid, required FROM bb".$n."_profilefields ORDER BY profilefieldid ASC");
while($row=$db->fetch_array($result)) {
if($row['required']==1 && !$field[$row['profilefieldid']]) {
$userfield_error=1;
break;
}
$fieldvalues.=",'".addslashes(htmlspecialchars($field[$row['profilefieldid']]))."'";
}

if($userfield_error==1 || !$r_username || !$r_email || ($emailverifymode!=3 && (!$r_password || !$r_confirmpassword))) eval ("\$error .= \"".$tpl->get("register_error1")."\";");
if($emailverifymode!=3 && $r_password!=$r_confirmpassword) eval ("\$error .= \"".$tpl->get("register_error2")."\";");
if(!verify_username($r_username)) eval ("\$error .= \"".$tpl->get("register_error3")."\";");
if(!verify_email($r_email)) eval ("\$error .= \"".$tpl->get("register_error4")."\";");
if(strlen($r_signature)>$group['maxsiglength']) eval ("\$error .= \"".$tpl->get("register_error5")."\";");
if($group['maxsigimage']!=-1 && substr_count(strtolower($r_signature),"[img]")>$group['maxsigimage']) eval ("\$error .= \"".$tpl->get("register_error6")."\";");
if(strlen($r_usertext)>$group['maxusertextlength']) eval ("\$error .= \"".$tpl->get("register_error7")."\";");
if($error) eval ("\$register_error .= \"".$tpl->get("register_error")."\";");
else {
if($emailverifymode==3) $r_password=password_generate();
if($emailverifymode==1 || $emailverifymode==2) $activation=code_generate();
else $activation=1;

if($r_homepage && !preg_match("/[a-zA-Z]:\/\//si", $r_homepage)) $r_homepage = "http://".$r_homepage;
if($r_day && $r_month && $r_year) $birthday=ifelse(strlen($r_year)==4,$r_year,ifelse(strlen($r_year)==2,"19$r _year","0000"))."-".ifelse($r_month<10,"0$r_month",$r_month)."-".ifelse($r_day<10,"0$r_day",$r_day);
else $birthday = "0000-00-00";

$groupid = $group['groupid'];
$rankid = $db->query_first("SELECT rankid FROM bb".$n."_ranks WHERE groupid IN ('0','$groupid') AND needposts='0' AND gender IN ('0','".intval($r_gender)."') ORDER BY gender DESC",1);

if(!$r_dateformat) $r_dateformat=$dateformat;
if(!$r_timeformat) $r_timeformat=$timeformat;

$db->query("INSERT INTO bb".$n."_users (userid,username,password,email,groupid,rankid,regdate,lastvisit,lastactivi ty,usertext,signature,icq,aim,yim,msn,homepage,birthday,gender,showemail,ad mincanemail,usercanemail,invisible,usecookies,styleid,activation,daysprune, timezoneoffset,startweek,dateformat,timeformat,emailnotify,receivepm,emailo npm,pmpopup,umaxposts,showsignatures,showavatars,showimages,nosessionhash)
VALUES (NULL,'".addslashes(htmlspecialchars($r_username))."','".md5($r_password)." ','".addslashes(htmlspecialchars($r_email))."','$groupid','$rankid[rankid]','".time()."','".time()."','".time()."','".addslashes(htmlspecialchars($r_ usertext))."','".addslashes($r_signature)."','".intval($r_icq)."','".addsla shes(htmlspecialchars($r_aim))."','".addslashes(htmlspecialchars($r_yim))." ','".addslashes(htmlspecialchars($r_msn))."','".addslashes(htmlspecialchars ($r_homepage))."','".addslashes(htmlspecialchars($birthday))."','".intval($ r_gender)."','".intval($r_showemail)."','".intval($r_admincanemail)."','".i ntval($r_usercanemail)."','".intval($r_invisible)."','".intval($r_usecookie s)."','".intval($r_styleid)."','".intval($activation)."','".intval($r_daysp rune)."','".addslashes($r_timezoneoffset)."','".intval($r_startweek)."','". addslashes(htmlspecialchars($r_dateformat))."','".addslashes(htmlspecialcha rs($r_timeformat))."','".intval($r_emailnotify)."','".intval($r_receivepm). "','".intval($r_emailonpm)."','".intval($r_pmpopup)."','".intval($r_umaxpos ts)."','".intval($r_showsignatures)."','".intval($r_showavatars)."','".intv al($r_showimages)."','".intval($r_nosessionhash)."')");
$insertid = $db->insert_id();

$db->query("INSERT INTO bb".$n."_userfields (userid,field1,field2,field3) VALUES (".$insertid.$fieldvalues.")");

if($r_nosessionhash==1) $session['hash']="";
if($emailverifymode==0) {
if($r_usecookies==1) {
bbcookie("wbb_userid","$insertid",time()+3600*24*365);
bbcookie("wbb_userpassword",md5($r_password),time()+3600*24*365);
}
$db->query("UPDATE bb".$n."_sessions SET userid = '".$insertid."' WHERE hash = '$sid'");
header("Location: index.php?sid=$session[hash]");
exit();
}
if($emailverifymode==1) {
eval ("\$subject = \"".$tpl->get("register_mail1_subject")."\";");
eval ("\$content = \"".$tpl->get("register_mail1_content")."\";");
mailer($r_email,$subject,$content);
eval("redirect(\"".$tpl->get("redirect_register1")."\",\"index.php?sid=$session[hash]\",20);");
}
if($emailverifymode==2) {
eval("redirect(\"".$tpl->get("redirect_register2")."\",\"index.php?sid=$session[hash]\",20);");
}
if($emailverifymode==3) {
eval ("\$subject = \"".$tpl->get("register_mail3_subject")."\";");
eval ("\$content = \"".$tpl->get("register_mail3_content")."\";");
mailer($r_email,$subject,$content);
eval("redirect(\"".$tpl->get("redirect_register3")."\",\"index.php?sid=$session[hash]\",20);");
}
}
}
else {
$r_invisible=$default_register_invisible;
$r_nosessionhash=$default_register_nosessionhash;
$r_usecookies=$default_register_usecookies;
$r_admincanemail=$default_register_admincanemail;
$r_showemail=1-$default_register_showemail;
$r_usercanemail=$default_register_usercanemail;
$r_emailnotify=$default_register_emailnotify;
$r_receivepm=$default_register_receivepm;
$r_emailonpm=$default_register_emailonpm;
$r_pmpopup=$default_register_pmpopup;
$r_showsignatures=$default_register_showsignatures;
$r_showavatars=$default_register_showavatars;
$r_showimages=$default_register_showimages;
$r_threadview=$default_register_threadview;
$r_timezoneoffset=$default_timezoneoffset;
$r_startweek=$default_startweek;
$r_dateformat=$dateformat;
$r_timeformat=$timeformat;
}

for($i=1;$i<=31;$i++) $day_options.=makeoption($i,$i,$r_day);
for($i=1;$i<=12;$i++) $month_options.=makeoption($i,getmonth($i),$r_month);

for($i=0;$i<7;$i++) $startweek_options.=makeoption($i,getday($i),$r_startweek);

if(isset($r_gender)) $gender[$r_gender]=" selected";
if(isset($r_invisible)) $invisible[$r_invisible]=" selected";
if(isset($r_nosessionhash)) $nosessionhash[$r_nosessionhash]=" selected";
if(isset($r_usecookies)) $usecookies[$r_usecookies]=" selected";
if(isset($r_admincanemail)) $admincanemail[$r_admincanemail]=" selected";
if(isset($r_showemail)) $showemail[$r_showemail]=" selected";
if(isset($r_usercanemail)) $usercanemail[$r_usercanemail]=" selected";
if(isset($r_emailnotify)) $emailnotify[$r_emailnotify]=" selected";
if(isset($r_receivepm)) $receivepm[$r_receivepm]=" selected";
if(isset($r_emailonpm)) $emailonpm[$r_emailonpm]=" selected";
if(isset($r_pmpopup)) $spmpopup[$r_pmpopup]=" selected";
if(isset($r_showsignatures)) $showsignatures[$r_showsignatures]=" selected";
if(isset($r_showavatars)) $showavatars[$r_showavatars]=" selected";
if(isset($r_showimages)) $showimages[$r_showimages]=" selected";
if(isset($r_daysprune)) $sdaysprune[$r_daysprune]=" selected";
if(isset($r_umaxposts)) $sumaxposts[$r_umaxposts]=" selected";
if(isset($r_threadview)) $sthreadview[$r_threadview]=" selected";

$timezones = explode("\n", $tpl->get("timezones"));
for($i=0;$i<count($timezones);$i++) {
$parts = explode("|", trim($timezones[$i]));
$timezone_options .= makeoption($parts[0],"(GMT".ifelse($parts[1]," ".$parts[1],"").") $parts[2]",$r_timezoneoffset);
}
$z=1;
$y=ifelse($emailverifymode!=3,0,1);
$result=$db->query("SELECT * FROM bb".$n."_profilefields ORDER BY fieldorder ASC");
while($row=$db->fetch_array($result)) {
$field_value=$field[$row['profilefieldid']];

if($row[required]==1) {
$tdbgcolor=getone($y,"{tablecolora}","{tablecolorb}");
$tdid=getone($y,"tablea","tableb");

eval ("\$profilefields_required .= \"".$tpl->get("register_userfield")."\";");
$y++;
}
else {
$tdbgcolor=getone($z,"{tablecolora}","{tablecolorb}");
$tdid=getone($z,"tablea","tableb");

eval ("\$profilefields .= \"".$tpl->get("register_userfield")."\";");
$z++;
}
}
Alt 29. 01. 2003, 21:41 Grandmaster_Killer is offline Mit Zitat antworten #3
Grandmaster_Killer
Kein Gott aber ein Engel
(Threadstarter)
 
Registrierungsdatum: Jul 2000
Ort: Zu hause
Beiträge: 135
$result = $db->query("SELECT styleid, stylename FROM bb".$n."_styles WHERE default_style = 0 ORDER BY stylename ASC");
while($row=$db->fetch_array($result)) $style_options.=makeoption($row[styleid],$row[stylename],$r_styleid);

if($emailverifymode!=3) eval ("\$register_password .= \"".$tpl->get("register_password")."\";");

eval ("\$note .= \"".$tpl->get("note_html_".ifelse($allowsightml==0,"not_")."allow")."\";");
eval ("\$note .= \"".$tpl->get("note_bbcode_".ifelse($allowsigbbcode==0,"not_")."allow")."\";");
eval ("\$note .= \"".$tpl->get("note_smilies_".ifelse($allowsigsmilies==0,"not_")."allow")."\";");
eval ("\$note .= \"".$tpl->get("note_images_".ifelse($maxsigimage==0,"not_")."allow")."\";");

if(isset($_POST)) {
reset($_POST);
while(list($key,$val)=each($_POST)) {
if(is_string($val)) $$key=htmlspecialchars(trim($val));
elseif(is_array($val)) $$key=htmlspecialchars_array(trim_array($val));
}
}

eval("\$tpl->output(\"".$tpl->get("register")."\");");
}
?>
Alt 29. 01. 2003, 21:42 Grandmaster_Killer is offline Mit Zitat antworten #4
mip
The M.I.P.
 
Benutzerbild von mip
 
Registrierungsdatum: Apr 2002
Ort: 127.0.0.1
Beiträge: 3.715
Scheinbar ist bei den Profilfeldern etwas aus dem Ruder gelaufen.
Schau in der Tabelle bb1_profilefields nach, wie viele Einträge da stehen und füge dementsprechend Spalten in bb1_userfields hinzu (oder lösche).
Nach der Installation sollten in der ersten Tabelle 3 Einträge (Herkunft, Interessen, Beruf) sein, in der anderen Tabelle entsprechend 3 Spalten (field1, field2, field3).
Alt 29. 01. 2003, 22:17 mip is offline Mit Zitat antworten #5
Grandmaster_Killer
Kein Gott aber ein Engel
(Threadstarter)
 
Registrierungsdatum: Jul 2000
Ort: Zu hause
Beiträge: 135
also das was du sagtest is alles richtig aber habe da was anderes gefunden was mit der register.php nicht übereinstimmt

CREATE TABLE bb1_users (
userid int(11) unsigned NOT NULL auto_increment,
username varchar(50) NOT NULL,
password varchar(50) NOT NULL,
email varchar(150) NOT NULL,
userposts mediumint(7)

das letze der tabele is gemeint

und in der register.php steht bei den einträgen in die mysql datenbank

$db->query("INSERT INTO bb".$n."_users (userid,username,password,email,groupid,rankid,regdate,lastvisit,lastactivi ty,usertext,signature,icq,aim,yim,msn,homepage,birthday,gender,showemail,ad mincanemail,usercanemail,invisible,usecookies,styleid,activation,daysprune, timezoneoffset,startweek,dateformat,timeformat,emailnotify,receivepm,emailo npm,pmpopup,umaxposts,showsignatures,showavatars,showimages,nosessionhash)
VALUES (NULL,'".addslashes(htmlspecialchars($r_username))."','".md5($r_password)." ','".addslashes(htmlspecialchars($r_email))."','$groupid','$rankid[rankid]','".time()."','".time()."','".time()."','".addslashes(htmlspecialchars($r_ usertext))."','".addslashes($r_signature)."','".intval($r_icq)."','".addsla shes(htmlspecialchars($r_aim))."','".addslashes(htmlspecialchars($r_yim))." ','".addslashes(htmlspecialchars($r_msn))."','".addslashes(htmlspecialchars ($r_homepage))."','".addslashes(htmlspecialchars($birthday))."','".intval($ r_gender)."','".intval($r_showemail)."','".intval($r_admincanemail)."','".i ntval($r_usercanemail)."','".intval($r_invisible)."','".intval($r_usecookie s)."','".intval($r_styleid)."','".intval($activation)."','".intval($r_daysp rune)."','".addslashes($r_timezoneoffset)."','".intval($r_startweek)."','". addslashes(htmlspecialchars($r_dateformat))."','".addslashes(htmlspecialcha rs($r_timeformat))."','".intval($r_emailnotify)."','".intval($r_receivepm). "','".intval($r_emailonpm)."','".intval($r_pmpopup)."','".intval($r_umaxpos ts)."','".intval($r_showsignatures)."','".intval($r_showavatars)."','".intv al($r_showimages)."','".intval($r_nosessionhash)."')");
$insertid = $db->insert_id();

ihm fehlt die angabe was bei userpost reinkommt soll ich nun einfach die tabelle entfernen oder in die register etwas dazu schreiben ?
Alt 30. 01. 2003, 11:49 Grandmaster_Killer is offline Mit Zitat antworten #6
mip
The M.I.P.
 
Benutzerbild von mip
 
Registrierungsdatum: Apr 2002
Ort: 127.0.0.1
Beiträge: 3.715
Hast Du denn das überprüft und korrigiert, wie ich es im vorigen Posting gesagt habe (z.B. mit phpMyAdmin)?

Die userposts Spalte ist OK und dürfte mit Deinem obigen Problem gar nix am Hut haben (ist wahrscheinlich als userposts mediumint(7) UNSIGNED DEFAULT '0' NOT NULL deklariert und im aufgeführten (vollständigen, also mit Spaltennamen) Insert nicht notwendig (es wird dort dann der Default-Wert 0 eingetragen).

Zurück zum Kern des Problems:
In register..php werden die möglichen Profilfelder aus der DB geholt und die im Formular übergebenen Variablenwerte aneinandergehängt:
PHP-Code:
$result $db->query("SELECT profilefieldid, required FROM bb".$n."_profilefields ORDER BY profilefieldid ASC");
  while(
$row=$db->fetch_array($result)) {
   if(
$row['required']==&& !$field[$row['profilefieldid']]) {
    
$userfield_error=1;
    break;
   }
   
$fieldvalues.=",'".addslashes(htmlspecialchars($field[$row['profilefieldid']]))."'";
  } 
Weiter unten kommt dann das Query
PHP-Code:
$db->query("INSERT INTO bb".$n."_userfields VALUES (".$insertid.$fieldvalues.")"); 
, bei dem nicht gecheckt wird, ob Anzahl der Reihen in der Profilefields-Tabelle überhaupt mit der Anzahl Spalten in der Userfields-Tabelle übereinstimmt.
Normalerweise ist das schon der Fall, da in der acp/profilefield.php immer beide zugleich verändert werden (ein sauberer Check findet aber auch hier nicht statt).

Das (originale) WBB2 ist nicht der Kernpunkt des Problems - der Code ist nicht so dölle, aber er funktioniert.
Du wirst an irgendeinem Punkt wohl mal in der DB rumgespielt haben. Wie Du das Problem behebst, hab ich im vorigen Posting beschrieben (nämlich sicherstellen, dass Anzahl Reihen in profilefields gleich Spalten in userfields). Im PHP-Code brauchst Du nix zu ändern.
Alt 30. 01. 2003, 13:28 mip is offline Mit Zitat antworten #7
Themen-Optionen Antwort


Themen-Optionen

Gehe zu



Alle Zeitangaben in UTC +1. Es ist jetzt 15:26 Uhr.
Angetrieben von vBulletin
Copyright ©2000 - 2006, Jelsoft Enterprises Ltd.
neurotypical.gullisys.net

Anmelden

Benutzername
Kennwort
© Copyright 1998-2008 gulli.com home | regeln | sitemap | kontakt | impressum | partner | downloads | disclaimer |
Message Boards and Forums Directory