Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> skrypt logowania z spersonalizowanymi kontami użytkowników
dtrb
post 31.01.2011, 10:28:16
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 31.01.2011

Ostrzeżenie: (0%)
-----


Witam.

Ma może ktoś z Państwa skrypt php rejestracji oraz logowania użytkowników, ale żeby każde założone konto było spersonalizowane, czyli każdy użytkownik widzi rzeczy przeznaczone tylko dla niego...

Ewentualnie proszę o pomoc/skrypt z zapytaniem SELECT do bazy w takim kształcie, aby pobierało wybrane dane z bazy dla danego zalogowanego w sesji użytkownika.

Bardzo proszę o pomoc.
Go to the top of the page
+Quote Post
Daiquiri
post 31.01.2011, 11:20:51
Post #2





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Jeżeli prosisz o pomoc, to pokaż co już masz - myślę, że znajdą się tutaj osoby, które Ci pomogą smile.gif.
Go to the top of the page
+Quote Post
dtrb
post 31.01.2011, 11:59:44
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 31.01.2011

Ostrzeżenie: (0%)
-----


CODE
<?php
ob_start();
session_start(); // rozpoczęcie sesji
?>

<?php include('header.php'); ?>

<h2>&raquo; System rejestracji użytkowników<br />PHP & MySQL</h2>
<div class="content">

<?php
// jeżeli użytkownik jest zalogowany wyświetlamy inforamcję
if (isset($_SESSION['login'])) {
echo '<p><img class="user" src="img/user.png">Jesteś zalogowany jako: <strong>'.$_SESSION['login'].'</strong></p>';
}

else {
echo '';
}

?>
<h3>Nasz system posiada:</h3>
<p>
<img class="tick" src="img/tick.png" alt="" /> Rejestrację (wraz z wbudowaną walidacją <strong>reCAPTCHA</strong>),<br />
<img class="tick" src="img/tick.png" alt="" /> Logowanie,<br />
<img class="tick" src="img/tick.png" alt="" /> Przypominanie hasła,<br />
<img class="tick" src="img/tick.png" alt="" /> Weryfikację konta poprzez e-mail,<br />
<img class="tick" src="img/tick.png" alt="" /> Zmianę danych użytkownika.<br />
</p>

</div>




<?php include('footer.php'); ?>


I w tym miejscu wyświetla się nazwa zalogowanego użytkownika:

CODE
echo '<p><img class="user" src="img/user.png">Jesteś zalogowany jako: <strong>'.$_SESSION['login'].'</strong></p>';


A jak mam zrobić, żeby prócz tej nazwy zaczytywały się inne wybrane przeze mnie dane z bazy danych tylko dla tego danego użytkownika zalogowanego.

Załóżmy, że mamy dwóch użytkowników A i B. Użytkownik A ma przypisaną wartość 12, a użytkownik B ma przypisaną wartość 9. Chcę tak zrobić, że po zalogowaniu w panelu użytkownika A widać jego wartość 12, a jak zaloguje się użytkownik B widzi w tym samym miejscu przypisaną do niego wartość 9.
Tak, aby użytkownicy nie widzieli na wzajem szczegółowych danych tj. osobowych.
Powód edycji: [Daiquiri]: Stosuj BBCode odpowiedni dla tego, co wklejasz np. tagi PHP. Popraw to proszę.
Go to the top of the page
+Quote Post
kadlub
post 31.01.2011, 12:52:47
Post #4





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

Ostrzeżenie: (0%)
-----


nie wiem jaką masz tabele userów w bazie danych

ale

  1. $query="SELECT * FROM users WHERE user='SESSION[user]' ";
  2. $wynik=mysql_fetch_array($query);
  3.  
  4. echo $wynik['twoja_wartosc'];
  5.  
  6.  


Ten post edytował kadlub 31.01.2011, 12:53:42
Go to the top of the page
+Quote Post
ylk
post 31.01.2011, 13:14:25
Post #5





Grupa: Zarejestrowani
Postów: 194
Pomógł: 26
Dołączył: 9.01.2011
Skąd: /dev/null

Ostrzeżenie: (0%)
-----


Cytat(kadlub @ 31.01.2011, 12:52:47 ) *
  1. $query="SELECT * FROM users WHERE user='SESSION[user]' ";

chyba raczej
  1. $q="SELECT id FROM users WHERE user='{$_SESSION['user']}'";

i gdzie zjadłeś
  1. $r=mysql_query("$q");

questionmark.gif
Cóż to za niechlujna forma pomocy? winksmiley.jpg
Go to the top of the page
+Quote Post
kadlub
post 31.01.2011, 13:27:06
Post #6





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

Ostrzeżenie: (0%)
-----


faktycznie zjadłem mysql_query i $_

a skąd wiesz że chodzi mu tylko o id
a zapytanie jest poprawne bo mi działa bez zastrzeżeń nie potrzebne są klamerki jak chcesz to sobie sprawdź

  1.  
  2. $query=mysql_query("SELECT * FROM users WHERE user='$_SESSION[user]' ");
  3.  
  4. $wynik=mysql_fetch_array($query);
  5.  
  6.  
  7.  
  8. echo $wynik['twoja_wartosc'];
  9.  


Ten post edytował kadlub 31.01.2011, 13:38:37
Go to the top of the page
+Quote Post
ylk
post 31.01.2011, 13:46:48
Post #7





Grupa: Zarejestrowani
Postów: 194
Pomógł: 26
Dołączył: 9.01.2011
Skąd: /dev/null

Ostrzeżenie: (0%)
-----


OK, faktycznie nie chodzilo mu tylko o id usera smile.gif
A co do klamerek, to owszem, dziala bez, ale zajmuje wiecej czasu, bo PHP najpierw probuje wstawic wartosc stalej a potem dopiero traktuje to jako string. Roznice sa pewnie minimalne ale niemniej jednak dobrą praktyką jest wstawianie klamerek smile.gif
Go to the top of the page
+Quote Post
kadlub
post 31.01.2011, 13:49:22
Post #8





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

Ostrzeżenie: (0%)
-----


też prawda
Go to the top of the page
+Quote Post
dtrb
post 31.01.2011, 14:07:24
Post #9





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 31.01.2011

Ostrzeżenie: (0%)
-----


mam taką bazę danych:

CREATE TABLE `rejestracja` (
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`imie` VARCHAR(100) NOT NULL,
`nazwisko` VARCHAR(100) NOT NULL,
`login` VARCHAR(30) NOT NULL,
`haslo` VARCHAR(50) NOT NULL,
`email` VARCHAR(100) NOT NULL,
`kod` VARCHAR(32) NOT NULL,
`data` DATETIME NOT NULL,
`status` TINYINT(1) DEFAULT 0,

PRIMARY KEY (`id`)
)
ENGINE=MyISAM DEFAULT CHARACTER SET latin1
COLLATE latin1_general_cs AUTO_INCREMENT=0;


i chciałbym żeby pobrać z bazy imię i nazwisko dla danego użytkownika żeby było widoczne po zalogowaniu

i dodałem taki kod


<?php
$connect = mysql_connect("localhost","root","haslo","baza");
$query=mysql_query("SELECT * FROM rejestracja WHERE login='$_SESSION[login]' ");
$wynik=mysql_fetch_array($query);
echo $wynik['nazwisko'];
?>


ale chyba coś w nim nie tak i chyba w złym miejscu tongue.gif

Ten post edytował dtrb 31.01.2011, 14:08:25
Go to the top of the page
+Quote Post
kadlub
post 31.01.2011, 14:10:15
Post #10





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

Ostrzeżenie: (0%)
-----


  1.  
  2. $query=mysql_query("SELECT imie, nazwisko FROM rejestracja WHERE login='$_SESSION[login]' ");
  3.  
  4. $wynik=mysql_fetch_array($query);
  5.  
  6. echo $wynik['imie'];
  7.  
  8. echo $wynik['nazwisko'];
  9.  

a co się dzieje??

Ten post edytował kadlub 31.01.2011, 14:11:50
Go to the top of the page
+Quote Post
ylk
post 31.01.2011, 14:11:19
Post #11





Grupa: Zarejestrowani
Postów: 194
Pomógł: 26
Dołączył: 9.01.2011
Skąd: /dev/null

Ostrzeżenie: (0%)
-----


jeszcze zapomniales po polaczeniu z serwerem MySQL wybrac bazy na ktorej chcesz pracowac:
  1. mysql_select_db('mojabaza');
