Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: okienko powitalne pokazywane tylko raz
Forum PHP.pl > Forum > PHP
nikestylex7
Witam. Wiecie może jak mogę napisać w javascript bo w php jest to bez sensu okienko które wyskoczy tylko raz kiedy użytkownik po rejestracji zaloguje się pierwszy raz ?
Adi32
Najprostsze na sesjach:

  1.  
  2.  
  3. if(!$_SESSION[okienko]) {
  4.  
  5. echo '
  6. <script type="text/javascript">
  7. //
  8. </script>
  9. ';
  10.  
  11. $_SESSION[okienko] = true;
  12.  
  13. }
  14.  


Jak nie to cookies. A jeżeli jeden raz na zawsze to wpis do bazy.
Psajkus
@Adi32 mieszasz php z javascriptem? troche to nieladne, niefajne, zeby nie powiedziec... brzydkie.
Adi32
Paskudne jednym słowem... Ale pokazuje mniej więcej jak uzyskać żądany efekt efekt smile.gif
nospor
@Psajkus a Ty pewnie byś chciał, by do tak banalnego kodu zaprząc system szablonów, np. Smarty i rozpisać się na 300 linijek?

Inna kwestia to taka, że do tego js nie jest potrzebny. Wystarczy html + css by zrobić zwykle "okienko"
kaem
Ale co mu dadzą sesje?
Musisz wiedzieć czy użytkownik jest pierwszy raz czy nie. Stwórz sobie w bazie dodatkową kolumnę typu boolean o domyślnej wartośći na to info. Przy logowaniu, od razu z loginem i hasłem pobierasz też informacje czy to jest nowy user. Jeśli tak zmieniasz wartość kolumny a potem w JS po załadowaniu dokumentu (np. body onload="") dajesz funkcję która wyświetli ładne okienko powitalne. Google -> 'jquery modal'
Psajkus
co ma smarty i 300 linijek kodu z mieszaniem php i javascriptu?

btw. Sorry, ze tak zrugalem bezlitosnie wink.gif
nospor
Cytat
co ma smarty i 300 linijek kodu z mieszaniem php i javascriptu?
No bo żeby to pokazać na przykładzie smartiego trzeba by użyć większej ilości kodu wink.gif
Jeśli zaś nie chciałeś używać smartiego czy innego systemu szablonu, to pokaż Twoje rozwiązanie, gdzie nie mieszasz kodu js z php. Z chęcią zobaczę.
Adi32
Cytat(kaem @ 5.01.2012, 21:55:49 ) *
Ale co mu dadzą sesje?
Musisz wiedzieć czy użytkownik jest pierwszy raz czy nie. Stwórz sobie w bazie dodatkową kolumnę typu boolean o domyślnej wartośći na to info. Przy logowaniu, od razu z loginem i hasłem pobierasz też informacje czy to jest nowy user. Jeśli tak zmieniasz wartość kolumny a potem w JS po załadowaniu dokumentu (np. body onload="") dajesz funkcję która wyświetli ładne okienko powitalne. Google -> 'jquery modal'


nikestylex7 napisał, że okienko ma wyskakiwać tylko po rejestracji.

Użytkownicy zwykle nie rejestrują się kilka razy dziennie więc sesje powinny wystarczyć.

Wystarczy wkleić kod zaraz po rejestracji ewentualnie na stronie z komunikatem 'Sie właśnie zarejestrowałeś witamy'. A jak nie to tak jak napisałem dalej - wpis do bazy.
nikestylex7
@kaem tak właśnie myślałem tylko chciałem jakoś uniknąć dodawania rekordu do bazy który jest potrzebny tylko na chwile.
Adi32
Cytat(nikestylex7 @ 5.01.2012, 22:04:53 ) *
@kaem tak właśnie myślałem tylko chciałem jakoś uniknąć dodawania rekordu do bazy który jest potrzebny tylko na chwile.


I tak nie musisz dodawać tego do bazy. Jeżeli masz kolumnę z datą rejestracji to możesz wyświetlić powitanie tylko tego dnia w którym nastąpiła rejestracja (przy okazji zapisując do sesji żeby cały czas nie wyskakiwało). Zdałoby egzamin bo zdaje mi się, że każdy użytkownik loguje się tam gdzie się zarejestrował zaraz po rejestracji.

Jeszcze inaczej możesz zrobić: przy rejestracji możesz ustawić:

  1. $_SESSION[first_time] = true;


A potem przy zalogowaniu tylko:

  1. if ($_SESSION[first_time]) {
  2. // coś tam
  3. unset($_SESSION[first_time]);
  4. }
Psajkus
Tak na szybko, to mozna by to podzielic tak:

php:
  1. if($uzytkownik->pierwszeLogowanie()) {
  2. <div id="okno_powitalne"></div>
  3. }


js:

  1. $(document).ready(function(){
  2. if($("#okno_powitalne").size()>0) {
  3. pokazOkno();
  4. }
  5.  
  6. });
nospor
1) Kod php to jeden wielki PARSE ERROR
2) No ale ten kod js tak czy siak wypadałoby jakoś podpiąć tongue.gif

