Edycja profilu użytkownika - błąd
Moderator: gsmok
-
- 100...124 posty
- Posty: 110
- Rejestracja: czw, 29 marca 2007, 20:36
- Lokalizacja: Płońsk
Edycja profilu użytkownika - błąd
Witam.
Po próbie wejścia do ustawień mojego profilu pokazuje się błąd.
Nie jest to na pewno kwestia np. plików cookie, bowiem sprawdzałem to na 3 przeglądarkach (Opera, FF, MSIE), usuwałem też pliki cookie, błąd jest ciągle ten sam.
(Nikt chyba tego nie zgłaszał, przeszukałem ten dział).
A oto ów błąd:
Fatal error: Call to undefined function: validate_optional_fields() in /home/trioda/ftp/trioda/php/forum/includes/usercp_register.php on line 157
Po próbie wejścia do ustawień mojego profilu pokazuje się błąd.
Nie jest to na pewno kwestia np. plików cookie, bowiem sprawdzałem to na 3 przeglądarkach (Opera, FF, MSIE), usuwałem też pliki cookie, błąd jest ciągle ten sam.
(Nikt chyba tego nie zgłaszał, przeszukałem ten dział).
A oto ów błąd:
Fatal error: Call to undefined function: validate_optional_fields() in /home/trioda/ftp/trioda/php/forum/includes/usercp_register.php on line 157
Pzdr, Hennos
-
- moderator
- Posty: 8656
- Rejestracja: pn, 30 czerwca 2003, 12:38
- Lokalizacja: Kraków, Ślusarska 9
-
- moderator
- Posty: 6965
- Rejestracja: pt, 11 kwietnia 2003, 23:47
- Lokalizacja: Zawiercie
-
- administrator
- Posty: 547
- Rejestracja: ndz, 6 kwietnia 2003, 12:02
- Lokalizacja: Warszawa
-
- administrator
- Posty: 547
- Rejestracja: ndz, 6 kwietnia 2003, 12:02
- Lokalizacja: Warszawa
Problem wynika z zastosowanego modu chroniącego przed robotami rejestrującymi. Oto zmieniony fragment:
Jest to instrukcja warunkowa, której spełnienie powoduje m.in. włączenie pliku z brakującą funkcją. Ta instrukcja nie spełnia wprowadzonego warunku i stąd funkcja nie jest widoczna przy wywołaniu.
Tak się kończy włączanie modów modyfikujących oprogramowanie forum.
Kod: Zaznacz cały
#
#-----[ FIND ]------------------------------------------
#
if (
isset($HTTP_POST_VARS['submit']) ||
isset($HTTP_POST_VARS['avatargallery']) ||
isset($HTTP_POST_VARS['submitavatar']) ||
isset($HTTP_POST_VARS['cancelavatar']) ||
$mode == 'register' )
#
#-----[ REPLACE, WITH ]------------------------------------------
#
if (
isset($HTTP_POST_VARS['avatargallery']) ||
isset($HTTP_POST_VARS['submitavatar']) ||
isset($HTTP_POST_VARS['cancelavatar']) ||
(isset($HTTP_POST_VARS['submit']) && $mode == 'editprofile') ||
(isset($HTTP_POST_VARS['submit']) && $mode == 'register' && !empty($HTTP_POST_VARS['email1']) && !empty($HTTP_POST_VARS['email2'])) ||
$mode == 'register'
)
#
Tak się kończy włączanie modów modyfikujących oprogramowanie forum.
-
- 125...249 postów
- Posty: 189
- Rejestracja: ndz, 26 lutego 2006, 22:58
- Lokalizacja: Lubartów/Lublin
Mam nadzieję że wszystkie pliki pozamieniałeś? To co wkleiłeś to tylko fragment większej całości, nie widziałem żeby ktokolwiek zgłaszał problemy z tym modem