Go to the top of the page
+Quote Post
dtrb
post 31.01.2011, 14:18:25
Post #12





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 31.01.2011

Ostrzeżenie: (0%)
-----


działa teraz smile.gif


a teraz trudniejsza czesc tongue.gif jak zrobić zeby u użytkownika A w menu pojawiła sie strona o nazwie page10.php a u użytkownika B strona page12.php?questionmark.gif?
Go to the top of the page
+Quote Post
kadlub
post 31.01.2011, 14:22:19
Post #13





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

Ostrzeżenie: (0%)
-----


daj if i include
Go to the top of the page
+Quote Post
ylk
post 31.01.2011, 14:24:07
Post #14





Grupa: Zarejestrowani
Postów: 194
Pomógł: 26
Dołączył: 9.01.2011
Skąd: /dev/null

Ostrzeżenie: (0%)
-----


Nie rozumiem dokładnie, co chcesz osiągnąć, ale możesz sobie do bazy z userami dodać kolejną kolumnę, powiedzmy 'page', gdzie bedzie zapisany adres strony dla poszczegolnych uzytkownikow, i potem w menu wyswietlac $wynik['page']
Go to the top of the page
+Quote Post
dtrb
post 31.01.2011, 14:36:08
Post #15





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 31.01.2011

Ostrzeżenie: (0%)
-----


zostosowałem baze danych i działa fajnie smile.gif


echo '<a href="'.$wynik['page'].'">'.$wynik['page'].'</a>';




smile.gif


a można zmienić format numeracji pola id?? bo baza numeruje kolejno 1, 2, 3, 4, 5, ... a chciałbym, żeby był numer w innym formacie czyli np. miesiąc rok i numer kolejny czyli 0120110001, 0120110002, ...
Go to the top of the page
+Quote Post
ylk
post 31.01.2011, 14:37:55
Post #16





Grupa: Zarejestrowani
Postów: 194
Pomógł: 26
Dołączył: 9.01.2011
Skąd: /dev/null

Ostrzeżenie: (0%)
-----


nie, nie można. pole auto_increment to musi być int. ale możesz osobno przechowywać datę w tabeli i generować sobie na jej podstawie numer jaki ci się podoba smile.gif
Go to the top of the page
+Quote Post
dtrb
post 31.01.2011, 14:51:32
Post #17





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 31.01.2011

Ostrzeżenie: (0%)
-----


ale musze w tedy recznie wprowadzac numer przez formularz a chcialby zeby ten numer przy rejestracji uzytkownika sam sie dodwal do bazy w pewnym formacie
Go to the top of the page
+Quote Post
ylk
post 31.01.2011, 14:59:15
Post #18





Grupa: Zarejestrowani
Postów: 194
Pomógł: 26
Dołączył: 9.01.2011
Skąd: /dev/null

Ostrzeżenie: (0%)
-----


no to tworzysz sobie w tabeli nowe pole, powiedzmy 'nr' i nawiązując do formatu, który podałeś (0120110001) generujesz go sobie np. tak:
  1. // najpierw pobierasz id ostatnio zarejestrowanego usera
  2. $r=mysql_query("SELECT MAX(id) FROM users");
  3. $row=mysql_fetch_row($r);
  4. $id=$row[0];
  5.  
  6. // teraz generujesz sobie numerek w formacie ktory chciales
  7. $date=date("mY");
  8. if (strlen($id)<4) for ($licz=0; $licz<strlen($id)-1; $licz++) $nu_id=0."$nu_id"; // uzupelnia zerami z przodu
  9. $nr=$date.$nu_id;
  10.  
  11. //i zapisujesz spowrotem do bazy
  12. mysql_query("UPDATE users SET nr='$nr' WHERE id=$id");
Go to the top of the page
+Quote Post
dtrb
post 31.01.2011, 15:05:25
Post #19





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 31.01.2011

Ostrzeżenie: (0%)
-----


i to wrzucic do pliku gdzie jest skrypt rejestracji uzytkownika?
Go to the top of the page
+Quote Post
ylk
post 31.01.2011, 16:02:53
Post #20





Grupa: Zarejestrowani
Postów: 194
Pomógł: 26
Dołączył: 9.01.2011
Skąd: /dev/null

Ostrzeżenie: (0%)
-----


tak, zaraz po tym jak go dodasz do bazy.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 02:29