Jump to content
InvisionCommunity.de - Der Deutsche Invision Community Support
Sign in to follow this  
craxelburger

[Wie?] Einmal anmelden für Board und ext. Script

Recommended Posts

Hallo!

Ich wollte mal fragen wie ich es anstellen kann, die JETZT angemeldeten Memberdaten in ein externes Script zu übernehmen (Membername, Passwort)?

Das Script kann ich so verändern das es auf die selbe Tabelle wie das Board zugreift.

Mein einziges Problem ist halt der Übergang, da ich kein Doppel-Login wil.

Was gibts da für Lösungsmöglichkeiten?

Bitte Newbie-Verständliche Antworten, da ich leider noch relativ unerfahren mit php und dem Board bin. Ich hoffe aber das sich das mit der Zeit legt *g*.

Vielen Dank.

Share this post


Link to post

sessionid und cookie... soviel kann isch dir schomal sagen.. hab selbst mal angefangen sowas zu schreiben.. und an der passwortverschlüsselung bin ich hängen geblieben... :D. vielleicht kann mir da ja mal jemand helfen: ich hab nen unverschlüsseltes pw in dem script drin.. brauch des aber verschlüsselt (weil ichs ja sonst net ausm ipb übernehmen kann....).. geht des ohne viel aufwand? will net bei jeder neuen version alles von dem zu ändernen script umcoden müssen :D. der rest folgt dann erstmal..

@craxel: was fürn scitp wilslch denn user übernehmen??

Share this post


Link to post

Die Member sollen sich untereinander SMS schicken können. Jeder User hat ein SMS-Guthaben von dem beim Versand was abgezogen wird. Die jeweilige Handynummer ist in der ibf_members hinterlegt. Der Aufruf erfolgt über URL mit Member-ID (des Empfängers).

Ich hab alles soweit am laufen, der Knackpunkt ist nur noch der blöde Doppel-Login.

Edited by craxelburger

Share this post


Link to post

schlagt mich nicht, wenns nich stimmt ;), aber MD5 Verschlüsselung geht doch so:

$blabla=md5("StringzuVerschlüsseln");

Greetz

Frog

Edited by Frog

Share this post


Link to post

Je nach Aufwand kannst du auch überlegen, das externe Script anzupassen und dann als Modul ins IPB einbinden. Da hast du per se alles, was du vom User wissen musst um dich herum zur Verfügung.

Share this post


Link to post

Soweit ich das jetzt verstanden habe, ist das externe Script derweil fix und fertig, greift schon auf die IPB-DB zu und du brauchst aber noch die Userdaten, die sowohl beim Eintritt ins Gateway, innerhalb desselben und beim Verlassen Richtung IPB erhalten bleiben sollen. Der User soll sich frei in beide Richtungen bewegen können, ohne seine Session zu verlieren.

Grundsätzlich hast Du damit 2 Wege, die Du gehen kannst:

1.) Du übernimmst für das externe Script die Session vom IPB.

2.) Du bindest es wie eben gesagt als Modul ein.

Hast du von der Lösung keine Spur, mache Dir ne Schaufigur:

1) Session durchschleifen


+-------------+     +-------------+     +-------------+     

|             |     |             |     |             |     

|     IPB     | --> |     SMS     | --> |     IBF     |     

|             |     |   Gateway   |     |             |     

+-------------+-----+-v^-------^v-+-----+-------------+     

|                     IPB-Session                     |     

+-----------------------------------------------------+    



2) Als Modul ins IPB einbinden

+-------+---------+

|       |         |

| IPB   |   SMS   |

|       | Gateway |

|       |         |

|       +-v^---^v-+

|                 |

+-----------------+

|   IPB-Session   |     

+-----------------+    



v^-^v ... Schnittstellen, um die du dich jeweils kümmern musst

Das Problem bei 1) ist, dass du dich nicht nur auf das Cookie verlassen kannst. Für den Fall, dass einer deiner User keine Cookies akzeptiert, muss du die Session mit all ihren Informationen serverseitig handlen. Im Zweifelsfall heisst das, die Session des IBF exact nachzumodellieren, damit du das SMS-Gateway wieder verlassen kannst und alle Informationen die das Board braucht wieder zur Verfügung stehen (Besuchte Foren, gelesene Threads, ...).

