Scuttle Einbindungsproblem

Hier werden Probleme rund um das Rechen Captcha behandelt

Moderator: frameguard

Scuttle Einbindungsproblem

Beitragvon chris » 07.04.2007, 15:06

Hallo ich habe es leider nicht geschaft das Script einzubinden, es wäre super wenn mir jemand einen Hinweis geben könnte.

Hier ist mein Script:
Code: Alles auswählen
<?php
/***************************************************************************
Copyright (C) 2004 - 2006 Marcus Campbell
http://sourceforge.net/projects/scuttle/
http://scuttle.org/

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
***************************************************************************/

require_once('header.inc.php');
$userservice =& ServiceFactory::getServiceInstance('UserService');
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');

$tplVars = array();

if ($_POST['submitted']) {
    $posteduser = trim(utf8_strtolower($_POST['username']));

    // Check if form is incomplete
    if (!($posteduser) || !($_POST['password']) || !($_POST['email'])) {
        $tplVars['error'] = T_('You <em>must</em> enter a username, password and e-mail address.');

    // Check if username is reserved
    } elseif ($userservice->isReserved($posteduser)) {
        $tplVars['error'] = T_('This username has been reserved, please make another choice.');

    // Check if username already exists
    } elseif ($userservice->getUserByUsername($posteduser)) {
        $tplVars['error'] = T_('This username already exists, please make another choice.');
   
    // Check if e-mail address is valid
    } elseif (!$userservice->isValidEmail($_POST['email'])) {
        $tplVars['error'] = T_('E-mail address is not valid. Please try again.');

    // Register details
    } elseif ($userservice->addUser($posteduser, $_POST['password'], $_POST['email'])) {
        // Log in with new username
        $login = $userservice->login($posteduser, $_POST['password']);
        if ($login) {
            header('Location: '. createURL('bookmarks', $posteduser));
        }
        $tplVars['msg'] = T_('You have successfully registered. Enjoy!');
    } else {
        $tplVars['error'] = T_('Registration failed. Please try again.');
    }
}



$tplVars['loadjs']      = true;
$tplVars['subtitle']    = T_('Register');
$tplVars['formaction']  = createURL('register');
$templateservice->loadTemplate('register.tpl', $tplVars);
?>


P.S: Es geht um den Code aus Schritt 3...

Vielen Dank!
chris
 
Beiträge: 2
Registriert: 07.04.2007, 15:01

Beitragvon frameguard » 07.04.2007, 18:33

Also zuerst fängst an mit dem session_start();:

<?php session_start();

Dann initialisierst einmal die Variablen:

require_once('header.inc.php');
$userservice =& ServiceFactory::getServiceInstance('UserService');
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');

$tplVars = array();

Danach folgt dann der Script für's Captcha:

function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
$sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "29jfkd921");
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){
unset($_SESSION['rechen_captcha_spam']);

dann Dein ursprünglicher Script wie oben, nur fügst vor dem ?> noch ein } ein.

Das sollte funktionieren.

Code: Alles auswählen
<?php
session_start();
/***************************************************************************
Copyright (C) 2004 - 2006 Marcus Campbell
http://sourceforge.net/projects/scuttle/
http://scuttle.org/

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
***************************************************************************/

require_once('header.inc.php');
$userservice =& ServiceFactory::getServiceInstance('UserService');
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');

$tplVars = array();

function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
   $char = substr($string, $i, 1);
   $keychar = substr($key, ($i % strlen($key))-1, 1);
   $char = chr(ord($char)+ord($keychar));
   $result.=$char;
}
return base64_encode($result);
}
$sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "29jfkd921");
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){
unset($_SESSION['rechen_captcha_spam']);

if ($_POST['submitted']) {
    $posteduser = trim(utf8_strtolower($_POST['username']));

    // Check if form is incomplete
    if (!($posteduser) || !($_POST['password']) || !($_POST['email'])) {
        $tplVars['error'] = T_('You <em>must</em> enter a username, password and e-mail address.');

    // Check if username is reserved
    } elseif ($userservice->isReserved($posteduser)) {
        $tplVars['error'] = T_('This username has been reserved, please make another choice.');

    // Check if username already exists
    } elseif ($userservice->getUserByUsername($posteduser)) {
        $tplVars['error'] = T_('This username already exists, please make another choice.');
   
    // Check if e-mail address is valid
    } elseif (!$userservice->isValidEmail($_POST['email'])) {
        $tplVars['error'] = T_('E-mail address is not valid. Please try again.');

    // Register details
    } elseif ($userservice->addUser($posteduser, $_POST['password'], $_POST['email'])) {
        // Log in with new username
        $login = $userservice->login($posteduser, $_POST['password']);
        if ($login) {
            header('Location: '. createURL('bookmarks', $posteduser));
        }
        $tplVars['msg'] = T_('You have successfully registered. Enjoy!');
    } else {
        $tplVars['error'] = T_('Registration failed. Please try again.');
    }
}



$tplVars['loadjs']      = true;
$tplVars['subtitle']    = T_('Register');
$tplVars['formaction']  = createURL('register');
$templateservice->loadTemplate('register.tpl', $tplVars);
}
?>
frameguard
 
Beiträge: 120
Registriert: 05.03.2007, 19:19
Wohnort: Wien

Beitragvon chris » 08.04.2007, 17:03

Leider funktioniert es so nicht. Bekomme eine leere Seite.

Wenn ich das letzte "}" über

Code: Alles auswählen

$tplVars['loadjs']      = true;
$tplVars['subtitle']    = T_('Register');
$tplVars['formaction']  = createURL('register');
$templateservice->loadTemplate('register.tpl', $tplVars);
?>


jetze wird zwar die Seite angezeigt mit dem Rechen Captcha aber es funktioniert nicht, entweder kann sich jeder anmelden oder niemand. Nur nicht mit dem gewünschten Ergebnis.

Schade
chris
 
Beiträge: 2
Registriert: 07.04.2007, 15:01

Beitragvon frameguard » 09.04.2007, 00:01

Dann probier mal Folgendes:

Nach
if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){
unset($_SESSION['rechen_captcha_spam']);

schreib:

}
ELSE {
die ("Falscher Sicherheitscode!");
}

und das andere }, das Du jetzt vor $tplVars['loadjs'] = true; usw. hast, lösch weg.

Das macht dann nix anderes, als daß es bei falschem Sicherheitscode die Ausführung des Scripts einfach abbricht.
frameguard
 
Beiträge: 120
Registriert: 05.03.2007, 19:19
Wohnort: Wien


Zurück zu Rechen Captcha

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron