PDA

Zobacz pełną wersję : Logowanie do VM 1.xx



Jdwind
31-12-2011, 15:48
Witam, może komuś się przyda mini-zabezpieczenie przed rejestrowaniem użyszkodników / roboazjatów, które popełniłem. W pliku administrator/components/com_virtuemart/html/shop.registration (do którego np. prowadzi link z modułu virtuemart do rejestracji) zamienić obecny kod pod komentarzami na:

if(($_POST['suma']) == 'cztery') {
mm_showMyFileName( __FILE__ );

$vm_mainframe->setpagetitle($VM_LANG->_('REGISTER_TITLE'));
$pathway[] = $vm_mainframe->vmPathwayItem($VM_LANG->_('REGISTER_TITLE'));
$vm_mainframe->vmAppendPathway( $pathway );

if( empty($auth['user_id']) ) {
include( PAGEPATH . 'checkout_register_form.php' );
} else {
vmRedirect( $sess->url( URL.'index.php?page='.HOMEPAGE, false, false ) );
}
} else {
echo '<form method="post">';
echo '<label for="doda">2 + dwa = </label>';
echo '<input type="text" name="suma" id="doda" size="5" />';
echo '<input type="submit" value="OK" />';
echo '</form>';
}
?>
Można dołożyć jakąś opisówkę w celu wyjaśnienia sytuacji: echo $VM_LANG->_('PHPSHOP_KOMUNIKAT'), kod wraz z wynikiem można również zmieniać. Nie jest to może do końca idealne rozwiązanie, ale zawsze coś. Ostatnio miałem nawał rejestracji użytkowników z Chin (pomimo, że mam wpisy w htaccess), a nie chciałem stosować dodatków.
Można też zrobić coś takiego, że trzeba wpisać aktualny dzień tygodnia (słownie), właśnie mi to przyszło do głowy.

---------- Post dodany o 15:03 ---------- Poprzedni post był o 14:23 ----------

Z dniem tygodnia byłoby to tak (plik należy zapisać z kodowaniem utf8):

$dzien = date("w");
switch ($dzien) {
case 0: $dzien = 'niedziela'; break;
case 1: $dzien = 'poniedziałek'; break;
case 2: $dzien = 'wtorek'; break;
case 3: $dzien = 'środa'; break;
case 4: $dzien = 'czwartek'; break;
case 5: $dzien = 'piątek'; break;
case 6: $dzien = 'sobota'; break;
default: $dzien = 'niezidentyfikowany'; break;
}

if(($_POST['dzien']) == $dzien) {
mm_showMyFileName( __FILE__ );

$vm_mainframe->setpagetitle($VM_LANG->_('REGISTER_TITLE'));
$pathway[] = $vm_mainframe->vmPathwayItem($VM_LANG->_('REGISTER_TITLE'));
$vm_mainframe->vmAppendPathway( $pathway );

if( empty($auth['user_id']) ) {
include( PAGEPATH . 'checkout_register_form.php' );
} else {
vmRedirect( $sess->url( URL.'index.php?page='.HOMEPAGE, false, false ) );
}
} else {
echo '<form method="post">';
echo '<label for="doda">Wpisz słownie dzisiejszy dzień tygodnia (małe litery) </label>';
echo '<input type="text" name="dzien" id="doda" size="5" />';
echo '<input type="submit" value="OK" />';
echo '</form>';
}

---------- Post dodany o 15:48 ---------- Poprzedni post był o 15:03 ----------

EDIT:
można jeszcze zamiast:
if(($_POST['dzien']) == $dzien) {

dać:
$aktualdzien = mb_strtolower(($_POST['dzien']), 'UTF-8');
if($aktualdzien == $dzien) {

i usunąć informację o małych literach. Ze zwykłą funkcją strtolower chyba nie można stosować polskich znaków, stąd mb_strtolower.