Zobacz pełną wersję : o zalogowanym ...
Witam
Mam takie pytanie odnośnie statusu czy ktoś jest zalogowany na stronie, wiem wiem pewnie teraz wszyscy odpiszą że to już było tysiące razy, ale ja trochę inaczej chciałem to sprawdzić.
Chodzi mi o coś takiego, mam sobie gdzieś na serwerze plik FL1.PHP i po wywołaniu go w przeglądarce bezpośrednio w pasku adresu ma zacząć się ściąganie pliku. Ogólnie to jest proste i to już zrobiłem, ale teraz bym chciał zrobić tak żeby ten plik się ściągał dopiero wtedy jak ktoś się zaloguje na stronie
??
oto fragment moich wypocin:
<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', "/home/checkban/public_html" );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
defined('_JEXEC') or die('Restricted access');
?><?php
$user = & JFactory::getUser();
echo (!$user->get('guest')) ? 'logout' : 'login';
exit;
if($user->guest)
{
echo "<html><title>CheckBank</title><body>Błąd: Pobierany plik prawdopodobnie nie istnieje.</body></html>";
exit;
};
.....
tutaj dalszy kod jak zalogowany.
Przypominam że to nie jakiś fragment modułu czy innego wynalazku joomla , tylko sobny plik PHP wywoływany przez kliknięcie w link albo w pasku adresu.
Szukaj -> "zalogowany".
Było całkiem niedawno.
<?php if ( empty($my->username) ) {
echo "nie";
}
else
{
echo "tak";
} ?>
ta metoda zawiodła, nie pokazuje mi czy zalogowany czy nie, wciąż jest nie
Bo to metoda dla !J 1.0.
Trochę dalej jest o 1.5 :)
Bo to nie tak, w dziale tłumaczeń jest dodatek hider, przeanalizuj jego kod.
Metoda dla joomla 1.5 była użyta w podanym przykładzie na samym początku tematu, i to właśnie ona też ta metoda wciąż pokazuje mi jedną wartość.
Dodam że używam joomla 1.5.14 ...
Zastosuj: $user->get('id') zamiast $user->get('guest') a gwarantuję, że zadziała (za dużo tłumaczenia dlaczego - kiedyś sam do tego dojdziesz)
Może inaczej.
Na próbę proponuję zróbić plik PHP od zera, taki który wyświetli czy użytkownik jest zalogowany czy nie. Do tego pliku w jakimś artykule zrobić normalne łącze i czy to zadziała?? bo o to mi chodzi.
Może być tak że coś u mnie z konfiguracją albo z czymś jeszcze jest nie tak.
1. Są komponenty do udostępniania plików z możliwością ustawienia czy niezalogowany na do nich prawo.
2. Informację do obcego pliku można przekazać za pomocą zmiennej GET
3. Wyświetlanie linku może być uwarunkowane tym, czy jest się zalogowanym
4. Artykuły lub część artykułu (z adresem) moze być dostępna dopiero po zalogowaniu.
itd, itd
1. Są komponenty do udostępniania plików z możliwością ustawienia czy niezalogowany na do nich prawo.
2. Informację do obcego pliku można przekazać za pomocą zmiennej GET
3. Wyświetlanie linku może być uwarunkowane tym, czy jest się zalogowanym
4. Artykuły lub część artykułu (z adresem) moze być dostępna dopiero po zalogowaniu.
itd, itd
ad1 po licha mam używać jakieś wielkie kloce jak chcę prosto sprawdzić czy jest ktoś zalogowany...i później podjąć odpowiednią akcje.
ad2 jeśli informacja będzie przekazywana w treści linku o ile dobrze rozumiem to sobie ktoś też będzie przekazywał tą informacje i będzie tak że ktoś wywoła sobie gdzieś mój plik i mu zadziała bo zasymuluje argument.
ad3 może być uwarunkowane, ale jeśli ktoś już się dowie jaki to link to rozniesie go po sieci, a ja chcę żeby tylko to działało jak ktoś się zaloguje na mojej stronie
ad4 tak jak w ad3
Kombinuje z tym już prawie weekend cały, bo wcześniej chciałem zastosować remository albo docman, ale to za wielkie przyrządy do tak prostej (chyba) operacji. A po drugie to te komponenty mają pełno błędów...
zwiastun
28-09-2009, 00:00
Wyważanie otwartych drzwi jest zawsze wartościowe pod względem edukacyjnym. Czy sensowne, to już inna kwestia.
a) może to wystarczy - żadna kobyła, a swoje robi: http://wiki.joomla.pl/Jsmallfib_%E2%80%93_zarz%C4%85dzanie_plikami
b) a może komponent attachements?
c) a może parę jeszcze innych?
Wyżej nakierowałem na Hider (http://www.joomla.pl/forum/showthread.php?t=30254).
Oki :) dziękuje za pomoc, ale ciąg dalszy zmagań jutro od rana... jak rozwiąże problem odezwę się napewno...
Tak powinien wyglądać poprawny kod zewnętrznego pliku, który sprawdza zalogowanie użytkownika (jeśli plik znajduje sie w katalogu głównym Joomla):
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$user = & JFactory::getUser();
if($user->get('id'))
echo "Jesteś zalogowany";
else
echo "Jesteś niezalogowany"; :)
No i pięknie działa, Bardzo dziękuje za pomoc.
Trzeba było dopisać tylko:
$mainframe =& JFactory::getApplication('site');
Widocznie funkcja getApplication coś inicjuje pomimo istnienia klasy JFactory...
Pozdrawiam
Tak powinien wyglądać poprawny kod zewnętrznego pliku, który sprawdza zalogowanie użytkownika (jeśli plik znajduje sie w katalogu głównym Joomla):
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$user = & JFactory::getUser();
if($user->get('id'))
echo "Jesteś zalogowany";
else
echo "Jesteś niezalogowany"; :)
Kod faktycznie dziala. Mam jednak pytanie jak powinien wygladac kod gdy plik znajduje sie nie w katalogu głownym lecz np. FORM/test.php . Domyslam sie ze zmianie ulegnie linia: define('JPATH_BASE', dirname(__FILE__) );
Dobrze myślisz - trzeba wtedy zdefiniować ścieżkę do katalogu głównego.
Dobrze myślisz - trzeba wtedy zdefiniować ścieżkę do katalogu głównego.
Moglbys mi napisac jak powinna wygladac ta linia kodu: define('.....?...', dirname(__FILE__) ); gdy plik znajduje sie <katalog_głowny>/FORM/test.php
To, że masz problem ze zmodyfikowaniem kodu - to rozumiem, ale żeby mówić do mnie jak do faceta - tego już nie rozumiem. :)
<?php
define( '_JEXEC', 1 );
define( 'DS', DIRECTORY_SEPARATOR );
$sciezka = str_replace(DS.'FORM', '', dirname(__FILE__));
define('JPATH_BASE', $sciezka);
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$user = & JFactory::getUser();
if($user->get('id'))
echo "Jesteś zalogowany";
else
echo "Jesteś niezalogowany";
?>
To, że masz problem ze zmodyfikowaniem kodu - to rozumiem, ale żeby mówić do mnie jak do faceta - tego już nie rozumiem. :)
Dziala ! W swoim poprzednim poscie zwracalem sie do Super Moderator-a, ktorym ty jestes ;). Mozesz mi wskazać gdzie moge znalesc dobry zasób wiedzy odnosnie programowania pod joomla. Jeszcze raz wielkie dzieki za pomoc kolezanko :) Pozdrawiam
Hmmm, programować można się nauczyć tylko w jeden sposób - programując.
Serwer na komputerze z Joomla + podstawy PHP + podstawy SQL + logiczne myślenie + duuużo własnej pracy.
Źródła wiedzy - jak kto lubi: forum, joomla.pl, wiki.joomla.pl, joomla.org (materiały po angielsku), Sieć, książki.
Przykładowo: Własny komponent (http://www.forum.joomla.pl/showthread.php?t=7348&highlight=kurs+komponent%C3%B3w)
Ale to temat na osobny wątek i chyba nie w tym dziale. :)
vBulletin® v4.2.5, Prawa przedruku © 2024 vBulletin Solutions, Inc. Wszystkie prawa zastrzeżone.
Tłumaczenie: Polskie Centrum Joomla!