Kod: Zaznacz cały
#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_register.php
#
#-----[ FIND ]------------------------------------------
#
if (
isset($HTTP_POST_VARS['submit']) ||
isset($HTTP_POST_VARS['avatargallery']) ||
isset($HTTP_POST_VARS['submitavatar']) ||
isset($HTTP_POST_VARS['cancelavatar']) ||
$mode == 'register' )
#
#-----[ REPLACE, WITH ]------------------------------------------
#
if (
isset($HTTP_POST_VARS['avatargallery']) ||
isset($HTTP_POST_VARS['submitavatar']) ||
isset($HTTP_POST_VARS['cancelavatar']) ||
(isset($HTTP_POST_VARS['submit']) && $mode == 'editprofile') ||
(isset($HTTP_POST_VARS['submit']) && $mode == 'register' && !empty($HTTP_POST_VARS['email1']) && !empty($HTTP_POST_VARS['email2'])) ||
$mode == 'register'
)
#
#-----[ FIND ]------------------------------------------
#
$strip_var_list = array('email' => 'email',
#
#-----[ REPLACE, WITH ]------------------------------------------
#
$strip_var_list = array('email1' => 'email1', 'email2' => 'email2',
#
#-----[ FIND ]------------------------------------------
#
$signature = (isset($signature)) ? str_replace('<br />', "\n", $signature) : '';
#
#-----[ BEFORE, ADD ]------------------------------------------
#
$email = '';
if (($email1 == '' || $email2 == '') && $mode == 'register')
{
$email = '';
}
elseif(!empty($email1) && !empty($email2) && $mode == 'register')
{
$email = $email1 . '@' . $email2;
}
elseif($mode != 'register')
{
$email = $HTTP_POST_VARS['email1'];
}
#
#-----[ FIND ]------------------------------------------
#
if ( $mode == 'editprofile' )
{
$template->assign_block_vars('switch_edit_profile', array());
}
#
#-----[ AFTER, ADD ]------------------------------------------
#
if ( $mode == 'register')
{
$template->assign_block_vars('switch_register', array());
}
#
#-----[ FIND ]------------------------------------------
#
'L_CURRENT_PASSWORD' => $lang['Current_password'],
#
#-----[ BEFORE, ADD ]------------------------------------------
#
'L_EMAIL_EXPLAIN' => $lang['Email_explain'],
#
#-----[ OPEN ]------------------------------------------
#
language/lang_polish/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
//
// That's all, Folks!
#
#-----[ BEFORE, ADD ]------------------------------------------
#
$lang['Email_explain'] = 'Jeżeli twój mail to np. janek@janek.pl, to w pierwsze pole wpisz janek, a w drugie janek.pl!';
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/profile_add_body.tpl
#
#-----[ FIND ]------------------------------------------
#
<!-- END switch_namechange_allowed -->
#
#-----[ AFTER, ADD ]------------------------------------------
#
<!-- BEGIN switch_register -->
<tr>
<td class="row1"><span class="gen">{L_EMAIL_ADDRESS}: *</span><br />
<span class="gensmall">{L_EMAIL_EXPLAIN}</td>
<td class="row2">
<input type="text" class="post" style="width:100px" name="email1" size="25" maxlength="200" value="" />
<span class="genmed">@</span>
<input type="text" class="post" style="width:100px" name="email2" size="25" maxlength="200" value="" />
</td>
</tr>
<!-- END switch_register -->
#
#-----[ FIND ]------------------------------------------
#
<tr>
<td class="row1"><span class="gen">{L_EMAIL_ADDRESS}: *</span></td>
<td class="row2"><input type="text" class="post" style="width:200px" name="email" size="25" maxlength="255" value="{EMAIL}" /></td>
</tr>
#
#-----[ REPLACE, WITH ]------------------------------------------
#
<!-- BEGIN switch_edit_profile -->
<tr>
<td class="row1"><span class="gen">{L_EMAIL_ADDRESS}: *</span></td>
<td class="row2"><input type="text" class="post" style="width:200px" name="email1" size="25" maxlength="255" value="{EMAIL}" /></td>
</tr>
<!-- END switch_edit_profile -->
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
-
- administrator
- Posty: 547
- Rejestracja: ndz, 6 kwietnia 2003, 12:02
- Lokalizacja: Warszawa
-
- 125...249 postów
- Posty: 189
- Rejestracja: ndz, 26 lutego 2006, 22:58
- Lokalizacja: Lubartów/Lublin
Znalazłem w internecie jeszcze coś takiego:
Ten sam mod, ale nie ma w nim tej instrukcji warunkowej powodującej problemy.
Kod: Zaznacz cały
###############################################
Autorem modu jest: daro < edaroo@gmail.com > http://darobb.org
Wersja modu: 1.0
Licencja: http://opensource.org/licenses/gpl-license.php GNU General Public License v2
Aby dodać moduł musicie mieć dostęp do plików forum na serwerze!
otwieramy do edycji plik:
includes/usercp_register.php
znajdujemy wpis:
$strip_var_list = array('email' => 'email',
i zamieniamy go na:
$strip_var_list = array('email1' => 'email1', 'email2' => 'email2',
znajdujemy wpis:
$popuppm = ( isset($HTTP_POST_VARS['popup_pm']) ) ? ( ($HTTP_POST_VARS['popup_pm']) ? TRUE : 0 ) : TRUE;
i po nim dodajemy wpis:
$email = '';
if (($email1 == '' || $email2 == '') && $mode == 'register')
{
$email = '';
}
elseif(!empty($email1) && !empty($email2) && $mode == 'register')
{
$email = $email1 . '@' . $email2;
}
elseif($mode != 'register')
{
$email = $HTTP_POST_VARS['email1'];
}
znajdujemy wpis:
if ( $mode == 'editprofile' )
{
$template->assign_block_vars('switch_edit_profile', array());
if ( $board_config['allow_autologin'] == 2 && $userdata['user_level'] == USER && !$userdata['user_jr'] )
{
$template->assign_block_vars('switch_ip_login_check', array());
}
if ( (!$board_config['report_disable']) && (( $userdata['user_level'] > USER && !$board_config['report_only_admin'] ) || $userdata['user_level'] == ADMIN) )
{
$template->assign_block_vars('switch_report', array(
'L_NO_REPORT_POPUP' => $lang['Report_no_popup'],
'NO_REPORT_POPUP_YES' => (!$userdata['no_report_popup'] ) ? 'checked="checked"' : '',
'NO_REPORT_POPUP_NO' => ($userdata['no_report_popup'] ) ? 'checked="checked"' : '',
'L_NO_REPORT_MAIL' => $lang['Report_no_mail'],
'NO_REPORT_MAIL_YES' => (!$userdata['no_report_mail'] ) ? 'checked="checked"' : '',
'NO_REPORT_MAIL_NO' => ($userdata['no_report_mail'] ) ? 'checked="checked"' : '')
);
}
}
i po nim dodajemy wpis:
if ( $mode == 'register')
{
$template->assign_block_vars('switch_register', array());
}
znajdujemy wpis:
'L_CURRENT_PASSWORD' => $lang['Current_password'],
i przed nim dodajemy wpis:
'L_EMAIL_EXPLAIN' => $lang['Email_explain'],
zamykamy plik(zapisujemy zmiany)
----------------------------------------------------------------
otwieramy plik
language/lang_polish/lang_main.php
znajdujemy wpis na samym dole:
//
// That's all, Folks!
i przed nim dodajemy wpis:
$lang['Email_explain'] = 'Jeżeli twój mail to np. janek@janek.pl, to w pierwsze pole wpisz janek, a w drugie janek.pl!';
zamykamy plik(zapisujemy zmiany)
----------------------------------------------------------------
otwieramy plik
templates/subSilver/profile_add_body.tpl
znajdujemy wpis :
<!-- END switch_namechange_allowed -->
i po nim dodajemy wpis:
<!-- BEGIN switch_register -->
<tr>
<td class="row1"><span class="gen">{L_EMAIL_ADDRESS}: *</span><br />
<span class="genmed">{L_EMAIL_EXPLAIN}</td>
<td class="row2">
<input type="text" class="post" onFocus="Active(this)" onBlur="NotActive(this)" style="width:100px" name="email1" size="25" maxlength="200" value="" />
<span class="genmed">@</span>
<input type="text" class="post" onFocus="Active(this)" onBlur="NotActive(this)" style="width:100px" name="email2" size="25" maxlength="200" value="" />
</td>
</tr>
<!-- END switch_register -->
znajdujemy wpis :
<tr>
<td class="row1"><span class="gen">{L_EMAIL_ADDRESS}: *</span></td>
<td class="row2"><input type="text" class="post" onFocus="Active(this)" onBlur="NotActive(this)" style="width:200px" name="email" size="25" maxlength="255" value="{EMAIL}" /></td>
</tr>
i zamieniamy go na:
<!-- BEGIN switch_edit_profile -->
<tr>
<td class="row1"><span class="gen">{L_EMAIL_ADDRESS}: *</span></td>
<td class="row2"><input type="text" class="post" onFocus="Active(this)" onBlur="NotActive(this)" style="width:200px" name="email1" size="25" maxlength="255" value="{EMAIL}" /></td>
</tr>
<!-- END switch_edit_profile -->
zamykamy plik(zapisujemy zmiany)
I to koniec, teraz możecie się cieszyć brakiem spamu na waszych forach :)
-
- administrator
- Posty: 547
- Rejestracja: ndz, 6 kwietnia 2003, 12:02
- Lokalizacja: Warszawa
-
- 100...124 posty
- Posty: 110
- Rejestracja: czw, 29 marca 2007, 20:36
- Lokalizacja: Płońsk
Z badań przeprowadzonych na moim forum testowym wynika, iż 1 podany przez Jakoska mod powoduje u mnie prawie identyczny błąd jak na Triodzie:
Jak widać chodzi o inną linię, ale to ten sam błąd.
Testowałem moda na najnowszej wersji phpBB2, sciągniętej ok 2 tygodnie temu.
Oto wersja mojego pliku:
Najwyraźniej ten mod nie nadaje się do tej wersji skryptu.
Natomiast drugi mod podany przez Jakoska to już zupełna abstrakcja, nijak ma się do tej mojej wersji pliku usercp_register.php.
Czyli trzeba walczyć z tym dalej...
Edit: Test przeprowadziłem na phpBB 2.0.22
Kod: Zaznacz cały
Fatal error: Call to undefined function: validate_optional_fields() in /var/www/sites/yoyo.pl/m/o/modrzew74/forum/includes/usercp_register.php on line 155"
Testowałem moda na najnowszej wersji phpBB2, sciągniętej ok 2 tygodnie temu.
Oto wersja mojego pliku:
Kod: Zaznacz cały
usercp_register.php,v 1.20.2.78 2006/12/17 10:51:27 acydburn Exp $
Natomiast drugi mod podany przez Jakoska to już zupełna abstrakcja, nijak ma się do tej mojej wersji pliku usercp_register.php.
Czyli trzeba walczyć z tym dalej...
Edit: Test przeprowadziłem na phpBB 2.0.22
Pzdr, Hennos
-
- 125...249 postów
- Posty: 189
- Rejestracja: ndz, 26 lutego 2006, 22:58
- Lokalizacja: Lubartów/Lublin
Właśnie że na moim forum ten drugi mod (v1.0) pasuje w 100% w przeciwieństwie do tego wymienionego wcześniej w tej dyskusji (v1.2) moje forum działa już prawie 2 lata i wtedy to była najnowsza wersja phpBB by Przemo, nie wiem która dokładnie to wersja czystego phpBB
Kod: Zaznacz cały
usercp_register.php,v 1.8.9 2004/05/30 21:50
-
- 100...124 posty
- Posty: 110
- Rejestracja: czw, 29 marca 2007, 20:36
- Lokalizacja: Płońsk
-
- 100...124 posty
- Posty: 110
- Rejestracja: czw, 29 marca 2007, 20:36
- Lokalizacja: Płońsk
Udało mi się naprawić ten błąd na swoim forum testowym, jest ten mod (pierwszy podany przez Jakoska) i nie ma błędu, profil działa dobrze.
Usunąłem go w sposób najgłupszy z możliwych, czyli po prostu wstawiłem komentarz przed funkcją powodującą błąd, czyli "validate optional fields".
Załączam poprawiony plik, oczywiście nie ma gwarancji, że na forum Triody to zadziała, ale u mnie wszystko jest OK.
Jak komuś się nudzi to może zarejestrować się na moim forum i stwierdzić naocznie, że profil działa
http://www.modrzew74.yoyo.pl/forum/
Usunąłem go w sposób najgłupszy z możliwych, czyli po prostu wstawiłem komentarz przed funkcją powodującą błąd, czyli "validate optional fields".
Załączam poprawiony plik, oczywiście nie ma gwarancji, że na forum Triody to zadziała, ale u mnie wszystko jest OK.
Jak komuś się nudzi to może zarejestrować się na moim forum i stwierdzić naocznie, że profil działa

http://www.modrzew74.yoyo.pl/forum/
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Pzdr, Hennos