Need Help: 18er Mod für's Forum

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
mr. gamesbay
Mitglied
Beiträge: 313
Registriert: 13.01.2003 10:08
Wohnort: Meran

Need Help: 18er Mod für's Forum

Beitrag von mr. gamesbay »

Hallo Com

Ich versuche nen 18er check in meine Seite einzubauen.
So schaut sie Sache bis jetzt aus:
http://www.gamesbay.de/forum/18er.php

Es gibt zwar einen Mod, der will aber nicht bei mir laufen :-/
Deswegen versuche ich grade irgendwie einen selber einen zu basteln :)
Aber irgendwie komm ich nicht mehr weiter, da meine PHP Fähigkeiten doch sehr begrenzt sind.

Ich bin auf der suche nach folgendes.
Nachdem sich der User, als 18 Jähriger verifiziert hat, sollte die nächste Seite in etwa so ausschaun:
Danke.
[Hier klicken] um den Zutritt für das Forum anzufordern.
In dem Moment wo er auf „Hier Klicken“ drückt, sollte mir automatisch ne PN (oder Mail) zugestellt werden (mit seinem Benutzernamen und mit einem eigens erstellten Text.

Hoffe ihr könnt mir so weit folgen :roll:
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

Würde das dann über die 18er.php laufen?
Das könntest über ´nen Modus machen, sprich der Link würde datei.php?mode=verify lauten.
Den Modus 'verify' definierst du darüber, dann in etwa wie folgt..
if( isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode']) )
{
$mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
}
else
{
$mode = "";
}

if( !empty($mode) )
{
switch($mode)
{
case 'verify':
$id_sender = '2'; // id des Empfängers (z.B. Admin)
$id_resv = $hmm; // id des Senders
$msg_time = time();
$pm_subject = 'Titel der PN';
$pm_text = 'Inhalt der PN';

$sql = "INSERT INTO " . PRIVMSGS_TABLE . " (privmsgs_type, privmsgs_subject, privmsgs_from_userid, privmsgs_to_userid, privmsgs_date, privmsgs_ip, privmsgs_enable_html, privmsgs_enable_bbcode, privmsgs_enable_smilies, privmsgs_attach_sig)
VALUES (" . PRIVMSGS_NEW_MAIL . ", '" . str_replace("\'", "''", $pm_subject) . "', " . $id_sender . ", " . $id_resv . ", $msg_time, '7f000001', 1, 1, 1, 0)";
if ( !($result = $db->sql_query($sql, BEGIN_TRANSACTION)) )
{
message_die(GENERAL_ERROR, "Could not insert/update private message sent info.", "", __LINE__, __FILE__, $sql_info);
}

$privmsg_sent_id = $db->sql_nextid();
$sql = "INSERT INTO " . PRIVMSGS_TEXT_TABLE . " (privmsgs_text_id, privmsgs_bbcode_uid, privmsgs_text)
VALUES ($privmsg_sent_id, '". $bbcode_uid ."', '" . str_replace("\'", "''", addslashes($pm_text)) . "')";
if ( !$db->sql_query($sql, END_TRANSACTION) )
{
message_die(GENERAL_ERROR, "Could not insert/update private message sent text.", "", __LINE__, __FILE__, $sql_info);
}

$sql = "UPDATE " . USERS_TABLE . " SET user_new_privmsg = user_new_privmsg + 1, user_last_privmsg = " . time() . "
WHERE user_id = " . $id_resv;
if ( !$status = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not update private message new/read status for user', '', __LINE__, __FILE__, $sql);
}

$message = 'Nachricht, die erscheint, wenn man den Link betätigt hat';
message_die(GENERAL_MESSAGE, $message);
break;

default:
message_die(GENERAL_MESSAGE, $lang['No_mode']);
break;
}
exit;
}
$hmm (id des Users) müsstest du dann nur irgendwie rüberbringen.
fussle
Mitglied
Beiträge: 1246
Registriert: 25.06.2002 07:31

Beitrag von fussle »

ich such auch schon seit ewigkeiten nach einem "checktor". zur zeit benutze ich die ueber18.de abfrage.

leider habe ich bisher keine bessere möglichkeit gefunden ...
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

Was is denn an der 18er verkehrt ? Beispiel ?
Benutzeravatar
mr. gamesbay
Mitglied
Beiträge: 313
Registriert: 13.01.2003 10:08
Wohnort: Meran

Beitrag von mr. gamesbay »

Danke Acid, aber ich komm nicht ganz weiter :-/

Ich poste mal die Seiten:
18er.php (die Abfrade (nur Formular) selber):

Code: Alles auswählen

<?php 
define('IN_PHPBB', true); 

$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 

$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata); 

if( !$userdata['session_logged_in'] ) 
{ 
header("Location: " . append_sid("login.$phpEx?redirect=18er.$phpEx", true)); 
exit; 
} 

include($phpbb_root_path . 'includes/page_header.'.$phpEx); 
?> 
<html>
<table width="100%" cellspacing="2" cellpadding="2" border="0" align="center">
  <tr> 
	<td align="left" class="nav"><a href="index.php" class="nav">Gamesbay Foren-Übersicht</a></td>
  </tr>
</table>

<table width="100%" cellpadding="4" cellspacing="1" border="0" class="forumline" align="center">
  <tr> 
	<th height="25" class="thHead" nowrap="nowrap">blabla</th>
  </tr>
  <tr> 
	<td class="row1"><table border="0" cellpadding="3" cellspacing="1" width="100%">
		  <tr> 
			<td align="center" class="nav">
<div align="center"><strong>Für den Zugang in das 18er Forum, ist diese Verifizierung notwendig!</strong></font><br> 
  <br><form action="perso.php" method=post>
  <img src="5.gif" width="300" height="220"><br><br>
    <font size="1">Zur Alterskontrolle bitte Ausweisnummer hier eintragen:</font>
<table>
      <tr> 
        <td><input name="Block1" size=10 maxlength=11></td>
        <td><input name="Block2" size=6 maxlength=7></td>
        <td><input name="Block3" size=6 maxlength=7></td>
        <td><input name="Block4" size=1 maxlength=1></td>
      </tr>
      <tr> 
        <td align=center colspan=4><INPUT TYPE="SUBMIT" VALUE="  Submit  "></td>
      </tr>
    </table>
 </form>
 </div>

</td>
		  </tr>
		  </table></td>
  </tr>
</table>
</html>
<? 
include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 
?>
perso.php (der Check selber)

Code: Alles auswählen

<?php 
define('IN_PHPBB', true); 

$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 

$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata); 

