Potwierdzenie wysłanie formularza

2010-11-19 15:48:00 Post #1 andrzejlechniak

 
Hej. Mam mały problem. Mam taki kod:

$sql="INSERT INTO
								xxx
								 (login,password,e_mail,data)
								 VALUES ('{$_POST['login']}', '{$_POST['password']}', '{$_POST['e_mail']}', CURDATE());";
								 $result=mysql_query($sql) or print ($sql);
							
							if($result) {
								echo 'Dodano';
							}
							
							echo '<form action="user.php?id=rejestracja" method="post">
									<input type="hidden" name="opcja" value="test" />
									<table>
									<tr>
									  <td>login:</td>
									  <td><input type="text" name="login" /></td>
									</tr>
									<tr>
									  <td>hasło:</td>
									  <td><input type="password" name="password" /></td>
									</tr>
									<tr>
									  <td>e-mail:</td>
									  <td><input type="text" name="email" /></td>
									</tr>
									  <td>&nbsp;</td>
									  <td><input type="submit" value="Zarejestruj" /></td>
									</tr>
									</table>
								  </form>';


Wszystko działa i jest... prawie OK. Prawie bo gdy klikam i otrzymuję wiadomość, że OK, wraca mi też formularz. Co mam zrobić, aby po przesłaniu formularza przesylała się tylko wiadomość o tym żę OK lub że nie OK?

2010-11-19 18:34:35 Post #2 nospor

 
Użyj IF.
Jeśli wysłano formularz i jest ok, to go już nie pokazuj. Do tego służy IF

2010-11-19 18:42:00 Post #3 andrzejlechniak

 
Hej. Tamto jakoś rozwiązałem. Borykam się teraz z nieszczęsnym logowaniem. Chcę stworzyć system logowania z rangami. Mam 3 rangi, gdzie 0 - to user, 1 - mod, 2 - admin i taki kod:

if($_GET["wyloguj"] == '1') $_SESSION["logged"] = "nie";
	
							if($_SESSION["logged"] != "tak") 
							{
								if (empty($_POST))
								{
									echo '<form name="form1" action="index.php?id=konto" method="Post" >
											<div class="log_main">
											<div class="log_form">&rsaquo; LOGOWANIE DO SERWISU</div>
											<div class="log_dane">	
												<div class="log_form">U¿ytkownik: <input name="myusername" type="text" id="myusername"></div>
												<div class="log_form">Has³o: <input name="mypassword" type="password" id="mypassword"></div>
												<div class="log_form">&nbsp;
													<input type="submit" name="Submit" value="Zaloguj" title="zaloguj siê">
												</div>
											</div>
											</div>
										  </form>';
								}
								else  
								{
									$myusername=$_POST['myusername'];
									$mypassword=$_POST['mypassword'];

									//Ochrona przeciw SQl injection
									$myusername = stripslashes($myusername);
									$mypassword = stripslashes($mypassword);
									$myusername = mysql_real_escape_string($myusername);
									$mypassword = mysql_real_escape_string($mypassword);

									$sql="SELECT * FROM xxx WHERE login='$myusername' and password='$mypassword'";
									$result=mysql_query($sql);

									$count=mysql_num_rows($result);
								}
						
								if($count==1){
									$_SESSION["logged"] = "tak";
									$_SESSION["username"] = $myusername;
								}
								else {
									return "B³êdny login lub has³o";
								}
							}
							
							if($_SESSION["logged"] == "tak") 
							{	
								if($_SESSION['ranga']==2) 
								{
									echo 'jeste¶ administratorem';
									
								} 
								else if($_SESSION['ranga']==1)
								{
									echo 'Jeste¶ moderatorem';
								}
								else 
								{
									echo 'Nie jeste¶ administratorem ;-(';
								}

							}


Problem w tym, że wskazuje na jedno pole - np. moderatora, a nie identyfikuje po liczbie w sesji typ użytkownika. Pomożesz?

2010-11-19 18:48:05 Post #4 nospor

 
Korzystasz z $_SESSION['ranga'] a nigdzie tej $_SESSION['ranga'] nie ustawiasz.... no powinienes to ustawić zaraz po zalogowaniu.