Das Problem bei 2) ist, dass du all deine Ausgaben durch das IPB schleifen musst. Das IPB managt dafür die Session ohne dein Zutun, weils in der Modulschnittstelle bereits implemetiert ist.

Tja. Welchen Weg willst du gehen?

Share this post


Link to post

inwieweit gibts denn nen gutes tut für die module? tuts gibts ja nen paar, aber welches ist den empfehlenswert? weil so haste wohl mehr möglichkeiten und ipb nimmt die hauptsache ab: die doofen sessions zu verwalten..

Share this post


Link to post

ja, genau, r**bot!

Du hast die Problematik verstanden.

Also da das so kompliziert ist, ist es wohl die einfachererererere Lösung es als Modul mit ins Board reinzunehmen.

Naja, da bleibt mir nur noch die gleiche Frage die auch Wallenium hat.

Wo find ich n gutes Tut dafür?

Edited by craxelburger

Share this post


Link to post

Ich hab jetzt mal versucht es als Modul einzubinden.

Leider bekomm ich immer folgende Meldung wenn das Script versucht sich mit der DB zu verbinden:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user: 'wwwrun@localhost' (Using password: NO) in /home/www/htdocs/skypeflirt.de/forum/sources/sms/dbconnect.inc.php on line 21

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /home/www/htdocs/skypeflirt.de/forum/sources/sms/dbconnect.inc.php on line 22

Was mache ich falsch?

Edited by craxelburger

Share this post


Link to post

Hi,

laut Fehlermeldung liegts an falschem Benutzernamen und/oder Passwort für die MySQL-DB. Deswegen kann er anschließend wohl auch kein "mysql_select_db()" ausführen.

Share this post


Link to post

Hmmmmmm...

Ich werd hier noch verrückt :blink::wacko: . Als newbie hat man echt kein leichtes Brot.

Das SMS-Script ist sehr kompliziert aufgebaut (für mich zumindest) und besteht aus mehreren php´s. Daher bekomme ich Probleme mit der Datenbankverbindung.

Ich versuche das jetzt folgendermaßen zu lösen:

Wenn die Board-Datenbankverbindung nicht da ist, sollen die eigenen internen Daten genommen werden. Leider funzt das nicht so wie ichs mir vorstelle. Sieht jemand wo der Fehler ist?

EDIT: Entfernt da nicht korrekt gewesen  :wacko:

Der Fehler der dabei rumkommt ist folgender:

EDIT: Entfernt  :wacko:
Edited by craxelburger

Share this post


Link to post

Ich weiss nicht, ob das der Fehler ist, aber ein Vergleich wird immer mit "==" gemacht.

Wenn du den Modulweg gehst, hat das Board für dich schon lang die Datenbank-Verbindung aufgemacht (direkt in der index.php des IPB) Wenn deine SMS-Modul-DB diesselbe wie die des IPB ist, kannst du die einfach mitverwenden:

Verzichte auf alles was die Verbindung herstellt und die DB auswählt und schick deine Statements mit

$DB->query("SELECT * FROM ibf_hassenichgesehn WHERE blubber=1");

ab.

Damit bekommst du deine Statements auch in der Debug-Info angezeigt (wenn du SQL-Debugging im ACP anmachst).

Die weiteren mySQL-Funktionen, die du durch die boardeigene und automatisch Klasse benutzen kannst findest du in der Datei ./sources/Drivers/mySQL.php

Noch 2 Anmerkungen:

- In Queries benutzt du am Besten _IMMER_ Tablenamen mit dem Präfix ibf_. Wenn du in deinen Board-Optionen einen anderen Table-Präfix eingestellt hast, ersetzt die Software das automatisch. Damit sollten deine SMS-Tablenamen mit demselben Präfix wie die des IPB beginnen.

- Ich lad gleich noch ein Stück Drexcode rauf, mit dem du die zur Verfügung gestellten Variablen incl. Inhalt sehen kannst.

Wenn schon User helping User, dann User helping User as User helping User can be...

Share this post


Link to post

Ich hab in meinem Dev-Board in den Skins -> Global HTML elements -> Board Header (logo, links, etc) neben der Hilfe diesen Link eingebunden:

