Pagina 1 van 1

"Switch" gebruiken lukt niet

Geplaatst: 23 apr 2008, 20:13
door arthurk
Weet niet precies waar dit te plaatsen maar ga er vanuit dat het vanzelf op de juiste plaats in dit forum komt :oops:

Ik probeer gebruik te maken van de login functie van phpbb3 in combinatie met een stuk radio automatiserings software (SAM), de bedoeling is dat mensen die in phpbb3 ingelogd zijn een aanvraag kunnen doen in keuze lijst van muziek.

Het aanroepen vanuit SAM doe ik met de volgende code:

Code: Selecteer alles

define('IN_PHPBB', true); 
$phpbb_root_path = '../phpbb/'; 
$phpEx = substr(strrchr(__FILE__, '.'), 1); 
include($phpbb_root_path . 'common.' . $phpEx); 
// Start session management 
$user->session_begin(); 
$auth->acl($user->data); 
$user->setup();
Hier wordt dus de database van phpbb geraadpleegd of iemand is ingelogd, dit werkt goed want dat kan ik met de volgende code (verwerkt in de pagina) controleren:

Code: Selecteer alles

<? if ($user->data['user_id'] != ANONYMOUS) 
  echo("Hallo en welkom, " . $user->data['username'] . "!"); 
else 
  { 
  echo("Wil je een nummer aanvragen dan moet je eerst <a href='../phpbb/ucp.php?mode=login' >inloggen.</a>"); 
  } 
?>
Dan komt mijn probleem pas echt want als er niemand is ingelogd wil ik de volgende regel uitgeschakeld hebben en dacht daarvoor de functie "switch" te gebruiken, echter dat wil niet lukken, zowel met de oude functie:

Code: Selecteer alles

<!-- BEGIN switch_user_logged_out --> 
<td nowrap width="1%">
	  <p align="center"><font size="2" color="#003366"><a href="<? echo $song["request"]; ?>"><img
    src="images/request.gif" alt="Request this song now!" border="0"></a></font> 
   	</td>
<!-- END switch_user_logged_out -->

als met de nieuwe functie:

Code: Selecteer alles

<!-- IF not S_USER_LOGGED_IN -->
<td nowrap width="1%">
	  <p align="center"><font size="2" color="#003366"><a href="<? echo $song["request"]; ?>"><img
    src="images/request.gif" alt="Request this song now!" border="0"></a></font> 
   	</td>
   <!-- ENDIF -->
In beide gevallen blijf ik deze regel zien waarin de aanvraag mogelijk is, zowel inglogd als niet ingelogd.

Zal hier nog even de totale code van die betreffende pagina plaatsen zodat het misschien wat duidelijker wordt wat er gedaan wordt.

Code: Selecteer alles