2010-11-19 18:57:32 Post #5 andrzejlechniak

 
Poprawiłem to i owo i działa. Ale... Mam kilka linków w panelu admina. Klikam na nie i wszystko w nich działa, ale kiedy chcę wrócić z powrotem do panelu czyli do strony głównej zalogowania to... to mi się pokazuje komunikat: jesteś zwykłym użytkownikiem a nie panel sterowania na stronie głównej po zalogowaniu

2010-11-19 22:51:41 Post #6 andrzejlechniak

 
Pomóżcie

2010-11-20 01:32:14 Post #7 gość_programista

 
Ja zastosowałbym system rang i uprawnień na stronie - każda ranga ma zdeklarowane jakie ma możliwości a jakie nie i nie ma żadnego kombinowania

2010-11-20 11:49:48 Post #8 gość_andlech

 
Hej. No dobra, podaję kod tej strony. I jeszcze raz piszę: I teraz tak. Jeśli się zaloguję jako administrator to owszem mam menu administratora i klikam sobie na kategorie, wiadomości itd., ale gdy chcę wrócić do panelu sterowania, to.... no to właśnie nic nie otrzymuję, białą zupełnie stronę, ewentualnie tekst: jesteś zwykłym użytkownikiem. Czy to zależy od tego, że poszczególnie funkcje muszą być przypisane do sesji?

if($_SESSION["logged"] == "tak") 
						{
							$sql="SELECT * FROM uzytkownicy WHERE login='$myusername' and password='$mypassword'";
							$result = mysql_query($sql);
							while($row = mysql_fetch_assoc($result))
							{
								session_register('ranga');
								$_SESSION['ranga'] = $row['ranga'];
								if($_SESSION['ranga']==2) 
								{
									echo 'jesteś administratorem';
									echo '<div class="panel_admin_main">
										Witaj, jesteś zalogowany jako: 
										<strong>' .$_SESSION['username']. '</strong> | 
										<a href="admin.php?id=konto&wyloguj=1" OnClick="return confirm(\'Czy napewno chcesz się wylogować?\');" title="Wyloguj się z serwisu">Wyloguj się</a><br />
									  <ul>
										<li><a href="admin.php?id=admin_wydarzenia" title="Przejdź do panelu zarządzania wiadomościami">Zarządzanie wiadomościami</a></li>
									  </ul>
								  </div>';
								} 
								elseif($_SESSION['ranga']==1)
								{
									echo 'Jesteś moderatorem';
								}
								elseif($_SESSION['ranga']==0)
								{
									echo 'Jesteś zwykłym użytkownikiem <br />';
								}
								else
								{
									echo 'Jakim cudem tu się zalogowałeś?';
								}
							} 
						}

2010-11-22 07:30:24 Post #9 nospor

 
1) A w nieadminie masz session_start()?
2) Pokaż jak wygląda link do admina a jak do klienta
3) Włączyłeś wyświetlanie wszystkich błędów jak cię już nie raz prosiłem? Pokaż jak to zrobiłeś

2010-11-22 09:20:34 Post #10 andrzejlechniak

 
Po pierwsze, mam małe pytanko: czemu skasowałeś mój temat o traceniu sesji? Po drugie sorki jeśli Ci zablokowałem coś. Jak wpisywałem poprzedni post na TYM temacie to coś się pochrzaniło. Co do mojego problemu: czemu mam dawać w adminie session_start() skoro na początku strony to deklaruję? Włączyłem obsługę błędów i... mam takie coś:
Notice: Undefined variable: myusername in C:\xampp\xampp\htdocs\xampp\moyo-0.1\logowanie.php on line 110

Notice: Undefined variable: mypassword in C:\xampp\xampp\htdocs\xampp\moyo-0.1\logowanie.php on line 110

Deprecated: Function session_register() is deprecated in C:\xampp\xampp\htdocs\xampp\moyo-0.1\logowanie.php on line 114
Jesteś zwykłym użytkownikiem

Deprecated: Function session_register() is deprecated in C:\xampp\xampp\htdocs\xampp\moyo-0.1\logowanie.php on line 114
Jesteś zwykłym użytkownikiem