<a href='{ibf.script_url}act=module&module=ibforum_vars'>ibforum vars</a>
Dann dazu noch das entsprechende Modul in den ./modules-Ordner kopiert. Schau nicht auf den Code, der ist an das Original-Beispiel "drangerotzt". Ich wollte nur wissen, was der Inhalt des Arrays $ibforums ist, und das listet dieses Modul (hoffentlich) komplett. Incl einiger Darstellungsprobleme, weil die Variable z.Teil einfach HTML enthält, um das ich mir keinen Kopf machte. Ist ja nur für mich gewesen ... :rolleyes: Hier noch der Code der Moduldatei, Name ist: mod_ibforum_vars.php
<?php

/*

+--------------------------------------------------------------------------

|   Invision Power Board v1.2 Module File

|   ========================================

|   by Matthew Mecham

|   (c) 2001 - 2003 [url="https://www.invisionpower.com/clients/index.php?app=nexus&module=promotion&section=referral&id=5636&direct=aHR0cDovL3d3dy5pbnZpc2lvbnBvd2VyLmNvbS8%3D"]Invision Power Services[/url]

|   http://www.invisionpower.com

|   ========================================

|   Web: http://www.invisionboard.com

|   Email: matt@invisionpower.com

|   Licence Info: http://www.invisionboard.com/?license

+---------------------------------------------------------------------------

|   > Example Module Loader File

|   > Module written by Matt Mecham

|   > Date started: 7th July 2003

|

+--------------------------------------------------------------------------

*/


//=====================================

// Define class, this must be the same

// in all modules

//=====================================


class module extends module_loader

{


	//=====================================

	// Define vars if required

	//=====================================


	var $class  = "";

	var $module = "";

	var $html   = "";


	var $result = "";


	//=====================================

	// Constructer, called and run by IPB

	//=====================================


	function module()

	{

  global $ibforums, $DB, $std, $print;

  

  //=====================================

  // Do any set up here, like load lang

  // skin files, etc

  //=====================================

  

  $ibforums->lang = $std->load_words($ibforums->lang, 'lang_boards', $ibforums->lang_id);

    $this->html     = $std->load_template('skin_boards');

    $ibforums->html = $this->html;

  

  //=====================================

  // Set up structure

  //=====================================

  

 	 $this->do_something();

  

  

    $this->list_ibforums();

    $ibforums->lang['page_title'] = "ibforums Variablen";

    

  $print->add_output( $this->result );

    $print->do_output( array( 'TITLE' => $ibforums->lang['page_title'], 'JS' => 0, NAV => array( $ibforums->lang['page_title'] ) ) );

    

  exit();

  

	}




	//------------------------------------------

	// do_something

	// 

	// Test sub, show if admin or not..

	//

	//------------------------------------------


	function do_something()

	{

  global $ibforums, $DB, $std;

  

  if ( $ibforums->member['mgroup'] == $ibforums->vars['admin_group'] )

  {

 	 $this->result = "You're an admin!";

  }

  else

  {

 	 $this->result = "You're not an admin!";

  }

	}


	function list_ibforums(){

 	 $this->show_var_values("member");

 	 $this->show_var_values("input");

 	 $this->show_var_values("session_id");

 	 $this->show_var_values("base_url");

 	 $this->show_var_values("vars");

 	 $this->show_var_values("skin_id");     // Skin Dir name

 	 $this->show_var_values("skin_rid");      // Real skin id (numerical only)

 	 $this->show_var_values("lang_id");

 	 $this->show_var_values("skin");

 	 $this->show_var_values("lang");

 	 $this->show_var_values("server_load");

 	 $this->show_var_values("version");

 	 $this->show_var_values("lastclick");

 	 $this->show_var_values("location");

 	 $this->show_var_values("debug_html");

 	 $this->show_var_values("perm_id");

 	 $this->show_var_values("forum_read");

 	 $this->show_var_values("topic_cache");

 	 $this->show_var_values("session_type");

  }

  

  function show_var_values( $name ){

    global $ibforums;

    if( is_array($ibforums->$name)){

      $this->result .= "<hr>Array: <strong>".$name."</strong>:<br>";

      while( list( $key, $value ) = each($ibforums->$name)){

        $this->result .= "&nbsp;<em>".$name."['".$key."']</em>: <tt>".$value."</tt><br>";

      }

    }

    else {

      $this->result .= "<hr>Variable <strong>".$name."</strong>:<pre>".$ibforums->$name."</pre><br>";

    }

  }

  

}



?>

Ich hoffe, dir hilft das bei deiner Odyssee.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×