<?
define('IN_PHPBB', true); 
$phpbb_root_path = '../phpbb/'; 
$phpEx = substr(strrchr(__FILE__, '.'), 1); 
include($phpbb_root_path . 'common.' . $phpEx); 
// Start session management 
$user->session_begin(); 
$auth->acl($user->data); 
$user->setup();

 require("config.php"); 
 
 $where = " WHERE (songtype='S') AND (status=0) ";
 
 Def($start,0);
 Def($limit,50);
 Def($search,"");

 //########## BUILD SEARCH STRING ################
 
 if(!empty($search))
 {
   $words = Array();
   $temp = explode(' ',$search);
   reset($temp);
   while(list($key,$val) = each($temp))
   {
    $val = trim($val);
    if(!empty($val))
	 $words[] = $val;
   }
	 

   $where2 = "";	  
   reset($words);
   while(list($key,$val) = each($words))	 
   {
     if(!empty($where2)) $where2 .= " OR ";
	 $val = "%$val%";
	 $db->AddStr($val); $db->AddStr($val); $db->AddStr($val);
     $where2 .= " (title like :val1) OR (artist like :val2) OR (album like :val3) ";
   }
   $where .= "AND ($where2) ";
}
 
 if((isset($letter)) && (!$letter==""))
 {
  $nextletter = chr(ord($letter)+1);
  if($letter=='0')
   $where .= " AND NOT((artist>='A') AND (artist<'ZZZZZZZZZZZ')) ";
  else
   {
    $db->AddStr($letter); $db->AddStr($nextletter);
    $where .= " AND ((artist>=:letter) AND (artist<:nextletter)) ";
   }
 }
 else
 {
		$letter="";
 }
 
 //########## =================== ################ 
 
 //Calculate total
 $tmp = $db->params; //Save params for second query
 $db->open("SELECT count(*) as cnt FROM songlist $where ");
 $row = $db->row();
 $cnt = $row["cnt"];
 
 //Now grab a section of that
 $db->params = $tmp; //Restore params
 $db->open("SELECT * FROM songlist $where ORDER BY artist ASC, title ASC", $limit, $start);
 
 $first = $start+1;
 $last  = min($cnt,$start+$limit);
 $rc    = $start;
 
 $prevlnk = "";
 $nextlnk = "";
 if($cnt>0)
 {
 
 if(!isset($search))
	 { $search=""; }
  $searchstr = urlencode($search);
  $prev = max(0,$start-$limit);
  if($start>0)
    $prevlnk = "<a href='?start=$prev&limit=$limit&letter=$letter&search=$searchstr'><< Previous</a>";
   
  $tmp = ($start+$limit);
  if($tmp<$cnt) 
    $nextlnk = "<a href='?start=$tmp&limit=$limit&letter=$letter&search=$searchstr'>Next >></a>";
 }
    
function PutSongRow($song) 
{
 global $rc, $start, $darkrow, $lightrow;
 
 $rc++;
 $bgcolor = $darkrow;
 if(($rc % 2)==0) $bgcolor = $lightrow;
 
 
 PrepareSong($song);
?> 
  <tr bgcolor="<? echo $bgcolor; ?>"> 
    <td nowrap align="right" width="1%"><font size="2" color="#003366"><small><? echo "$rc"; ?></small></font></td>
    <td nowrap><font size="2" color="#003366">&nbsp;<small><? echo $song["combine"]; ?></small></font></td>
	
	<td nowrap width="1%">
	  <p align="center"><font size="2" color="#003366"><a href="<? echo $song["request"]; ?>"><img
    src="images/request.gif" alt="Request this song now!" border="0"></a></font> 
   	</td>
	
    <td nowrap width="1%"> 
      <p align="center"><font size="2" color="#003366"><a href="<? echo $song["buycd"]; ?>" target="_blank"><img
    src="images/buy.gif" alt="Buy this CD now!" border="0"></a></font> 
    </td>
    <td nowrap width="1%"> 
      <p align="center"><font size="2" color="#003366"><a href="<? echo $song["website"]; ?>" target="_blank"><img
    src="images/home.gif" alt="Artist homepage" border="0"></a></font> 
    </td>
	
	<td nowrap align="center" width="1%"> 
      <font size="2" color="#003366"><a href="javascript:songinfo(<? echo $song["songid"]; ?>)"><img
    src="images/info.gif" alt="Song information" border="0"></a></font> 
    </td>
	
    <td nowrap><font color="#003366" size="2"><small><? echo $song["album"]; ?></small></font></td>
    <td nowrap> 
      <p align="right"><font color="#003366" size="2"><small><strong><? echo $song["mmss"]; ?></strong></small></font>
    </td>
  </tr>
<?
}//PutSongRow

/* ## ===================================================================== ## */
?>

<? require("header.php"); ?>

<? if ($user->data['user_id'] != ANONYMOUS) 
  echo("Hallo en welkom, " . $user->data['username'] . "!"); 
else 
  { 
  echo("Wil je een nummer aanvragen dan moet je eerst <a href='../phpbb/ucp.php?mode=login' >inloggen.</a>"); 
  } 
?>
<? require("search.php"); ?>
<br>