if( !$userdata['session_logged_in'] ) 
{ 
header("Location: " . append_sid("login.$phpEx?redirect=18er.$phpEx", true)); 
exit; 
} 

include($phpbb_root_path . 'includes/page_header.'.$phpEx); 
?> 
<html>
<table width="100%" cellspacing="2" cellpadding="2" border="0" align="center">
  <tr> 
	<td align="left" class="nav"><a href="index.php" class="nav">Gamesbay Foren-Übersicht</a></td>
  </tr>
</table>

<table width="100%" cellpadding="4" cellspacing="1" border="0" class="forumline" align="center">
  <tr> 
	<th height="25" class="thHead" nowrap="nowrap">blabla</th>
  </tr>
  <tr> 
	<td class="row1"><table border="0" cellpadding="3" cellspacing="1" width="100%">
		  <tr> 
			<td align="center" class="nav">
<?

include("18erconfig.php");

$Zwischensumme = 0;
$Endsumme = 0;
.
.
.
.
.
.

if ($Gesamtkontrolle == true)
 print ($Okay); 
else
 print ($Error);
?>

</td>
		  </tr>
		  </table></td>
  </tr>
</table>
</html>
<? 
include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 
?>
Hier noch die 18erconfig.php

Code: Alles auswählen

<?
// Zugang gewährt
$Okay = "Danke, es funzt. Du bist 18, oder älter";

// Zugang verwehrt
$Error = "<p>Entweder hast du die falsche Nummer eingegeben, oder bist jünger als 18.</p>";

/* Modus = 1 : Die Personalausweisnummer wird lediglich auf Korrektheit überprüft
   Modus = 2 : Das Alter wird errechnet und mit der Variable $MinAlter verglichen */

$Modus = 2;

// Nur für den Modus 2 relevant
$MinAlter = 18; 
?>
Benutzeravatar
mr. gamesbay
Mitglied
Beiträge: 313
Registriert: 13.01.2003 10:08
Wohnort: Meran

Beitrag von mr. gamesbay »

Hat keiner ne idee ? :roll:
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

Na woran hapert´s denn? Du willst, sobald man sich bei der 18er verifiziert hat, eine Seite mit ´ner Meldung und Link kommt... der Link schickt dann nach Betätigung eine PN an dich!?
Benutzeravatar
mr. gamesbay
Mitglied
Beiträge: 313
Registriert: 13.01.2003 10:08
Wohnort: Meran

Beitrag von mr. gamesbay »

Acid hat geschrieben:Na woran hapert´s denn? Du willst, sobald man sich bei der 18er verifiziert hat, eine Seite mit ´ner Meldung und Link kommt... der Link schickt dann nach Betätigung eine PN an dich!?

Ich habe leider keine ahnung wohin mit deinem Code !? :roll:
Des ist mein Problem :oops:
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

Is das obige alles vom 18er oder fehlt noch was, wenn ich es mal testen möchte?
Acid hat geschrieben:Na woran hapert´s denn? Du willst, sobald man sich bei der 18er verifiziert hat, eine Seite mit ´ner Meldung und Link kommt... der Link schickt dann nach Betätigung eine PN an dich!?
Benutzeravatar
mr. gamesbay
Mitglied
Beiträge: 313
Registriert: 13.01.2003 10:08
Wohnort: Meran

Beitrag von mr. gamesbay »

18er.php ist vollständig.

Aber hier die ganze perso.php:

Code: Alles auswählen

<?php 
define('IN_PHPBB', true); 

$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 

$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata); 

if( !$userdata['session_logged_in'] ) 
{ 
header("Location: " . append_sid("login.$phpEx?redirect=18er.$phpEx", true)); 
exit; 
} 