zamiast zalogowania. A teraz podaję skrypt:
if($_GET["wyloguj"] == '1')
						{
							session_destroy();
							unset($_SESSION["logged"]);
						}
	
						if($_SESSION["logged"] != "tak") 
						{
							if (!isset($_POST['myusername']) || $_POST['myusername']=="" || !isset($_POST['mypassword']) || $_POST['mypassword']=="")
							{
								echo '<form name="form1" action="logowanie.php?id=konto" method="Post" >
										<div class="log_main">
										<div class="log_form">&rsaquo; LOGOWANIE DO SERWISU</div>
										<div class="log_dane">	
											<div class="log_form">Użytkownik: <input name="myusername" type="text" id="myusername"></div>
											<div class="log_form">Hasło: <input name="mypassword" type="password" id="mypassword"></div>
											<div class="log_form">&nbsp;
												<input type="submit" name="Submit" value="Zaloguj" title="zaloguj się">
											</div>
										</div>
										<div class="log_form2">
											<a href="javascript:history.go(-1);" title="cofnij do poprzedniej strony"> Wstecz</a> - 
											<a href="logowanie.php?id=rejestracja">Rejestarcja</a>
										</div>
										</div>
									  </form>';
							}
							else  
							{
								$myusername=$_POST['myusername'];
								$mypassword=$_POST['mypassword'];
								
								//Ochrona przeciw SQl injection
								$myusername = stripslashes($myusername);
								$mypassword = stripslashes($mypassword);
								$myusername = mysql_real_escape_string($myusername);
								$mypassword = mysql_real_escape_string($mypassword);

								$sql="SELECT * FROM uzytkownicy WHERE login='$myusername' and password='$mypassword'";
								
								$result=mysql_query($sql) or die('Zapytanie:'.$query.' Blad:'.mysql_error());
								$count=mysql_num_rows($result);
							}
					
							if($count==1)
							{
								$_SESSION["logged"] = "tak";
								$_SESSION["username"] = $myusername;
							}
							else 
							{
								return "Błędny login lub hasło";
							}
						}
	
						if($_SESSION["logged"] == "tak") 
						{
							error_reporting(E_ALL);
							
							$sql="SELECT * FROM uzytkownicy WHERE login='$myusername' and password='$mypassword'";
							$result = mysql_query($sql)  or die('Zapytanie:'.$query.' Blad:'.mysql_error());
							while($row = mysql_fetch_assoc($result))
							{
								session_register('ranga');
								$_SESSION['ranga'] = $row['ranga'];
								if($_SESSION['ranga']==2) 
								{
									echo 'jesteś administratorem';
									echo '<div class="panel_admin_main">
										Witaj, jesteś zalogowany jako: 
										<strong>' .$_SESSION['username']. '</strong> | 
										<a href="logowanie.php?id=konto&wyloguj=1" OnClick="return confirm(\'Czy napewno chcesz się wylogować?\');" title="Wyloguj się z serwisu">Wyloguj się</a><br />
									  <ul>
										<li><a href="logowanie.php?id=admin_wydarzenia" title="Przejdź do panelu zarządzania wiadomościami">Zarządzanie wiadomościami</a></li>
									  </ul>
								  </div>';
								} 
								elseif($_SESSION['ranga']==1)
								{
									echo 'Jesteś moderatorem';
								}
								elseif($_SESSION['ranga']==0)
								{
									echo 'Jesteś zwykłym użytkownikiem <br />';
								}
								else
								{
									echo 'Jakim cudem tu się zalogowałeś?';
								}
							} 
						}

Teraz już w ogóle cyrk mi się zrobił z tego logowania. Jak chcę wrócić do panelu głównego logowania, to wyświetla mi wszystkich 'zwykłych użytkowników'. Co robić? A

2010-11-22 09:46:44 Post #11 nospor

 
Po pierwsze, mam małe pytanko: czemu skasowałeś mój temat o traceniu sesji?
Bo powieliłeś treść, którą napisałeś tu
czemu mam dawać w adminie session_start() skoro na początku strony to deklaruję?
jesli admin korzysta z tego samego początku, to nie musisz. Jesli jednak nie korzysta to musisz.
Włączyłem obsługę błędów i... mam takie coś:
No dziękuję, że w koncu to uczyniles. A tyle razy już prosiłem... Momentami nie wiem co mam o tym myslec - czlowiek stara sie pomoc, udziela dobrych rad a tu jak grochem o sciane...

