SMF 1.1.4 ... Captchaeinbau möglich?

Begonnen von proudy, 08 November 2007, 11:45:43

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 2 Gäste betrachten dieses Thema.

proudy

hallo pragmamx-team,


habe das pragmamx 1.9.1 mit SP2,3,4 mit dem smf 1.1.4 incl. bridge neu installiert, alles ohne schwierigkeiten. nun haette ich gerne fuer das smf 1.1.4 eine captcha-funktion integriert. habe auch schon bei smf im forum nachgefragt, die haben mir gesagt, das diese funktion beim standalone bereits integriert ist (registrierung uebers forum). da diese aber per bridge ueber pragmamx läuft, wurde ich gebeten, mich mal an euch zu wenden.

das forum soll gästen das posten ermöglichen, will aber nicht wieder mit diversen spam-eintraegen schikaniert werden ... kann man das captcha von pragmamx nicht beim smf einbauen? das bei smf als mod angebotene "visual captcha" ist leider nur fuer das 1.1.3 ausgewiesen und soll beim 1.1.4 probleme machen. des weiteren, möchte ich später natuerlich auch auf das 2.0 updaten und die funktion soll erhalten bleiben (mit eventuellen script-abänderungen).


über hilfe würde ich mich sehr freuen, bye heike

Sitki

viele Grüße

Kein Support über PN, Mail oder Messenger!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

proudy

hallo Atahan,


danke vielmals fuer deinen info-link bei smf, der sich sogar auf mein post bezieht.
du bist echt ein megaschatz   :smile:
:genau:

ich sende euch liebe gruesse, bye heike

Andi

Hi :)

wobei es eigentlich nicht schlecht wäre, das pragmaMx-Captcha in das SMF-Postformular zu integrieren.
Da könnte man einfach eine kleine Erweiterung zu schreiben....

Ich nehme das mal ins TODO mit auf. ;)
schön´s Grüssle, Andi

Webfan

Quick & Dirty:

Suche in modules/forum/smf/Themes/default/Post.template.php  (ggf. Dein Themeordner!):

// Guests have to put in their name and email...
if (isset($context['name']) && isset($context['email']))
{
echo '
<tr>
<td align="right" style="font-weight: bold;', isset($context['post_error']['long_name']) || isset($context['post_error']['no_name']) || isset($context['post_error']['bad_name']) ? 'color: red;' : '', '" id="caption_guestname">
', $txt[68], ':
</td>
<td>
<input type="text" name="guestname" size="25" value="', $context['name'], '" tabindex="', $context['tabindex']++, '" />
</td>
</tr>';

if (empty($modSettings['guest_post_no_email']))
echo '
<tr>
<td align="right" style="font-weight: bold;', isset($context['post_error']['no_email']) || isset($context['post_error']['bad_email']) ? 'color: red;' : '', '" id="caption_email">
', $txt[69], ':
</td>
<td>
<input type="text" name="email" size="25" value="', $context['email'], '" tabindex="', $context['tabindex']++, '" />
</td>
</tr>';
}

Ersetze durch:

// Guests have to put in their name and email...
if (isset($context['name']) && isset($context['email']))
{

   
echo '
<tr>
<td align="right" style="font-weight: bold;', isset($context['post_error']['long_name']) || isset($context['post_error']['no_name']) || isset($context['post_error']['bad_name']) ? 'color: red;' : '', '" id="caption_guestname">
', $txt[68], ':
</td>
<td>
<input type="text" name="guestname" size="25" value="', $context['name'], '" tabindex="', $context['tabindex']++, '" />
</td>
</tr>';

if (empty($modSettings['guest_post_no_email']))
echo '
<tr>
<td align="right" style="font-weight: bold;', isset($context['post_error']['no_email']) || isset($context['post_error']['bad_email']) ? 'color: red;' : '', '" id="caption_email">
', $txt[69], ':
</td>
<td>
<input type="text" name="email" size="25" value="', $context['email'], '" tabindex="', $context['tabindex']++, '" />
</td>
</tr>';

  require("includes/captcha/settings.php");
  require("includes/captcha/captcha_java.php");
    echo '
       <tr>
         <td align="right" style="font-weight: bold;">
            Captcha Überprpüfung:
        </td>
           <td>
            <img id="captchaimage"   src="includes/captcha/captchaimg.php?" '. md5(crypt(uniqid(''))) .' "" alt="">
            <br>
            <input type="button" value="' . _CAPTCHARELOAD . '" onclick="do_reload(); return false;">
            <br>
            <input type="text" name="captcha" value="' . mxEntityQuotes($entry['captcha']) . '" size="20" maxlength="20">'._CAPTCHAINSERT.'
           </td>
       </tr>   
    ';
}



Suche in modules/forum/smf/Sources/Post.php:

function Post2()
{
global $board, $topic, $txt, $db_prefix, $modSettings, $sourcedir, $context;
global $ID_MEMBER, $user_info, $board_info, $options, $func;



Darunter anfügen:
if($user_info['is_guest'])
{
require("includes/captcha/settings.php");
require_once("includes/captcha/__captcha/PhraseFactory.php");
   if ((!isset($_POST['captcha'])) || (empty($_POST['captcha']))) {
            $_POST['captcha'] = "abc!!def";
        }
        $givenCaptcha = strip_tags($_POST['captcha']);
        $storedCaptcha =PhraseFactory::get('', $passphraselenght, $givenCaptcha, $storagetype);
        $givenCaptcha = strtolower($givenCaptcha);
        $storedCaptcha = strtolower($storedCaptcha);
if ($givenCaptcha != $storedCaptcha)
  {
           die('Falsche Captcha-Eingabe
            <br>[ <a href="javascript:history.go(-1)">Zurück</a> ]');

  }
}


Noch nicht besonders schön, aber sollte funzen:
http://www.webfan.de/Forum-board-23.html

mfg
:)

Sitki

Hallo :),

ZitatIch nehme das mal ins TODO mit auf
daran hatte ich eigentlich auch schon gedacht. Aber wieder verworfen, weil soweit ich weiß ohnehin eine entsprechende Funktion für die SMF 2.0 Version integriert werden soll. Wobei eine anwählbare globale pragmaMx-Captcha-Funktion die das Gastposten für das SMF miteinschließt sicher seinen Reiz hat. Würde dass aber nicht die Frage aufwerfen, eher für das mxBoard eine Captcha-Funktion für das Gastposten mit anzubieten, als für ein gebridgtes Forum, welches ohnehin mit einem entsprechendem Captcha-System ausgestattet werden soll? Andererseits kann ich mich mit zwei verschiedenen Captcha-Systemen für dasselbe CMS auch nicht so ganz anfreunden.
viele Grüße

Kein Support über PN, Mail oder Messenger!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!