Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/MySQL] Logowanie sie na strone
Forum PHP.pl > Forum > Przedszkole
Dende
Witam! biggrin.gif
Probowalem pare tutoriali ale najwyrazniej jeszcze tego nie lapie =P
A z nowymi rzeczami to jest tak ze jak ktos pokaze i ma sie juz zrobiony skrypt to potem juz to jakos smiga =D
dlatego prosze o pomoc, co tutaj jest nie teges ?
plik: logowanie_scr.php
  1. <?
  2. if(isset($_POST['id_uzytkownika'])&&isset($_POST['haslo']))
  3. {
  4. include('conn.php');
  5.  
  6. function usun($data){
  7.  
  8. GLOBAL $dbc;
  9. if (ini_get('magic_quotes_gpc')){
  10. $data = stripslashes($data);
  11. }
  12. return mysql_real_escape_string($data, $dbc);
  13. }
  14.  
  15.  
  16.  
  17. $query = "SELECT id_uzytkownika,nick,haslo FROM fb_uzytkownicy WHERE id_uzytkownika='".$_POST['id_uzytkownika']."' AND haslo='".$_POST['haslo']."'";
  18. $result = mysql_query($query);
  19. $row = mysql_fetch_array ($result, MYSQL_ASSOC); 
  20.  
  21. if($row){
  22. session_name ('jakasnazwa'); // tutaj ustawiamy nazwe sesji
  23. session_set_cookie_params (600, '/', 'www.adres.pl'); // opisane nizej
  24. $_SESSION['id_uzytkownika'] = $row['id_uzytkownika'];
  25. $_SESSION['nick'] = $row['nick'];
  26. header ('Location: index.php?id='.$row['nick']);
  27. }else{
  28. $message = '<font class="blad">Nie podales/as ID i/lub hasla</font><br />';
  29. }
  30.  
  31. }
  32. ?>


Plik: logowanie_powitanie.php
  1. <?
  2. include("logowanie_scr.php");
  3.  
  4.  
  5. $komunikat='<center><div id="nt">Witaj <b>'.$_SESSION['nick'].'</b>!<br>
  6. Wlasnie sie zalogowales. kliknij <a href="index.php?id='.$_SESSION['id_uzytkownika'].'">TUTAJ</a> aby przejsc do swojego profilu</div></center>';
  7.  
  8.  
  9. $formularz='<table cellpadding="5" width="500px">
  10. <tr>
  11. <td align=center>
  12. <form action="index.php?id=4" method="POST" ENCTYPE="multipart/form-data">
  13.  
  14. <div id="bt">logowanie:</div><BR>
  15. <div id="bt">id:</div>
  16. <INPUT TYPE=TEXT NAME=id_uzytkownika size="40" maxlength="6" style="background-color: #777777; border-color: #222222;"><BR><BR>
  17.  
  18. <div id="bt">haslo:</div>
  19. <div id="nt">(Max 10 znakow)</div>
  20. <INPUT TYPE=TEXT NAME=haslo size="40" maxlength="10" style="background-color: #777777; border-color: #222222;"><BR><BR>
  21.  
  22. <input type="submit" value="Wyslij"/>
  23. </form>
  24. </td>
  25. </tr>
  26. </table>';
  27.  
  28.  
  29.  
  30. if(!isset($_SESSION['id_uzytkownika'])) { 
  31.  
  32. echo $formularz; 
  33.  
  34. }else{
  35.  
  36. echo $komunikat; 
  37.  
  38. }
  39.  
  40. if(isset($message)){
  41. echo "<center><div id='bt'>".$message."</div></center>";
  42. }
  43. ?>


plik logowanie_powitanie.php jest zincludowany na strone glowna gdy index?id=4

po wpisaniu prawidlowych danych wyskakuja 3 bledy:
  1. Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/domena/ftp/strona/index.php:16) in /home/domena/ftp/strona/logowanie_scr.php on line 25
  2.  
  3. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/domena/ftp/strona/index.php:16) in /home/domena/ftp/strona/logowanie_scr.php on line 25
  4.  
  5. Warning: Cannot modify header information - headers already sent by (output started at /home/domena/ftp/strona/index.php:16) in /home/domena/ftp/strona/logowanie_scr.php on line 28

+
wyzej wymieniony $komunikat, z czego caly jest poprawny ( zmienna $_SESSION['id_uzytkownika'] przyjmuje wartosc wpisana w okienku )

co dziwniejsze (dla mnie tongue.gif) calosc wyswietla sie na szczycie komorki (a nie tam gdzie zostalo zincludowane).

Milo by bylo jakby ktos pomogl =)
skowron-line
  1. <?php
  2. if(isset($_POST['id_uzytkownika'])&&isset($_POST['haslo']))
  3. {
  4. ?>


nie tak tylko
  1. <?php
  2. if(isset($_POST['id_uzytkownika'])&&isset($_POST['haslo']))
  3. {
  4. ?>


eidit i uzupelnij tytul o odppowiedni tag bo ci zamkna ten topic
----------------------
Od tego jest opcja "Raportuj" !
---
~strife
Dende
poprawilem na
  1. <?
  2. if(isset($_POST['id_uzytkownika'])&&isset($_POST['haslo']))
  3. {
  4. //(...)
  5. }
  6. ?>


i nadal te same bledy...

mooooze problem jest z serwerem ? z tego co nieraz rozne rzeczy mi sie obijaly o uszy to chyba mam wylaczona opcje global czy cu ?
np dane z paska nawigacji (urla) musze pobierac za pomoca $zmienna=$_GET['zmienna'];
czy to w tym przypadku nie ma znaczenia ?
dodam ze serwer znajduje sie w serwisie nazwa.pl
baza danych to MySQL5
a host to nie localhost tylko sql.domena.pl:3305 .

no i dodam ze po wypelnieniu formularza laczy sie normalnie z baza i pobiera zmienne, a nastepnie sprawdzanie poprawnosci tez jest ok.



+++++++++

Dobra, to ze na samej gorze to byl niedomknienty tag =P
ale bledy sa nadal :/
Kicok
Czytamy błędy:
Cytat
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/domena/ftp/strona/index.php:16) in /home/domena/ftp/strona/logowanie_scr.php on line 25


Czyli w 16 linijce pliku index.php wysłałeś już do przeglądarki jakieś dane.
W związku z tym nie możesz już wysłać nagłówków strony, w związku z tym nie możesz wysłać cookie, w związku z tym próba wystartowania sesji kończy się błędem.

Rozwiązania:
- proste: wstaw ob_start() na początku pliku index.php
- trudniejsze: zaprojektuj swoją stronę tak, żeby najpierw wykonywała wszystkie prace związane z logowaniem/cookiesami a dopiero potem wysyłała kod HTML do przeglądarki użytkownika



  1. <?php
  2. function usun($data){
  3.  
  4. GLOBAL $dbc;
  5. if (ini_get('magic_quotes_gpc')){
  6. $data = stripslashes($data);
  7. }
  8. return mysql_real_escape_string($data, $dbc);
  9. }
  10. ?>

Skoro już napisałeś funkcję zabezpieczającą przed SQL injection, to wypadałoby ją jeszcze zacząć używać tongue.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.