<table border="0" width="98%" cellspacing="0" cellpadding="4">
  <tr bgcolor="#002E5B"> 
    <td colspan="8" nowrap align="left"> 
      <b><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#FFFFFF">Playlist results</font></b>
    </td>
  </tr>	

<? 
 while($song = $db->row())
   PutSongRow($song); 
?>
    
  <tr bgcolor="#E0E0E0"> 
    <td colspan="8" nowrap align="center">
	<? echo "$prevlnk"; ?>
 &nbsp; ( Showing <? echo "$first to $last of $cnt"; ?> ) &nbsp; 	 
	<? echo "$nextlnk"; ?></td>
  </tr>	
  
</table>

<br>
<? require("search.php"); ?>  
<? require("footer.php"); ?>


Iemand die me een stapje verder kan helpen misschien?

groeten Arthur

Re: "Switch" gebruiken lukt niet

Geplaatst: 27 apr 2008, 10:40
door arthurk
ok, ben iets verder.


dit staat als eerste in de pagina:

Code: Selecteer alles

define('IN_PHPBB', true); 
$phpbb_root_path = '../phpbb/'; 
$phpEx = substr(strrchr(__FILE__, '.'), 1); 
include($phpbb_root_path . 'common.' . $phpEx); 
// Start session management 
$user->session_begin(); 
$auth->acl($user->data); 
$user->setup();
heb de desbetreffende regel apart gezet in "aanvraag.php"

Code: Selecteer alles

<td nowrap width="1%">
	  <p align="center"><font size="2" color="#003366"><a href="<? echo $song["request"]; ?>"><img
    src="images/request.gif" alt="Request this song now!" border="0"></a></font> 
   	</td>
heb op de plaats waar de regel stond het volgende staan:

Code: Selecteer alles

<?
	if ($user->data['user_id'] != 1)
	{
		require("aanvraag.php");
	}
	?>
In principe werkt het nog niet goed maar als ik handmatig dit doe:

Code: Selecteer alles

if ($user->data['user_id'] != 1)
is de regel inderdaad zichtbaar
en als ik dit doe:

Code: Selecteer alles

if ($user->data['user_id'] != 0)
is de regel niet zichtbaar.
Het schakelen op zich werkt dus wel maar niet op het moment dat er inderdaad iemand is ingelogd.

Terwijl de volgende schakelaar in diezelfde pagina wel werkt

Code: Selecteer alles

<? if ($user->data['user_id'] != ANONYMOUS) 
  echo("Hallo en welkom, " . $user->data['username'] . "!"); 
else 
  { 
  echo("Wil je een nummer aanvragen dan moet je eerst <a href='../phpbb/ucp.php?mode=login' >inloggen.</a>"); 
  } 
?>
probeer ik echter iets dergelijks werkt het ook niet:

Code: Selecteer alles

<?
	if ($user->data['user_id'] != ANONYMOUS)
	{
		require("aanvraag.php");
	}
	else
	{
		require("blank.php");
	}
	?>
Ik hoop dat een en ander nu wat duidelijker is voor de mensen met meer kennis van php dan ik, is volgens mij wel duidelijk dat ik er geen ster in ben :cry:

Als er mensen zijn met een suggestie, graag een antwoordje.

groeten Arthur.

p.s.
een voorbeeld van de site kun je (tijdelijk) hier vinden
http://zrh.mensenkamp.nl

Re: "Switch" gebruiken lukt niet

Geplaatst: 27 apr 2008, 10:45
door BetaDevil
Als je wilt kijken of iemand ingelogd is moet je deze gebruiken: $user->data['is_registered']
Dus:

Code: Selecteer alles

if ($user->data['is_registered'])
{
    echo 'Ingelogd';
}
else
{
    echo 'Uitgelogd';
} 

Re: "Switch" gebruiken lukt niet

Geplaatst: 27 apr 2008, 11:01
door arthurk
ok, maar als ik dan dit doe:

Code: Selecteer alles

<?
	if ($user->data['is_registered'])
	{
		require("aanvraag.php");
	}
	else
	{
		require("blank.php");
	}
	?>
dan werkt het ook niet,

Arthur