Mowilem ci tez, bys robił print_r, debugowal co dana zmienna ma na danym etapie. Dzieki tej metodzie bedziesz blizej rozwiązania. I nawet jak Tobie to nic nie pomoze, to pomoze to osobie, która będzie starała ci się pomóc.

2010-11-22 10:23:05 Post #12 andrzejlechniak

 
No dobra, ale to coś zmienia, wciąż nie wiem co z tym zrobić? Mam ustawione session_start() na początku strony która jest stroną z logowaniem. Czy może (gdzie i ew. jaki) ustawić identyfikator sesji, abym nie przechodził na pustą stronę, jak chcę wrócić do głównego panelu sterowania?

Zrobiłem jak radziłeś print_r($_SESSION) i mam coś takiego:
Array ( [logged] => tak [username] => admin [ranga] => 0 )

Dziwne, znaczy się, że mimo iż jest ustawiona ranga, to sesja jej nie odczytuje... chyba to znaczy, nie?

2010-11-22 10:30:42 Post #13 nospor

 
No dobra, ale to coś zmienia, wciąż nie wiem co z tym zrobić?

1) Masz bledy, widzisz je na ekranie - musisz je poprawic.
2) Masz robic echo, masz robic print_r, masz robic var_dump - dzieki temu bedziesz wiedzial co w danym etapie gdzie sie znajduje - TO POMOGA SZUKAC BLEDU - ZROZUM TO WKONCU a nie tylko ciagle "nie wiem". Takim nastawieniem nie zajedziesz za daleko.
Próbuję ci pomoc, ale ty na to nie pozwalasz. A za ciebie tego pisać na pewno nie będę.

Czy może (gdzie i ew. jaki) ustawić identyfikator sesji, abym nie przechodził na pustą stronę, jak chcę wrócić do głównego panelu sterowania?
session_start ma byc na początku kazdego żądania.

Zrobiłem jak radziłeś print_r($_SESSION) i mam coś takiego:
Masz to zrobić w kilku miejscach by sprawdzic czy wszedzie jest. Masz to zrobic zaraz po przypisaniu, masz to zrobic tu przed odwolywaniem sie do tych sesji. Skoro ci pisze ze nie ma, to znaczy ze przy odwolywaniu sie nie masz tego

2010-11-22 10:32:37 Post #14 nospor

 
ps: te bledy:
Notice: Undefined variable: myusername in C:\xampp\xampp\htdocs\xampp\moyo-0.1\logowanie.php on line 110 

Notice: Undefined variable: mypassword in C:\xampp\xampp\htdocs\xampp\moyo-0.1\logowanie.php on line 110
Bardzo dużo dają informacji. Przyjrzyj sie im, zbadaj dlaczego się wyswietlają a będziesz mial rozwiązanie zagadki. To jest tak oczywiste.... wystarczy odrobine dluzej na to spojrzec

2010-11-22 12:42:07 Post #15 korey

 
ja mogę dodać ze błąd znajduje się z 110 wierszu kodu

Odpowiedz

Ostatnio komentowane

  1. ShoutBox Podświadomość
  2. ShoutBox Trilux
  3. ShoutBox morelowy-dolomit
  4. ShoutBox Lucidoremi
  5. ShoutBox Goran Lezczek
  6. ShoutBox Ktos
  7. Opcje dwuwartościowe... gosc

Ostatnio na forum

  1. Prolem z biblioteką ... ele
  2. Programista/ka PHP, ... Kamil
  3. ilość wczytywanych m... boob
  4. Humor Masłan
  5. Humor Enynsenes
  6. Humor KLOFMDMANELLIGGLOOSK
  7. Humor Goran Lezczek

Skrypty użytkowników

  1. Klasa obsługi szablo... Lirdoner
  2. Sekcje user76
  3. Klasa walidująca for... user76
  4. Licznik Gości online korey
  5. Form Builder Comandeer
  6. Dynamiczny licznik z... korey
  7. Captcha Comandeer