ilch Forum » Allgemein » HTML, PHP, SQL,... » Google reCaptcha auf Topliste einbinden

Geschlossen
  1. #1
    User Pic
    Galle81 Mitglied
    Registriert seit
    02.10.2009
    Beiträge
    195
    Beitragswertungen
    8 Beitragspunkte
    Guten Abend,

    da sich auf meiner Topliste mittlerweile immer mehr Spamer anmelden (ca. 100-200 pro Tag) und ich habe auch schon mehrere Maßnahmen dagegen unternommen, wie z.B. das Scrip von Bot-Trap.de.

    Ja, ich weiß auch, dass es hier hauptsächlich um ilch geht.
    Trotzdem bin ich mit meinem Latein am Ende, was das einbinden des "Google reCaptcha's" angeht und bitte hier um Hilfestellung. lächeln

    Angemeldet und die Codes hatte ich bereits eingebunden, jedoch müsste dies noch irgendwie in die join.php eingebunden werden.

    Hier wäre der Code, der in den <head> Bereich kommt:
    <script src='https://www.google.com/recaptcha/api.js'></script>


    Dieser soll in das Formular:
    <div class="g-recaptcha" data-sitekey="6LdGSA8TAAAAAFdElhOfhkIX73ZV3NPQQ4izfZNp"></div>


    Hier wäre meine join.php:

    <?php
    //===========================================================================\\
    // Aardvark Topsites PHP 5.2                                                 \\
    // Copyright (c) 2000-2009 Jeremy Scheff.  All rights reserved.              \\
    //---------------------------------------------------------------------------\\
    // http://www.aardvarktopsitesphp.com/                http://www.avatic.com/ \\
    //---------------------------------------------------------------------------\\
    // 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.                                          \\
    //===========================================================================\\
    
    if (!defined('ATSPHP')) {
      die("This file cannot be accessed directly.");
    }
    
    class join extends join_edit {
      function join() {
        global $FORM, $LNG, $TMPL;
    
        $TMPL['header'] = $LNG['join_header'];
    
        $TMPL['error_username'] = '';
        $TMPL['error_style_username'] = '';
        $TMPL['error_password'] = '';
        $TMPL['error_style_password'] = '';
        $TMPL['error_url'] = '';
        $TMPL['error_style_url'] = '';
        $TMPL['error_email'] = '';
        $TMPL['error_style_email'] = '';
        $TMPL['error_title'] = '';
        $TMPL['error_style_title'] = '';
        $TMPL['error_banner_url'] = '';
        $TMPL['error_style_banner_url'] = '';
        $TMPL['error_top'] = '';
        $TMPL['error_style_top'] = '';
        $TMPL['error_captcha'] = '';
        $TMPL['error_style_captcha'] = '';
        $TMPL['error_question'] = '';
        $TMPL['error_style_question'] = '';
    
        if (!isset($FORM['submit'])) {
          $this->form();
        }
        else {
          $this->process();
        }
      }
    
      function form() {
        global $CONF, $FORM, $LNG, $TMPL;
    
        // Display the CAPTCHA?
        if ($CONF['captcha']) {
          $TMPL['rand'] = rand(1, 1000000);
          $TMPL['join_captcha'] = $this->do_skin('join_captcha');
        }
        else {
          $TMPL['join_captcha'] = '';
        }
    
        // Display the security question?
        if ($CONF['security_question'] != '' && $CONF['security_answer'] != '') {
          $TMPL['security_question'] = $CONF['security_question'];
          if (isset($FORM['security_answer'])) { $TMPL['security_answer'] = strip_tags($FORM['security_answer']); }
          else { $TMPL['security_answer'] = ''; }
    
          $TMPL['join_question'] = $this->do_skin('join_question');
        }
        else {
          $TMPL['join_question'] = '';
        }
    
        $TMPL['categories_menu'] = "<select name=\"category\">\n";
        foreach ($CONF['categories'] as $cat => $skin) {
          if (isset($TMPL['category']) && $TMPL['category'] == $cat) {
            $TMPL['categories_menu'] .= "<option value=\"{$cat}\" selected=\"selected\">{$cat}</option>\n";
          }
          else {
            $TMPL['categories_menu'] .= "<option value=\"{$cat}\">{$cat}</option>\n";
          }
        }
        $TMPL['categories_menu'] .= "</select>";
    
        if ($CONF['max_banner_width'] && $CONF['max_banner_height']) {
          $TMPL['join_banner_size'] = sprintf($LNG['join_banner_size'], $CONF['max_banner_width'], $CONF['max_banner_height']);
        }
        else {
          $TMPL['join_banner_size'] = '';
        }
    
        if (!isset($TMPL['username'])) { $TMPL['username'] = ''; }
        if (!isset($TMPL['url'])) { $TMPL['url'] = 'http://'; }
        if (!isset($TMPL['title'])) { $TMPL['title'] = ''; }
        if (!isset($TMPL['description'])) { $TMPL['description'] = ''; }
        if (!isset($TMPL['banner_url'])) { $TMPL['banner_url'] = 'http://'; }
        if (!isset($TMPL['email'])) { $TMPL['email'] = ''; }
    
        if (isset($TMPL['url'])) { $TMPL['url'] = stripslashes($TMPL['url']); }
        if (isset($TMPL['title'])) { $TMPL['title'] = stripslashes($TMPL['title']); }
        if (isset($TMPL['description'])) { $TMPL['description'] = stripslashes($TMPL['description']); }
        if (isset($TMPL['category'])) { $TMPL['category'] = stripslashes($TMPL['category']); }
        if (isset($TMPL['banner_url'])) { $TMPL['banner_url'] = stripslashes($TMPL['banner_url']); }
        if (isset($TMPL['email'])) { $TMPL['email'] = stripslashes($TMPL['email']); }
    
        $TMPL['content'] = $this->do_skin('join_form');
      }
    
      function process() {
        global $CONF, $DB, $FORM, $LNG, $TMPL;
    
        $TMPL['username'] = $DB->escape($FORM['u'], 1);
        $TMPL['url'] = $DB->escape($FORM['url'], 1);
        $TMPL['title'] = $DB->escape($FORM['title'], 1);
        $FORM['description'] = str_replace(array("\r\n", "\n", "\r"), ' ', $FORM['description']);
        $TMPL['description'] = $DB->escape($FORM['description'], 1);
        $TMPL['category'] = $DB->escape($FORM['category'], 1);
        $TMPL['banner_url'] = $DB->escape($FORM['banner_url'], 1);
        $TMPL['email'] = $DB->escape($FORM['email'], 1);
    
        $TMPL['title'] = $this->bad_words($TMPL['title']);
        $TMPL['description'] = $this->bad_words($TMPL['description']);
    
        if ($this->check_ban('join')) {
          if ($this->check_input('join')) {
            $password = md5($FORM['password']);
    
            require_once("{$CONF['path']}/sources/in.php");
            $short_url = in::short_url($TMPL['url']);
    
            $join_date = date('Y-m-d', time() + (3600*$CONF['time_offset']));
    
            $user_ip = $DB->escape($_SERVER['REMOTE_ADDR'], 1);
    
            $DB->query("INSERT INTO {$CONF['sql_prefix']}_sites (username, password, url, short_url, title, description, category, banner_url, email, join_date, active, openid, user_ip)
                      VALUES ('{$TMPL['username']}', '{$password}', '{$TMPL['url']}', '{$short_url}', '{$TMPL['title']}', '{$TMPL['description']}', '{$TMPL['category']}', '{$TMPL['banner_url']}', '{$TMPL['email']}', '{$join_date}', {$CONF['active_default']}, 0, '{$user_ip}')", __FILE__, __LINE__);
            $DB->query("INSERT INTO {$CONF['sql_prefix']}_stats (username) VALUES ('{$TMPL['username']}')", __FILE__, __LINE__);
    
            if ($CONF['google_friendly_links']) {
              $TMPL['verbose_link'] = "";
            }
            else {
              $TMPL['verbose_link'] = "index.php?a=in&u={$TMPL['username']}";
            }
            $TMPL['link_code'] = $this->do_skin('link_code');
    
            $LNG['join_welcome'] = sprintf($LNG['join_welcome'], $TMPL['list_name']);
    
            if ($CONF['email_admin_on_join']) {
              $join_email_admin = new skin('join_email_admin');
              $join_email_admin->send_email($CONF['your_email']);
            }
    
            if ($CONF['active_default']) {
              $join_email = new skin('join_email');
              $join_email->send_email($TMPL['email']);
    
              $TMPL['content'] = $this->do_skin('join_finish');
            }
            else {
              $TMPL['content'] = $this->do_skin('join_finish_approve');
            }
          }
          else {
            $this->form();
          }
        }
        else {
          $this->form();
        }
      }
    }
    ?>


    Und hier meine join_form.html:
    <script type="text/javascript">
    function auf(x) {
    if(document.getElementById(x).style.display == "block") {
    document.getElementById(x).style.display = "none";
    } else {
    document.getElementById(x).style.display = "block";
    }}
    </script>
    
    <i class="fa fa-unsorted fa-3x" style="color:#F00;"></i>&nbsp;<a class="blink" href="#" onclick="auf('unter1');return false;" title="open / close"><span style="color:#F00; font-weight:bold;">REGELN und INFOS BITTE LESEN !!!</span></a>
    	<div style="display:none;" id="unter1">
    	<div class="visiblebox">
    	<div class="toggle_ce">
        <div class="visiblebox"><br>
        <div align="left"><table width="100%" style="font-size:11px" cellspacing="0" cellpadding="0" border="0">
                       <tr>
                         <td height="8" colspan="3"></td>
                       </tr>
                       <tr>
                         <td width="9"></td>
                         <td align="left" valign="middle">
    		    <fieldset>
    	<legend><img src="http://toplist.fsc-clan.org/skins/fusion/info.png" alt="Info" width="16" height="16" align="texttop" /> Was bieten wir Euch?<br /></legend>
    	<table width="100%" border="0" cellspacing="0" cellpadding="0">
    	  <tr>
    	    <td><ul>
            	  <li>Die Anmeldung/Registrierung ist v&ouml;llig Kostenlos.</li>
    			  <li>Besserer <strong>Google PageRank&trade;</strong> f&uuml;r Eure Webseite.</li>
     			  <li>Eine Topliste mit langj&auml;hrigem Bestand (seit 06.2013).</li>
                  <li>Keine nervigen Werbefenster.</li>
    			  <li>Eine Topliste wo nur <strong>Clan's</strong>, <strong>Community's</strong> und <strong>Guilden</strong> gelistet sind.</li>
    			  <li>St&auml;ndige Kontrolle der Topliste, um Betrug zu vermeiden (zu 99%).</li>
    			  <li><span class="blink" style=" font-weight:bold; color:#F00;">NEU!</span> Die ersten 3 Platzierungen erhalten zum Monatsende einen Award. Die jeweiligen Gewinner werden per E-Mail informiert.</li>
    			</ul>
        <div style=" padding-left:30px"><img src="http://toplist.fsc-clan.org/images/fsc_award_vorschau.png" alt="Award Vorschau" border="0" /></div></td>
          </tr>
    	  </table>
    	</fieldset>
    	<br>
        	<fieldset>
    	<legend><img src="http://toplist.fsc-clan.org/skins/fusion/info.png" alt="Rules" width="16" height="16" align="texttop" /> REGELN: (Bitte lesen!!!)<br></legend>
    	<table width="100%" border="0" cellspacing="0" cellpadding="0">
    	  <tr>
    	    <td>Es werden nur <strong>Clan's</strong>, <strong>Community's</strong> und <strong>Guilden</strong> akzeptiert und freigeschaltet.
    		<ul>
     		 <li>Bitte nur vollst&auml;ndige Seiten und <strong>keine Baustellen</strong>!</li>
    	    <li> Seiten mit folgenden Inhalten werden nicht akzeptiert!!<br />
       	   <ul class="Stil3">
            <li><span style="font-weight:bold; color:#F00;"> Pornografische Seiten</span></li>
            <li><span style="font-weight:bold; color:#F00;"> Seiten mit illegalen Downloads </span></li>
            <li><span style="font-weight:bold; color:#F00;"> Rechtsradikale Seiten </span></li>
            <li><span style="font-weight:bold; color:#F00;"> sonstige Seiten, die gegen geltendes Recht versto&szlig;en </span></li>
            <li><span style="font-weight:bold; color:#F00;"> andere Toplisten</span></li>
            <li><span style="font-weight:bold; color:#F00;"> Seiten mit Fake Aufrufe</span></li>
            <li><span style="font-weight:bold; color:#F00;"> Linkfarmen</span></li>
            <li><span style="font-weight:bold; color:#F00;"> Sales Pages</span></li>
            <li><span style="font-weight:bold; color:#F00;"> sonstige Spamseiten</span></li>
          </ul>
        </li>
    	</ul>
    
    	<ol>
    	  <li> Der <strong>VoteButton</strong> (Code muss genau &uuml;bernommen werden) muss auf der <strong>Hauptseite Deiner Webseite</strong> eingebunden werden.</li><br>
          <li> Die Gr&ouml;&szlig;e Deines Banners darf max. <strong>468x60px</strong> betragen und es wird nur .jpg, .png oder .gif akzeptiert!!!</li><br>
     	  <li> Webseiten die l&auml;nger als <strong>30 Tage</strong> keine Seitenaufrufe verbuchen werden automatisch gel&ouml;scht.</li><br>
     	  <li> Der Banner-Code darf nur auf der <strong>angemeldeten Webseiten </strong>(nicht erlaubt MOTD des Servers, etc.)  verwendet werden.</li><br>
     	  <li> <strong>Wer versucht das System zu seinen Gunsten zu manipulieren wird aus der Topliste ausgeschlossen!</strong><br>(Dazu z&auml;hlen: Bots, Router Neustarts, Proxys, etc.)</li><br>
     	  <li> Die <strong>Fun Sniper Clan Toplist</strong> ist ein <strong>kostenloser Service</strong>.<br>Wir behalten uns das <strong>Recht</strong>  vor, <strong>Mitglieder abzulehnen, auszuschlie&szlig;en und zu l&ouml;schen</strong>!</li><br>
          <li> Jeder Webmaster (Mitglied) haftet selbst f&uuml;r obsz&ouml;ne Texte und Bildmaterialien und evtl. f&uuml;r dadurch entstandene Verletzungen der Rechte Dritter!<br>Zudem haftet der Webmaster (Mitglied) f&uuml;r das Urheberrecht seines eingebauten Banners oder Textes zur Clanbeschreibung.</li>
    	</ol></td>
          </tr>
    	  </table>
    	</fieldset>
        <br>
       <fieldset>
    	<legend><img src="http://toplist.fsc-clan.org/skins/fusion/info.png" alt="Info" width="16" height="16" align="texttop" /> REGELN: Kommentare und Seitenbewertung<br /></legend>
    	<table width="100%" border="0" cellspacing="0" cellpadding="0">
    	  <tr>
    	    <td><ul>
            <li>Keine rassistischen, pornographischen oder gewaltverherrlichenden &Auml;u&szlig;erungen.</li>
            <li>Keine Beleidigungen! Kein Spam!</li>
            <li>Nicht alles in Gro&szlig;buchstaben schreiben (Caps lock).</li>
      		<li>Kein endloses Wiederholen von S&auml;tzen, URLs oder sinnloser Zeichenfolgen.</li>
      		<li>Bitte schreibt nicht nur ein Wort.</li>
            <li>Racheaktionen und private Streitereien haben hier nichts zu suchen.</li>
           <li>Die "Kommentarfunktion" ersetzt NICHT das "<a href="http://toplist.fsc-clan.org/index.php?a=page&id=report" title="Versto&szlig; melden"><span style=" font-weight:bold; color:#ff3c00;">Versto&szlig; melden</span></a>" Formular!</li>
            <li><strong>Bewertet bitte fair!</strong></li></ul>
    <strong>Sollten Kommentare gegen die oben genannten Regeln versto&szlig;en, werden diese kommentarlos gel&ouml;scht!</strong></td>
          </tr>
    	  </table>
    	</fieldset>
        </td>
          <td width="9"></td>
           </tr>
    	</table></div>
    	</div>
    	<div class="togglebox">
        </div>
        <div class="toggler"><br>
        </div>
        </div>
        </div>
        </div>
        
    <p class="{$error_style_top}">{$error_top}</p>
    
    <form action="index.php?a=join" method="post" name="join_form">
    <fieldset>
    <legend><i class="fa fa-user fa-5x"></i>&nbsp;{$lng->join_user}</legend>
    <div class="{$error_style_username}"><label>{$lng->g_username}<br />
    <input type="text" name="u" size="20" value="{$username}" />
    {$error_username}
    </label></div><br />
    <div class="{$error_style_password}">
    <label style="float: left; margin-right: 2em;">{$lng->g_password}<br />
    <input type="password" name="password" size="20" />
    </label>
    <label>{$lng->join_confirm_password}<br/ >
    <input type="password" name="confirm_password" size="20" />
    {$error_password}
    </label></div>
    </fieldset>
    <br />
    <fieldset>
    <legend><i class="fa fa-external-link fa-5x"></i>&nbsp;{$lng->join_website}</legend>
    <div class="{$error_style_url}"><label>{$lng->g_url}<br />
    <input type="text" name="url" size="50" value="{$url}" />
    {$error_url}
    </label></div><br />
    <div class="{$error_style_title}"><label>{$lng->g_title}<br />
    <input type="text" name="title" size="50" value="{$title}" />
    {$error_title}
    </label></div><br />
    <label>{$lng->g_description}&nbsp;(max. 130 Zeichen zul&auml;ssig)<br />
    <textarea cols="40" rows="5" name="description">{$description}</textarea><br /><br />
    </label>
    <label>{$lng->g_category}<br />
    {$categories_menu}<br /><br />
    </label>
    <div class="{$error_style_banner_url}"><label>{$lng->g_banner_url} {$join_banner_size}<br />
    <input type="text" name="banner_url" size="50" value="{$banner_url}" />
    {$error_banner_url}
    </label></div><br />
    <div class="{$error_style_email}"><label>{$lng->g_email}<br />
    <input type="text" name="email" size="50" value="{$email}" />
    {$error_email}
    </label></div>
    </fieldset>
    <br />
    <fieldset>
    <legend><i class="fa fa-lock fa-5x"></i>&nbsp;{$lng->join_security}</legend>
    {$join_captcha}
    {$join_question}
    <input name="submit" type="submit" value="{$lng->join_header}" /><br />
    <table width="100%" align="center" cellpadding="0" cellspacing="0" border="0">
    <tr>
    <td align="left" width="100%" style="padding-top:5px;"><span style="font-size:11px;">Mit dem Eintragen best&auml;tige ich, dass ich die <a href="http://toplist.fsc-clan.org/index.php?a=page&id=rules" title="Regeln ansehen" target="_blank"><span style="font-weight:bold; color:#ff0000;">Regeln</span></a> gelesen habe und damit einverstanden bin.</span></td>
    </tr>
    <tr>
    <td align="left" width="100%" style="padding-top:8px; font-size:11px;">Fragen, Probleme?</td>
    </tr>
    <tr>
    <td align="left" width="100%"><span style="font-size:11px;">&raquo; <a href="http://www.fsc-clan.org/index.php?contact" target="_blank"><b>zum Support</b></a></span></td>
    </tr>
    </table>
    </fieldset>
    </form>


    Falls ihr noch etwas braucht, sagt einfach bescheid. lächeln

    LG, Galle

    betroffene Homepage: toplist.fsc-clan.org/index.php?a=join
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Saarlonz Hall Of Fame
    Registriert seit
    07.08.2008
    Beiträge
    3.003
    Beitragswertungen
    235 Beitragspunkte
    1 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Galle81 Mitglied
    Registriert seit
    02.10.2009
    Beiträge
    195
    Beitragswertungen
    8 Beitragspunkte
    Danke Saarlonz, werde ich mir heute Nachmittag mal etwas genauer anschauen, auch wenn mein englisch nicht ganz so gut ist. lächeln

    LG, Galle
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    MOODFOR Mitglied
    Registriert seit
    25.06.2014
    Beiträge
    177
    Beitragswertungen
    2 Beitragspunkte
    Ich benutzte eine ziemlich große htaccess Blacklist, das funktioniert auch super seitdem haben ich nur alle paar Monate einen Eintrag lächeln

    externer Link

    Ganz wichtig ist, dass du "Semalt" blockierst , das Netzwerk generiert den meisten Spam ....


    # block visitors referred from semalt.com
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} semalt\.com [NC]
    RewriteRule (.*) http://www.semalt.com [R=403,L]
    The government pretend,
    they your friend. And then when you steal some shit,they put you in jail
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Galle81 Mitglied
    Registriert seit
    02.10.2009
    Beiträge
    195
    Beitragswertungen
    8 Beitragspunkte
    Ich ich habe bis jetzt schon ca. 1000 Ip's gesperrt (exakt oder global), trotzdem bringt es nur kurz ruhe. traurig

    So, ich habe jetzt mal diese beiden Dinge in meine join_form.html ein gebunden und es wird auch angezeigt, jedoch ist noch keine Funktion enthalten.
    <script src='https://www.google.com/recaptcha/api.js'></script>
    
    <div class="g-recaptcha" data-sitekey="6LdGSA8TAAAAAFdElhOfhkIX73ZV3NPQQ4izfZNp"></div>


    Jetzt verlässt mich schon Wissen, wie ich weiter verfahren soll.
    Wo müsste z.B. bei Step 2 dieser Code eingebunden werden?

    <? php 
      foreach  ($ _POST  als  $ key  => $ value) {
        echo  "<p> <strong>  '. $ key.": </ strong>'. $ value. "</ p>";
      }
    ?>
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Saarlonz Hall Of Fame
    Registriert seit
    07.08.2008
    Beiträge
    3.003
    Beitragswertungen
    235 Beitragspunkte
    Hast du den die lib eingebunden? Du musst nach dem absenden des Formulars erst prüfen ob das captcha richtig war, das tust du mittels if. Wenn richtig wird wie gewohnt der Rest der php ausgeführt.
    1 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Galle81 Mitglied
    Registriert seit
    02.10.2009
    Beiträge
    195
    Beitragswertungen
    8 Beitragspunkte
    Ich habe bis jetzt nur die beiden Codes in die join_form.html eingebunden und die recaptchalib.php auf den FTP hoch geladen.
    Dann hört es leider auch schon auf.

    So sieht die recaptchalib.php im Moment bei mir aus:
    <?php
    /**
     * This is a PHP library that handles calling reCAPTCHA.
     *    - Documentation and latest version
     *          https://developers.google.com/recaptcha/docs/php
     *    - Get a reCAPTCHA API Key
     *          https://www.google.com/recaptcha/admin/create
     *    - Discussion group
     *          http://groups.google.com/group/recaptcha
     *
     * @copyright Copyright (c) 2014, Google Inc.
     * @link      http://www.google.com/recaptcha
     *
     * Permission is hereby granted, free of charge, to any person obtaining a copy
     * of this software and associated documentation files (the "Software"), to deal
     * in the Software without restriction, including without limitation the rights
     * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
     * copies of the Software, and to permit persons to whom the Software is
     * furnished to do so, subject to the following conditions:
     *
     * The above copyright notice and this permission notice shall be included in
     * all copies or substantial portions of the Software.
     *
     * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     * THE SOFTWARE.
     */
    /**
     * A ReCaptchaResponse is returned from checkAnswer().
     */
    class ReCaptchaResponse
    {
        public $success;
        public $errorCodes;
    }
    class ReCaptcha
    {
        private static $_signupUrl = "https://www.google.com/recaptcha/admin";
        private static $_siteVerifyUrl =
            "https://www.google.com/recaptcha/api/siteverify?";
        private $_secret;
        private static $_version = "php_1.0";
        /**
         * Constructor.
         *
         * @param string $secret shared secret between site and ReCAPTCHA server.
         */
        function ReCaptcha($secret)
        {
            if ($secret == null || $secret == "") {
                die("To use reCAPTCHA you must get an API key from <a href='"
                    . self::$_signupUrl . "'>" . self::$_signupUrl . "</a>");
            }
            $this->_secret=$secret;
        }
        /**
         * Encodes the given data into a query string format.
         *
         * @param array $data array of string elements to be encoded.
         *
         * @return string - encoded request.
         */
        private function _encodeQS($data)
        {
            $req = "";
            foreach ($data as $key => $value) {
                $req .= $key . '=' . urlencode(stripslashes($value)) . '&';
            }
            // Cut the last '&'
            $req=substr($req, 0, strlen($req)-1);
            return $req;
        }
        /**
         * Submits an HTTP GET to a reCAPTCHA server.
         *
         * @param string $path url path to recaptcha server.
         * @param array  $data array of parameters to be sent.
         *
         * @return array response
         */
        private function _submitHTTPGet($path, $data)
        {
            $req = $this->_encodeQS($data);
            $response = file_get_contents($path . $req);
            return $response;
        }
        /**
         * Calls the reCAPTCHA siteverify API to verify whether the user passes
         * CAPTCHA test.
         *
         * @param string $remoteIp   IP address of end user.
         * @param string $response   response string from recaptcha verification.
         *
         * @return ReCaptchaResponse
         */
        public function verifyResponse($remoteIp, $response)
        {
            // Discard empty solution submissions
            if ($response == null || strlen($response) == 0) {
                $recaptchaResponse = new ReCaptchaResponse();
                $recaptchaResponse->success = false;
                $recaptchaResponse->errorCodes = 'missing-input';
                return $recaptchaResponse;
            }
            $getResponse = $this->_submitHttpGet(
                self::$_siteVerifyUrl,
                array (
                    'secret' => $this->_secret,
                    'remoteip' => $remoteIp,
                    'v' => self::$_version,
                    'response' => $response
                )
            );
            $answers = json_decode($getResponse, true);
            $recaptchaResponse = new ReCaptchaResponse();
            if (trim($answers ['success']) == true) {
                $recaptchaResponse->success = true;
            } else {
                $recaptchaResponse->success = false;
                $recaptchaResponse->errorCodes = $answers [error-codes];
            }
            return $recaptchaResponse;
        }
    }
    ?>


    LG, Galle
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Saarlonz Hall Of Fame
    Registriert seit
    07.08.2008
    Beiträge
    3.003
    Beitragswertungen
    235 Beitragspunkte
    // hier wird die lib eingebunden
    require_once('link/zur/lib/recaptchalib.php');
    // hier muss der 2 (Geheime) Google Schlüssel eingetragen werden
    $secret = "GOOGLE_KEY_SECRET";
    $response = null;
    $reCaptcha = new ReCaptcha($secret);
    if ($_POST["g-recaptcha-response"]) {
        $response = $reCaptcha->verifyResponse(
                $_SERVER["REMOTE_ADDR"], $_POST["g-recaptcha-response"]
        );
    }
    // ab hier prüfung ob captcha gültig
    if ($response != null && $response->success) {
        echo 'captcha ok';
    } else {
        echo 'captcha nicht ok';
    }




    Zuletzt modifiziert von Saarlonz am 18.11.2015 - 17:37:34
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Galle81 Mitglied
    Registriert seit
    02.10.2009
    Beiträge
    195
    Beitragswertungen
    8 Beitragspunkte
    Wo müsste ich denn den Code eintragen in die join.php?

    // hier wird die lib eingebunden
    require_once('sources/recaptchalib.php');
    // hier muss der 2 (Geheime) Google Schlüssel eingetragen werden
    $secret = "6LdXXX";
    $response = null;
    $reCaptcha = new ReCaptcha($secret);
    if ($_POST["g-recaptcha-response"]) {
        $response = $reCaptcha->verifyResponse(
                $_SERVER["REMOTE_ADDR"], $_POST["g-recaptcha-response"]
        );
    }
    // ab hier prüfung ob captcha gültig
    if ($response != null && $response->success) {
        echo 'captcha ok';
    } else {
        echo 'captcha nicht ok';
    }
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Saarlonz Hall Of Fame
    Registriert seit
    07.08.2008
    Beiträge
    3.003
    Beitragswertungen
    235 Beitragspunkte
    Du kannst es mal zu Testzwecken am Anfang der php einfügen. Wenn alles so funktioniert wie es soll, würde ich den db insert in die if Bedingung einfügen. So wird der insert nur ausgeführt wenn das captcha ok ist.
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Galle81 Mitglied
    Registriert seit
    02.10.2009
    Beiträge
    195
    Beitragswertungen
    8 Beitragspunkte
    Denn erscheint folgender Fehler:
    Fatal error: Class 'ReCaptcha' not found in /var/www/web711/html/toplist/sources/join.php on line 24


    <?php
    //===========================================================================\\
    // Aardvark Topsites PHP 5.2                                                 \\
    // Copyright (c) 2000-2009 Jeremy Scheff.  All rights reserved.              \\
    //---------------------------------------------------------------------------\\
    // http://www.aardvarktopsitesphp.com/                http://www.avatic.com/ \\
    //---------------------------------------------------------------------------\\
    // 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.                                          \\
    //===========================================================================\\
    
    // hier wird die lib eingebunden
    require_once('sources/recaptchalib.php');
    // hier muss der 2 (Geheime) Google Schlüssel eingetragen werden
    $secret = "6LdGSXXX";
    $response = null;
    $reCaptcha = new ReCaptcha($secret);
    if ($_POST["g-recaptcha-response"]) {
        $response = $reCaptcha->verifyResponse(
                $_SERVER["REMOTE_ADDR"], $_POST["g-recaptcha-response"]
        );
    }
    // ab hier prüfung ob captcha gültig
    if ($response != null && $response->success) {
        echo 'captcha ok';
    } else {
        echo 'captcha nicht ok';
    }
    
    if (!defined('ATSPHP')) {
      die("This file cannot be accessed directly.");
    }
    
    class join extends join_edit {
      function join() {
        global $FORM, $LNG, $TMPL;
    
        $TMPL['header'] = $LNG['join_header'];
    
        $TMPL['error_username'] = '';
        $TMPL['error_style_username'] = '';
        $TMPL['error_password'] = '';
        $TMPL['error_style_password'] = '';
        $TMPL['error_url'] = '';
        $TMPL['error_style_url'] = '';
        $TMPL['error_email'] = '';
        $TMPL['error_style_email'] = '';
        $TMPL['error_title'] = '';
        $TMPL['error_style_title'] = '';
        $TMPL['error_banner_url'] = '';
        $TMPL['error_style_banner_url'] = '';
        $TMPL['error_top'] = '';
        $TMPL['error_style_top'] = '';
        $TMPL['error_captcha'] = '';
        $TMPL['error_style_captcha'] = '';
        $TMPL['error_question'] = '';
        $TMPL['error_style_question'] = '';
    
        if (!isset($FORM['submit'])) {
          $this->form();
        }
        else {
          $this->process();
        }
      }
    
      function form() {
        global $CONF, $FORM, $LNG, $TMPL;
    
        // Display the CAPTCHA?
        if ($CONF['captcha']) {
          $TMPL['rand'] = rand(1, 1000000);
          $TMPL['join_captcha'] = $this->do_skin('join_captcha');
        }
        else {
          $TMPL['join_captcha'] = '';
        }
    
        // Display the security question?
        if ($CONF['security_question'] != '' && $CONF['security_answer'] != '') {
          $TMPL['security_question'] = $CONF['security_question'];
          if (isset($FORM['security_answer'])) { $TMPL['security_answer'] = strip_tags($FORM['security_answer']); }
          else { $TMPL['security_answer'] = ''; }
    
          $TMPL['join_question'] = $this->do_skin('join_question');
        }
        else {
          $TMPL['join_question'] = '';
        }
    
        $TMPL['categories_menu'] = "<select name=\"category\">\n";
        foreach ($CONF['categories'] as $cat => $skin) {
          if (isset($TMPL['category']) && $TMPL['category'] == $cat) {
            $TMPL['categories_menu'] .= "<option value=\"{$cat}\" selected=\"selected\">{$cat}</option>\n";
          }
          else {
            $TMPL['categories_menu'] .= "<option value=\"{$cat}\">{$cat}</option>\n";
          }
        }
        $TMPL['categories_menu'] .= "</select>";
    
        if ($CONF['max_banner_width'] && $CONF['max_banner_height']) {
          $TMPL['join_banner_size'] = sprintf($LNG['join_banner_size'], $CONF['max_banner_width'], $CONF['max_banner_height']);
        }
        else {
          $TMPL['join_banner_size'] = '';
        }
    
        if (!isset($TMPL['username'])) { $TMPL['username'] = ''; }
        if (!isset($TMPL['url'])) { $TMPL['url'] = 'http://'; }
        if (!isset($TMPL['title'])) { $TMPL['title'] = ''; }
        if (!isset($TMPL['description'])) { $TMPL['description'] = ''; }
        if (!isset($TMPL['banner_url'])) { $TMPL['banner_url'] = 'http://'; }
        if (!isset($TMPL['email'])) { $TMPL['email'] = ''; }
    
        if (isset($TMPL['url'])) { $TMPL['url'] = stripslashes($TMPL['url']); }
        if (isset($TMPL['title'])) { $TMPL['title'] = stripslashes($TMPL['title']); }
        if (isset($TMPL['description'])) { $TMPL['description'] = stripslashes($TMPL['description']); }
        if (isset($TMPL['category'])) { $TMPL['category'] = stripslashes($TMPL['category']); }
        if (isset($TMPL['banner_url'])) { $TMPL['banner_url'] = stripslashes($TMPL['banner_url']); }
        if (isset($TMPL['email'])) { $TMPL['email'] = stripslashes($TMPL['email']); }
    
        $TMPL['content'] = $this->do_skin('join_form');
      }
    
      function process() {
        global $CONF, $DB, $FORM, $LNG, $TMPL;
    
        $TMPL['username'] = $DB->escape($FORM['u'], 1);
        $TMPL['url'] = $DB->escape($FORM['url'], 1);
        $TMPL['title'] = $DB->escape($FORM['title'], 1);
        $FORM['description'] = str_replace(array("\r\n", "\n", "\r"), ' ', $FORM['description']);
        $TMPL['description'] = $DB->escape($FORM['description'], 1);
        $TMPL['category'] = $DB->escape($FORM['category'], 1);
        $TMPL['banner_url'] = $DB->escape($FORM['banner_url'], 1);
        $TMPL['email'] = $DB->escape($FORM['email'], 1);
    
        $TMPL['title'] = $this->bad_words($TMPL['title']);
        $TMPL['description'] = $this->bad_words($TMPL['description']);
    
        if ($this->check_ban('join')) {
          if ($this->check_input('join')) {
            $password = md5($FORM['password']);
    
            require_once("{$CONF['path']}/sources/in.php");
            $short_url = in::short_url($TMPL['url']);
    
            $join_date = date('Y-m-d', time() + (3600*$CONF['time_offset']));
    
            $user_ip = $DB->escape($_SERVER['REMOTE_ADDR'], 1);
    
            $DB->query("INSERT INTO {$CONF['sql_prefix']}_sites (username, password, url, short_url, title, description, category, banner_url, email, join_date, active, openid, user_ip)
                      VALUES ('{$TMPL['username']}', '{$password}', '{$TMPL['url']}', '{$short_url}', '{$TMPL['title']}', '{$TMPL['description']}', '{$TMPL['category']}', '{$TMPL['banner_url']}', '{$TMPL['email']}', '{$join_date}', {$CONF['active_default']}, 0, '{$user_ip}')", __FILE__, __LINE__);
            $DB->query("INSERT INTO {$CONF['sql_prefix']}_stats (username) VALUES ('{$TMPL['username']}')", __FILE__, __LINE__);
    
            if ($CONF['google_friendly_links']) {
              $TMPL['verbose_link'] = "";
            }
            else {
              $TMPL['verbose_link'] = "index.php?a=in&u={$TMPL['username']}";
            }
            $TMPL['link_code'] = $this->do_skin('link_code');
    
            $LNG['join_welcome'] = sprintf($LNG['join_welcome'], $TMPL['list_name']);
    
            if ($CONF['email_admin_on_join']) {
              $join_email_admin = new skin('join_email_admin');
              $join_email_admin->send_email($CONF['your_email']);
            }
    
            if ($CONF['active_default']) {
              $join_email = new skin('join_email');
              $join_email->send_email($TMPL['email']);
    
              $TMPL['content'] = $this->do_skin('join_finish');
            }
            else {
              $TMPL['content'] = $this->do_skin('join_finish_approve');
            }
          }
          else {
            $this->form();
          }
        }
        else {
          $this->form();
        }
      }
    }
    ?>



    Zuletzt modifiziert von Galle81 am 19.11.2015 - 07:07:00
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Saarlonz Hall Of Fame
    Registriert seit
    07.08.2008
    Beiträge
    3.003
    Beitragswertungen
    235 Beitragspunkte
    Hast du den richtigen Pfad zur recaptchalib.php angegeben?
    1 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    Galle81 Mitglied
    Registriert seit
    02.10.2009
    Beiträge
    195
    Beitragswertungen
    8 Beitragspunkte
    Guten morgen,

    der Pfad sollte jetzt stimmen.
    Allerdings steht jetzt ganz oben "captcha nicht ok" und die styles stimmen irgendwie nicht mehr.

    Zudem kommt wenn ich eine Seite eintragen habe folgender Fehler:
    Warning: Cannot modify header information - headers already sent by (output started at /var/www/web711/html/toplist/sources/join.php:34) in /var/www/web711/html/toplist/sources/misc/session.php on line 56


    PS: Der Pfad wurde oben in der join.php angepasst.

    LG, Galle


    Zuletzt modifiziert von Galle81 am 19.11.2015 - 07:08:06
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    Galle81 Mitglied
    Registriert seit
    02.10.2009
    Beiträge
    195
    Beitragswertungen
    8 Beitragspunkte
    Das Thema hat sich dank Saarlonz soweit erledigt. lächeln

    Vielen Dank nochmal und ein schönes Wochenende gewünscht.

    LG, Galle
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten