Welkom gast! Aanmelden Registreren


Waardering:
  • 0 stemmen - gemiddelde waardering is 0
  • 1
  • 2
  • 3
  • 4
  • 5
SSO ticket error
#1
Mensen van RP

Ik heb dus een probleem met de sso. Ik kan redelijk php maar dit vind ik gewoon **** moeilijk.

Ik heb al een deel gefixt (bedankt Snorlax). Maar als ik naar de client ga, en dan de source bekijk, dan staat er niks bij de sso ticket..

Hier wat PHP:

Client.php
PHP-code:
<?php

    define
('MUSTLOGGEDIN'true);
    require 
'./includes/inc.bootstrap.php';
    
    
## Check SSO Ticket
    
User::CheckSSO(USER_ID);
    
$SSOTicket User::GetUserData('auth_ticket');
    
    
$check = @mysql_query("SELECT id FROM users WHERE id = '".USER_NAME."'");
    if(
mysql_num_rows($check)) {
        
DB::GetQuery("UPDATE users SET auth_ticket = '".$_SERVER['REMOTE_ADDR']."' WHERE username = '".USER_NAME."'");
    }
    else {
        
DB::GetQuery("UPDATE users SET auth_ticket = '".$_SERVER['REMOTE_ADDR']."' WHERE username = '".USER_NAME."'"); 
    }
    
    
## Update VIP Days
    
$expire '1503231756';
    
    
$update = @mysql_query("SELECT user_id FROM user_subscriptions WHERE user_id = '".USER_ID."'");
    if(
mysql_num_rows($update)) {
        
DB::GetQuery("UPDATE user_subscriptions SET timestamp_expire = '".$expire."' WHERE user_id = '".USER_ID."'");
    }
    else {
        
DB::GetQuery("INSERT INTO user_subscriptions (user_id,subscription_id,timestamp_activated,timestamp_expire) VALUES ('".USER_ID."', 'habbo_vip', '".time()."', '".$expire."')");
    }
    
    
## Update User_Info    
    
$update = @mysql_query("SELECT user_id FROM user_info WHERE user_id = '".USER_ID."'");
    if(
mysql_num_rows($update)) {
        
DB::GetQuery("UPDATE user_info SET login_timestamp = '".time()."' WHERE user_id = '".USER_ID."'");
    }
    else {
        
DB::GetQuery("INSERT INTO user_info (user_id, bans, cautions, reg_timestamp, login_timestamp, cfhs, cfhs_abusive) VALUES ('".$user_id."', '0', '0', '".time()."', '".time()."', '0', '0')");
    }
    
    
## Template
    
$tpl = new Template('');
    
$tpl->SetParam('sso.ticket'User::GetUserData('auth_ticket'));
    
$tpl->SetParam('user.hash'sha1(USER_ID));
    
$tpl->SetParam('user.figure'User::GetUserData('look'));
    
    
    if (isset(
$_GET['forceTicket']) && User::HasFuse(USER_ID'fuse_admin'))
    {
        
$tpl->SetParam('sso.ticket'$_GET['forceTicket']);
    }
    
    
$tpl->AddFile('client');
    
    echo 
$tpl;
?>





Hopelijk word er snel geholpen

-FHD
 
#2
Klopt het SSO IP wel?
 
#3
(11-11-2012, 17:11)trukker1998 schreef: Klopt het SSO IP wel?


Jup

Maar ik denk dat de error licht bij de variable.
 
#4
Komt erop neer dat je variable "str" niet is gedefinieerd in je functie. Gebruik je de variable ook op andere plekken in je script? Als dit zo is, en het staat in 1 file aangegeven wat het doet, zou je je variable public kunnen maken. Soms lost dit het probleem op.

Ook kun je tijdens het aanroepen van je functie een extra waarde meegeven.

Stel ik roep SSOticket aan

Aanroepen van de functie
PHP-code:
<?php SSOTicket($str); ?>
Hierin geef je de variable str mee in de functie. Vervolgens kun je deze waarde gebruiken binnen je functie.

In het bestand waar je je functie "SSOTicket" hebt staan, voeg je de variable toe aan je functie.

Vervolgens kun de variable "str", die je eerder meegaf in je functie gebruiken binnen je functie.
PHP-code:
public static function SSOTicket($str$seed '')
        {            
            
$sso 'ST-'.$str.rand(1000099999).$str.'-'.rand(100000999999).rand(100000999999);
            
            return 
$sso;
        }
        
        function 
CheckSSO($id)
        {
            
            if (
strlen(self::GetUserData('auth_ticket')) <= 3)
            {
                
DB::GetQuery("UPDATE users SET auth_ticket = '".self::SSOTicket(self::GetUserData('username'))."' WHERE id = '".$id."' LIMIT 1");
            }
        } 

Een klein voorbeeld hiervan:


PHP-code:
<?php
 
//functie aanmaken
 
function weergeef($naam) {
  return 
"Hallo: " $naam " bedankt voor het gebruiken van dit script";
 }
 
//functie gebruiken
 
echo weergeef("alex");
 
//output
 //Hallo: alex bedankt voor het gebruiken van dit script.
?>
 
#5
Oke, de error is weg, maar de sso weergeeft niet.
 
#6
Hoe wil je de SSO weergeven?
 
#7
Als ik naar de client ga, en dan CTRL + U doe (source) Dan staat er niks bij de sso.
 
#8
Omdat ik niet weet hoe je code eruit ziet, en niet weet wat er met het SSOTicket gebeurt kan ik niet precies antwoord geven.

Maar als het ticket in een sessie word gestopt moet je in de code van je client de sessie echoen.

stel dat in je code de sessie word aangemaakt
PHP-code:
<?php
//sessie aanmaken
$_SESSION['sso'] = $sso;
//sessie echoen
echo $_SESSION['sso']
?>

Hier word dus de variable "sso" in de sessie $_SESSION['sso'] gestopt.
 
#9
client.php:

Cheken van de SSO's:"

PHP-code:
User::CheckSSO(USER_ID);
    
$SSOTicket User::GetUserData('auth_ticket'); 

Hier het ophalen van de sso:

PHP-code:
$tpl->SetParam('sso.ticket'User::GetUserData('auth_ticket')); 
 
#10
Ik ga ervan uit dat hier sso.ticket een sessie is.

Probeer eens var_dump($_SESSION['sso.ticket']);

In de client.php, wat komt hieruit?
 
  




Leden die dit momenteel bekijken: 1 gast(en)