MyBB.de Forum
eine Seite einbinden nur für registriete ? - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html)
+--- Forum: Plugin-Diskussionen (https://www.mybb.de/forum/forum-38.html)
+--- Thema: eine Seite einbinden nur für registriete ? (/thread-5216.html)



eine Seite einbinden nur für registriete ? - coma - 11.03.2007

Hallo zusammen, ich hätte da mal ... Smile
Ich betreibe ein kleines bescheidenes Forum mit webradio (incl. songs die man sich wünschen kann)
also meine Idee ist es diese wunschseite/archive nur für registrierte Members nutzen zu lassen. Ist da technisch machbar? und wenn wie?

hier mal zum angucken: http://www.krautrock-world.com/samPHPweb/playing.php
diese Seite soll zwar von jedem gesehen werden aber nur forummitglieder sollten sich etwas wünschen dürfen. Wäre super wenn man da eine lösung finden könnte.

Gruss
coma


RE: eine Seite einbinden nur für registriete ? - Michael - 12.03.2007

Das ist machbar, indem du die global.php des Forums einbindest:
PHP-Code:
define("IN_MYBB"1);
define("NO_ONLINE"1);
require(
"../global.php");
if(
$mybb->user['uid'] == "0") {
    
// Benutzer ist nicht eingeloggt
} else {
    
// Benutzer ist eingeloggt




RE: eine Seite einbinden nur für registriete ? - coma - 13.03.2007

hmmmm ... was exact muss ich nun machen? sorry aber null ahnung.
ich füge mal die php an um die es geht.
Diese Datei liegt nicht im Forum-Ordner sondern im ordner "samPHPweb"

Gruss
coma

edit! diese Seite soll ja für jeden sichtbar sein ... es soll ja nur das wünschen von songs nur für registrierte sein daher noch ein Attachment nämlich um das es geht d Rolleyes


RE: eine Seite einbinden nur für registriete ? - Michael - 13.03.2007

Die Datei req.php verarbeitet die Wünsche? Dann sollte dieser Code am Anfang der Datei funktionieren (ggf. musst du den Pfad zur global.php anpassen):
PHP-Code:
define("IN_MYBB"1);
define("NO_ONLINE"1);
require(
"../global.php");
if(
$mybb->user['uid'] == "0") {
    die(
"Wünsche können nur von angemeldeten Benutzern abgegeben werden.");




RE: eine Seite einbinden nur für registriete ? - coma - 14.03.2007

oops nein ... es sind fürs request 11 dateien hmmm .... das wird kompliziert Rolleyes also, die erste request.php leitet weiter zu dieser:
PHP-Code:
<?
 Def($samhost,$sam["host"]);
 Def($samport,$sam["port"]);
 Def($dedicated,false);
 
 if(empty($samhost)) DoError(800);
 //if(($samhost=="127.0.0.1") OR ($samhost=="localhost")) DoError(801);
 if(empty($songid)) DoError(802);
 
 settype($songid,"integer"); //Make sure songID is an integer to avoid SQL injection
 
 $host = $GLOBALS["REMOTE_ADDR"];
 
 $request = "GET /req/?songID=$songid&host=".urlencode($host)." HTTP\1.0\r\n\r\n";
 
$xmldata = "";
$fd = @fsockopen($samhost,$samport, $errno, $errstr, 30);
//$fd = fopen("http://$samhost:$samport/req/?songID=$songID&host=".urlencode($host),"r");
//echo "fd=$fd";
if(!empty($fd))
{
 fputs ($fd, $request);
$line="";
  while(!($line=="\r\n"))
  { $line=fgets($fd,128); }    // strip out the header
  while ($buffer = fgets($fd, 4096))
 {  $xmldata  .= $buffer; }
 fclose($fd);
}
else DoError(803);

if(empty($xmldata)) DoError(804);
  
 //$xmldata = File2Str($url);
 
 //Header("Content-type:text/xml");
// echo $xmldata;
 
//#################################
//      Initialize data
//#################################
 $tree = XML2Array($xmldata);
 $request = Keys2Lower($tree["REQUEST"]);
 
 $code    = $request["status"]["code"];
 $message = $request["status"]["message"];
 $requestid = $request["status"]["requestid"];
 if(empty($code)) DoError(804);
 
if($requestid>0) 
{
 /*== If your database is located on a remote host, you must specify local SAM login details here ===*/ 
 $db = new DBTable();
 $db->connect($samlogin);
 $db->open("SELECT songlist.*, songlist.ID as songID FROM requestlist, songlist 
           WHERE (songlist.ID = requestlist.songID) AND (requestlist.ID = $requestid)",1);
           
if($song=$db->row())
{        
    if(!isset($song["songid"])) $song["songid"]=0;
    $song["requestid"] = $requestid;
    PrepareSong($song);
}       
 

 

 if($code==200)
  require("req/req.success.html");
 else
  require("req/req.failed.html");
  
function DoError($code)  
{
 global $samhost, $samport, $errno, $errstr;
 
 switch ($code)
 {
  case 800 : $message = "SAM host must be specified"; break;
  case 801 : $message = "SAM host can not be 127.0.0.1 or localhost"; break;
  case 802 : $message = "Song ID must be valid";  break;
  case 803 : $message = "Unable to connect to $samhost:$samport. Station might be offline.<br>The error returned was $errstr ($errno).";  break;
  case 804 : $message = "Invalid data returned!";  break;
 }
 require("req/req.failed.html"); 
 exit;
}
?>

dann gibt es noch 2 html's für erfolgreichen request und/oder failed.

Gruss
coma


RE: eine Seite einbinden nur für registriete ? - Michael - 14.03.2007

Ich habs mir nicht angesehen, aber du musst dann eigentlich den Code in alle betroffenen Dateien am Anfang einfügen, damit Gäste nicht darauf zugreifen können.