include($phpbb_root_path . 'includes/page_header.'.$phpEx); 
?> 
<html>
<table width="100%" cellspacing="2" cellpadding="2" border="0" align="center">
  <tr> 
	<td align="left" class="nav"><a href="index.php" class="nav">Gamesbay Foren-Übersicht</a></td>
  </tr>
</table>

<table width="100%" cellpadding="4" cellspacing="1" border="0" class="forumline" align="center">
  <tr> 
	<th height="25" class="thHead" nowrap="nowrap">blabla</th>
  </tr>
  <tr> 
	<td class="row1"><table border="0" cellpadding="3" cellspacing="1" width="100%">
		  <tr> 
			<td align="center" class="nav">
<?

include("18erconfig.php");

$Zwischensumme = 0;
$Endsumme = 0;
$Gesamtkontrolle = false;
$date_time_array = getdate (time());
if ((strlen($Block1)) == 11) {
 for ($i = 0; $i <= 8; $i++) {
  $Endsumme = $Endsumme + ((int) substr ($Block1,$i,1)*7);
  $i++;
  $Endsumme = $Endsumme + ((int) substr ($Block1,$i,1)*3);
  $i++;
  $Endsumme = $Endsumme + ((int) substr ($Block1,$i,1));
 }
 $Pruef1 = (int) substr ($Block1,9,1);
 if (($Endsumme % 10) == $Pruef1) {
  $Endsumme = $Endsumme + ($Pruef1*7);
  if ((substr($Block1,10,1)) == "D") {
   $Zwischensumme = 0;
   if (strlen($Block2) == 7) {
    for ($i = 0; $i <= 5; $i++) {
     $ziffer = (int) substr ($Block2,$i,1);
     $Zwischensumme = $Zwischensumme + ($ziffer*7);
     $Endsumme = $Endsumme + ($ziffer*3);
     $i++;
     $ziffer = (int) substr ($Block2,$i,1);
     $Zwischensumme = $Zwischensumme + ($ziffer*3);
     $Endsumme = $Endsumme + $ziffer;
     $i++;
     $ziffer = (int) substr ($Block2,$i,1);
     $Zwischensumme = $Zwischensumme + $ziffer;
     $Endsumme = $Endsumme + ($ziffer*7);
    }
    $Pruef1 = (int) substr ($Block2,6,1);
    if ($Pruef1 == ($Zwischensumme%10)) {
     $Endsumme = $Endsumme + ($Pruef1*3);
     $Zwischensumme = 0;
     if (strlen($Block3) == 7) {
      for ($i = 0; $i <= 5; $i++) {
       $ziffer = (int) substr ($Block3,$i,1);
       $Zwischensumme = $Zwischensumme + ($ziffer*7);
       $Endsumme = $Endsumme + $ziffer;
       $i++;
       $ziffer = (int) substr ($Block3,$i,1);
       $Zwischensumme = $Zwischensumme + ($ziffer*3);
       $Endsumme = $Endsumme + ($ziffer*7);
       $i++;
       $ziffer = (int) substr ($Block3,$i,1);
       $Zwischensumme = $Zwischensumme + ($ziffer*1);
       $Endsumme = $Endsumme + ($ziffer*3);
      }
      $Pruef1 = (int) substr ($Block3,6,1);
      if ($Pruef1== ($Zwischensumme%10)) {
       $Endsumme = $Endsumme + $Pruef1;
       if (($Endsumme % 10) == ((int) substr($Block4,0,1))) {
        $GueltigJahr = (int) substr($Block3,0,2);
        if ($GueltigJahr < 30) {
         $GueltigJahr = $GueltigJahr + 2000;
         If ($date_time_array["year"] >= $GueltigJahr) {
          If ($date_time_array["mon"] >= (int) substr($Block3,2,2))
           If ($date_time_array["mday"] <= (int) substr($Block3,4,2))
            $Gesamtkontrolle = true;
         }
         else $Gesamtkontrolle = true;
        }
       }
      }
     }
    }
   }
  }
 }
}
if ($Gesamtkontrolle == true) {
 if ($Modus == 2) {
  $AlterJahr = (int) substr($Block2,0,2);
  if ($AlterJahr > 20) {
   $AlterJahr = $AlterJahr + 1900;
   $Alter = $date_time_array["year"] - $AlterJahr;
   if ($date_time_array["mon"] < (int) substr($Block2,2,2))
    $Alter = $Alter - 1;
   else
    if ($date_time_array["mon"] == (int) substr($Block2,2,2))
     if ($date_time_array["mday"] < (int) substr($Block2,4,2))
      $Alter = $Alter - 1;
  }
  else
   $Gesamtkontrolle = false;
 if ($Alter >= $MinAlter)
  $Gesamtkontrolle = true;
 else
  $Gesamtkontrolle = false;
 }
}

if ($Gesamtkontrolle == true)
 print ($Okay); 
else
 print ($Error);
?>

</td>
		  </tr>
		  </table></td>
  </tr>
</table>
</html>
<? 
include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 
?>
Antworten

Zurück zu „phpBB 2.0: Mod Support“