Tak nakrzyczałeś na poprzednika, że oczekiwałem od Ciebie jakiegoś "cudo" a nie zrobiłeś nic lepiej.
Psajkus
chciałem Ci przedstawić mój sposób a nie działający kod.

Wole trzymać kod php w plikach .php a javascript w .js, łatwiej jest wtedy programować jak ma się wszystko uporządkowane.
nospor
Tak czy siak w kodzie php co pokazałeś, pomijajać PARSE ERROR, też mieszasz kod php z kodem html. Z punktu widzenia PHP jest bez różnicy czy mieszasz php z html czy php z js - efekt jest ten sam - "mieszasz".

Cytat
a javascript w .js
Ale ten plik .js też musisz przecież gdzieś kiedyś podpiąć. No chyba że za każdym razem, niezależnie czy potrzebya czy nie to ładujesz ten kod js, który będzie potrzebny raz na miesiąc.

Nie chcę się z Tobą kłócić. ALe jak napisałem wcześniej tak naskoczyłeś na poprzednika, a sam wcale lepiej nie robisz. On mieszał i ty mieszasz smile.gif
Adi32
Gdy ktoś prosi o przykładowe rozwiązanie problemu to pomijamy takie kwestie smile.gif Każdy wie, że porządek w plikach to podstawa ale to jest indywidualna sprawa.
kaem
Cytat
Użytkownicy zwykle nie rejestrują się kilka razy dziennie więc sesje powinny wystarczyć
dokładnie, ale co to zmienia? Nic. Jest bardzo mały procent ludzi, którzy jednak się nie zalogują od razu po rejestracji, bo albo muszą gdzieś wyjść, coś zrobić, ktoś ich rozproszy i zapomną, net im przestanie działać i wtedy d**a.
Moja rada: skorzystać z dodatkowej kolumny, przecież tam tylko raz będzie zmieniana wartość.
Inny pomysł:
- jeśli nie robisz systemu potwierdzenia założenia konta możesz takiego delikwenta z automatu zalogować po rejestracji i wyświetlić mu to okienko.
- a może te informacje z okienka wystarczy wyświetlić mu po zakończeniu rejestracji?
Psajkus
1. Pisząc posta nie miałem na celu naskoczenie na użytkownika ale zwrócenie uwagi aby trzymać porządek w plikach. Jeśli ktoś uważa, że post był niepomocny, nieprzydatny, zły, niestoswny czy nawet niepotrzebny to można go zignorować wink.gif. W końcu to moja opinia i nie trzeba się z nią zgadzać smile.gif

2. Nie wiedziałem, że się kłócimy. Myślałem, że forum jest od wyrażania swoich opinii i dzielenia się swoimi pomysłami tongue.gif. Warto wiedzieć co na dany temat sądzą inni, czasem można się czegoś nauczyć.

koniec dyskusji niedotyczącej tematu.
nikestylex7
mam dalej problem bo każde umieszczenie skryptu jquery w php czyli wywołanie nie działa. Jako, że umieszczam w bazie liczbę 1 czyli osoba jeszcze się nie zalogowała, loguję się zmienia mi w bazie na 2 czyli wszystko gra lecz problem jest ze skryptem. Wywołuje go za pomocą window onload
  1. <script>
  2. function okno() {
  3. $().ready(function() {
  4. $('#okienko').jqm();
  5. });
  6. }</script>


i to mam w echo'';
Nie wiem właśnie czy to jest dobrze.

  1. <script type="text/javascript">
  2. window.onload=okno();
  3. </script>
kaem
Po pierwsze źle to robisz. W funkcji okno() dajesz kod, który coś robi po załadowaniu dokumentu. W JQuery $(dokument).ready(function() to jest to samo co w czystym JS window.onload. Oba służą do wykonania kodu po załadowaniu dokumentu.
Jeśli ma się pojawić okienko powitalne wystarczy tylko taki kod:

  1. <script type="text/javascript">
  2. $(document).ready(function() {
  3. $('#okienko').jqm();
  4. });
  5. </script>

albo jeśli chcesz zrobić tak jak napisałeś wcześniej to wywał $().ready(function() { z funkcji okno();
nikestylex7
To ja już nie wiem bądź co bądź moja wiedza jest ograniczona chciałbym ja rozwijać myślałem, że jak na jquery to internet starczy ale raczej nie więc muszę kupić jakąś dobrą książkę. Dalej nic nie pokazuje. Zrobiłem tak:

.php
  1. else{
  2. $user = $_SESSION['glob'];
  3. $user = mysql_fetch_assoc(mysql_query("SELECT user, przydomek, avatar, logowanie FROM user WHERE user='$user'"));
  4. if ($user['logowanie'] == 1){
  5. ?>
  6. <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
  7. <script type="text/javascript">
  8. $(document).ready(function() {
  9. $('#dialog').jqm();
  10. });
  11. </script>
  12. <div class="jqmWindow" id="dialog">
  13. <a href="#" class="jqmClose">Zamknij</a>
  14. <em>Przeczytaj</em> -->....
  15. </div>
  16. <?php
  17. mysql_query("UPDATE user SET logowanie ='2' WHERE user='$user[user]'");
  18. }else




questionmark.gif

questionmark.gif?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.