Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]problem z logowaniem opartym na sesjach
shreker
post 1.07.2008, 14:35:28
Post #1





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

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


Witam. Mam skrypt do logowania które oparte jest na sesjach. Skrypt testowałem na różnych serwerach wirtualnych typu krasnal, xampp, webserv. Na wymienionych serwerach system logowania działa idealnie, natomiast po wrzuceniu skryptu na stronę ... mogiła. Nie działa ani zakładanie nowych userów, ani logowanie istniejących. W czym może być problem questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif
Go to the top of the page
+Quote Post
Shili
post 1.07.2008, 14:37:06
Post #2





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Wiesz, bez kodu i wróżka niewiele pomoże.

Jeśli używasz register globals, to może dlatego. Może z zupełnie innego powodu.
Go to the top of the page
+Quote Post
shreker
post 1.07.2008, 14:55:38
Post #3





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

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


sorki. do pytania dodaje kod:

index.php

Kod
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<title>::::: L O G O W A N I E :::::</title>
<meta name="Description" content="">
<meta name="Keywords" content="">
<meta name="Author" content="Michal Pedzich">
<meta name="Generator" content="AceHTML 4 Freeware">

<style type="text/css">
<!--
SPAN.fraga {color: #AD2734; font-family: verdana; font-size: 8pt; font-weight: bold; font-style:italic; }

A:link {color: #706CC3; font-family: verdana; font-size: 10pt; font-weight: bold; letter-spacing: 120%}
A:visited {color: #706CC3; font-family: verdana; font-size: 10pt; font-weight: bold; letter-spacing: 120%}
A:active {color: #706CC3; font-family: verdana; font-size: 10pt; font-weight: bold; letter-spacing: 120%}
A:hover {color: #49903D; font-family: verdana; font-size: 10pt; font-weight: bold; letter-spacing: 120%}

TD.log {color: #49903D; font-family: verdana; font-size: 8pt; font-weight: bold; }
INPUT {border-width:thin; border-color:#49903D; color:#8F2030; line-height:10px; font-size:10px; height:18px; width:60px;  border-style:groove; }
SPAN.vaelkomna {color:#49903D; font-family: verdana; font-size: 10pt; font-weight: bold; letter-spacing:1px; }
SPAN.vem {color: #AD2734; font-family: verdana; font-size: 10pt; font-weight: bold;letter-spacing:1px;}
TD.info {color: #AD2734; font-family: verdana; font-size: 10pt; font-weight: bold;letter-spacing:1px;}
-->
</style>
</head>
<body>
<table border=1 width=600 height=400 align=center>
  <tr>
    <td width=150 height=100 valign=top>
    
<!-- po zalogowaniu napis witaj?cy //-->
    
    <?php
        if($login!="" && $haslo!="")        //    wykonywane je?eli podano jak?kolwiek
        {                                    //    warto??: login lub has?o
            echo '<SPAN CLASS=vaelkomna>Witaj, </SPAN><SPAN CLASS=vem>'.$login.'</SPAN><SPAN CLASS=vaelkomna>!</SPAN>';            
        echo('<a href=strona.php>strona</a>');
        }
    ?>
    
    </td>
    <td width=300 height=100></td>
    <td width=150 height=100 valign=top align=center>
    
<!-- i Login //-->
    
    <?php
        if($login=="" && $haslo=="")          //     pokazuje si? formularz
        {                                    //     z mo?liwo?ci? zalogowania si?
            include("form.php");            //    serwisu    
        }
        else
        {
                                // logout
            
            echo "<A HREF=index.php>wyloguj si?</A>";
        }
    ?>    
    
    </td>
  </tr>
  <tr>
    <td width=150 height=200></td>
    <td width=300 height=200></td>
    <td width=150 height=200></td>
  </tr>
  <tr>
    <td CLASS=info width=150 height=100>
    <?php
        
        if($login!="" && $haslo!="")               // informacje dla zalogowanych
        {
            include("info_login.php");
        }
    ?>
    </td>
    <td width=300 height=100></td>
    <td width=150 height=100>
    
    <?php
             $moje_haslo=md5("haslo");                    // czesc strony dla admina
                                                        // zamiast haslo trzeba wpisa?
                                                        // swoje unikalne haslo    
                                                        // ale przedtem trzeba si? zalogowa?
            
             if($login=="admin" && $zaszyfr_haslo==$moje_haslo)      // i sw?j login admina
            {    
                echo "<table border=0 width=140>";
                echo "<tr><td align=right><A HREF='skriv.php'>zobacz loginy</A></td></tr>";
                echo "</table>";
                
            }
    ?>
    </td>
  </tr>
</table>


</body>
</html>


cd kodu

form.php

Kod
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<table border=0>
    <tr>
        <td align=center colSpan=2><SPAN CLASS=fraga>Jeżeli nie masz jeszcze swojego konta, możesz sie teraz zalogować</SPAN></td>
    </tr><tr>
        <td align=center colSpan=2 height=30><A href="addLog.php">ZALOGUJ SIĘ</A></td>
    </tr>
    
<form action="granska.php" method="post">
  <tr>
    <td CLASS=log>Login:</td>
    <td>
        <input type="text" name="login" size=15 maxlength=15>
    </td>
  </tr><tr>
    <td CLASS=log>Hasło:</td>
    <td>
        <input type="password" name="haslo" size=15 maxlength=15>
    </td>
  </tr><tr>
      <td colSpan=2 align=center><input type="submit" value="ZALOGUJ"></td></table></form>


addLog.php

Kod
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<title></title>
<STYLE type="text/css">
TD.regScriva { font-family:"verdana"; font-size:10pt; font-weight:bold; color:white;}
INPUT.form {border-width:thin; border-color:#5885B1; color:#8F2030; line-height:12px; font-size:12px; height:25px; width:150px;  border-style:groove; }
TD.plec { font-family:"verdana"; font-size:10pt; font-weight:bold; color:#314A63;}
</STYLE>
</head>
<body bgColor=#6699cc>
<form action="addNewLog.php" method="post">
<table border=0 width=400 height=300 align=center cellPadding=4 cellSapcng=2>
  <tr>
    <td CLASS=regScriva bgColor="#5885B1" align=right>Podaj swój login:</td>
    <td width=20></td>
    <td><input CLASS=form type="text" name="login" size=20 maxlength=15>
    </td>
  </tr><tr>
    <td CLASS=regScriva bgColor="#5885B1" align=right>Podaj swoje hasło:</td>
    <td width=20></td>
    <td><input CLASS=form type="password" name="haslo" size=20 maxlength=15>
    </td>
  </tr><tr>
    <td CLASS=regScriva bgColor="#5885B1" align=right>Twoje prawdziwe imię:</td>
    <td width=20></td>
    <td><input CLASS=form type="text" name="imie" size=20 maxlength=40>
    </td>
  </tr><tr>
    <td CLASS=regScriva bgColor="#5885B1" align=right>Płeć:</td>
    <td width=20></td>
    <td CLASS=plec>
        <input type="radio" name="plec" value="mężczyzna"> mężczyzna<br>
        <input type="radio" name="plec" value="kobieta"> kobieta<br>
    </td>
  </tr><tr>
    <td CLASS=regScriva bgColor="#5885B1" align=right>Miejsce zamieszkania (miasto): </td>
    <td width=20></td>
    <td><input CLASS=form type="text" name="miasto" size=20 maxlength=40>
    </td>
  </tr><tr>
    <td CLASS=regScriva bgColor="#5885B1" align=right>e-mail: </td>
    <td width=20></td>
    <td><input CLASS=form type="text" name="mail" size=20 maxlength=40>
    </td>
  </tr><tr>
      <td></td>
    <td width=20></td>
    <td><input CLASS=form type="submit" value="OK">
</td>
  </tr>

</table>
</form>
</body>
</html>


addNewLog.php

Kod
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<?php
    $xxhaslo=md5($haslo);
    $at="@";
    if(ereg($at, $mail))
    {
        echo"<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\">
<title></title>
<STYLE type=\"text/css\">
TD.regScriva { font-family:verdana; font-size:10pt; font-weight:bold; color:white;}
INPUT {border-width:thin; border-color:#5885B1; color:#8F2030; line-height:12px; font-size:12px; height:20px; width:60px;  border-style:groove; }
TD.vaerde {font-family:verdana; font-size:10pt; font-weight:bold; color:#ffcc33}
</STYLE>
</head>
<body text=white>
<table border=0 width=400 bgColor=#c01c24 cellPadding=10 cellSpacing=2 align=center>
  <tr>
    <td colSpan=3 Class=regScriva bgColor=#90151B height=30 align=center>POTWIERDŹ DANE:</td>
  </tr><tr>
    <td width=180 bgColor=#90151B CLASS=regScriva align=right>Twój login:</td>
    <td width=30></td>
    <td CLASS=vaerde>$login</td>
  </tr><tr>
    <td CLASS=regScriva bgColor=#90151B align=right>Twoje hasło:</td>
    <td width=30></td>
    <td CLASS=vaerde>$haslo</td>
  </tr><tr>
    <td CLASS=regScriva bgColor=#90151B align=right>Twoje imię:</td>
    <td width=30></td>
    <td CLASS=vaerde>$imie</td>
  </tr><tr>
    <td CLASS=regScriva bgColor=#90151B align=right>Płeć:</td>
    <td width=30></td>
    <td CLASS=vaerde>$plec</td>
  </tr><tr>
    <td CLASS=regScriva bgColor=#90151B align=right>Miejsce zamieszkania:</td>
    <td width=30></td>
    <td CLASS=vaerde>$miasto</td>
  </tr><tr>
    <td CLASS=regScriva bgColor=#90151B align=right>Twój e-mail:</td>
    <td width=30></td>
    <td CLASS=vaerde>$mail</td>
  </tr><tr>
      <td colSpan=3 bgColor=#90151B align=center><form action=\"tack.php\" method=\"post\">
    <INPUT type=hidden Value=$login name=login>
    <INPUT type=hidden Value=$xxhaslo name=xxhaslo>
    <INPUT type=hidden Value=$imie name=imie>
    <INPUT type=hidden Value=$plec name=plec>
    <INPUT type=hidden Value=$miasto name=miasto>
    <INPUT type=hidden Value=$mail name=mail>
    <input type=\"submit\" value=\"OK\">
    <input type=\"button\" onClick=javascript:history.back() value=\"POPRAW\">
        </form></td>
  </tr>
</table>
    
</body>
</html>";
    }
    else
    {
        echo("<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\">
<title></title>
<STYLE type=\"text/css\">
TD.regScriva { font-family:verdana; font-size:10pt; font-weight:bold; color:white;}
A { font-family:verdana; font-size:10pt; font-weight:bold; letter-spacing:2px; color:#ffcc00; text-decoration:underline }
</STYLE>
</head>
<body bgColor=#6699cc>
<table border=0 cellPadding=40 cellSpacing=0 align=center>
<tr>
    <td class=regScriva>Wpisałeś zły adres e-mail</td>
</tr><tr>
    <td align=center><A href=javascript:history.back()>powrot</A></td></tr></table></body></html>");
    }
?>


cd kodu:

tack.php

Kod
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<META HTTP-EQUIV="Refresh" CONTENT="3; URL=index.php">
<?php
     $file=fopen("logins.php", "a");
    
     fwrite($file, "$login|^^^|$xxhaslo|^^^|$imie|^^^|$plec|^^^|$miasto|^^^|$mail\n");
     fclose($file);
    
     echo ("<table border=1 width=400 height=200 cellspacing=1 align=center>
     <tr>
       <td width=400 height=200 valign=top align=center>
        Dziękujemy za zarejestrowanie Swojego profilu<br>
        <P><A href=\"index.php\">powrót na stonę główną</A></P>
        </td>
     </tr>
   </table>");
?>


vaerin.php

Kod
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<?php
     echo "Żle wpisałeś/-aś login i / lub hasło.<P>Spróbuj jeszcze raz</P>
     <P><A href=index.php>powrót</A></P>";
?>


strona.php

Kod
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<?php
     $fakta=file("logins.php");
     $zaszyfr_haslo=md5($haslo);
    
     $k=0;
     for($i=0;$i<count($fakta);$i++)
     {
         $avfakta=explode("|^^^|", $fakta[$i]);
        
         if($login==$avfakta[0] && $zaszyfr_haslo==$avfakta[1])
         {
             $k++;
             include("index.php");
         }
     }
     if($k==0)
     {
         include("vaerin.php");
     }
    
?>


skriv3.php

Kod
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-2">

<?php
    $dane=file("logins.php");

    for($i=0;$i<count($dane);$i++)
    {
       $line_dane=explode("|^^^|", $dane[$i]);

       echo "<tr CLASS=dane>
                <td>$line_dane[0]</td>
                <td><b>$line_dane[2]</b></td>
                <td>$line_dane[3]</td>
                <td>$line_dane[4]</td>
                <td><A HREF='mailto:$line_dane[5]'>$line_dane[5]</A></td>
             </tr>";
    }
?>


skriv.php

Kod
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<title></title>
<meta name="Description" content="">
<meta name="Keywords" content="">
<meta name="Author" content="Michal Pedzich">
<meta name="Generator" content="AceHTML 4 Freeware">
<STYLE type="text/css">
<!--
TR.top { font-family:"Verdana"; font-size:14px; color:#AEDBB6; font-weight:bold; text-align:center; background-color:#477549; }
TR.dane { font-family:"Verdana"; font-size:12px; color:black; font-weight:normal; text-align:center }
TABLE.sec { background-color:#6BA065; }
A { font-family:"Verdana"; font-size:12px; color:black; font-weight:normal; text-align:center}
A:hover { font-family:"Verdana"; font-size:12px; color:#AEDBB6; font-weight:normal; text-align:center}}
//-->
</STYLE>
</head>
<body>
<table CLASS=sec border=0 cellPadding=2 cellSpacing=2 align=center>
     <tr CLASS=top >
         <td width=100>login</td>
         <td width=100>imię</td>
         <td width=100>płeć</td>
         <td width=100>miasto</td>
         <td width=200>e-mail</td>
     </tr>
    
<?php
     include("skriv3.php");
?>

</table></body></html>


granska.php

Kod
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<?php
     $fakta=file("logins.php");
     $zaszyfr_haslo=md5($haslo);
    
     $k=0;
     for($i=0;$i<count($fakta);$i++)
     {
         $avfakta=explode("|^^^|", $fakta[$i]);
        
         if($login==$avfakta[0] && $zaszyfr_haslo==$avfakta[1])
         {
             $k++;
             include("index.php");
         }
     }
     if($k==0)
     {
         include("vaerin.php");
     }
    
?>


info_login.php

Kod
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<table border=0>
   <tr>
     <td>Informacje dla zalogowanych</td>
   </tr>
   <tr>
     <td></td>
   </tr>
   <tr>
     <td></td>
   </tr>
</table>


jest jeszcze jeden plik o nazwie - logins.php - w którym zapisywane są loginy i hasła
Go to the top of the page
+Quote Post
Shili
post 1.07.2008, 14:56:29
Post #4





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Tak jak myślałam - używasz register globals, które są wycofywane i bardzo dobrze.

Pierwsze co mogę polecić to manual

Jeśli dane pobierasz przez formularz z atrybutem method="post", to dane z niego to nie:
  1. <?php
  2. $login
  3. ?>

a
  1. <?php
  2. $_POST['login']
  3. ?>



@edit
Faktycznie, na te sesje w ogóle nie zwróciłam uwagi, zasugerowałam się chyba za bardzo, jednak prawdą jest, że zmienne i tak powinieneś "wyłuskiwać" w podany przeze mnie sposob.

Ten post edytował Shili 1.07.2008, 15:00:51
Go to the top of the page
+Quote Post
nithajasz
post 1.07.2008, 14:58:50
Post #5





Grupa: Zarejestrowani
Postów: 230
Pomógł: 27
Dołączył: 27.05.2008
Skąd: Warszawa

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


A gdzie Ty tu używasz sesji? Tak pobieżnie przejżałem i nie widzę... Może za dużo tego a może bbcode nie ten, a może jeszcze w inną stronę wszystko pomieszane.
Go to the top of the page
+Quote Post
shreker
post 1.07.2008, 14:59:44
Post #6





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

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


sorki, jestem początkujący w php, i szczerze mówiąc nie mam zielonego pojęcia jak mogę to przerobić żeby działało :-)
co do sesji to na początku pliku index mam wstawione:

Kod
<?php
session_start();
include("secur/func.php");
include("secur/func_logi.php");
switch ($page)
    {
      case "login"  :
                      $login  = htmlentities(substr($_POST["login"], 0, 255));
                      $passwd = htmlentities(substr($_POST["passwd"], 0, 255));
                      login($login, md5($passwd));
                      break;
      case "logout" : logout();
                      break;
    }
?>


Ten post edytował shreker 1.07.2008, 15:03:37
Go to the top of the page
+Quote Post
nithajasz
post 1.07.2008, 15:10:45
Post #7





Grupa: Zarejestrowani
Postów: 230
Pomógł: 27
Dołączył: 27.05.2008
Skąd: Warszawa

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


Samo session_start() nie znaczy, że masz coś zrobione na sesjach. Po prostu masz włączone sesje.

http://pl.wikibooks.org/wiki/PHP/Sesje
http://webmade.org/porady/sesje-php-system-logowania.php

smile.gif
Go to the top of the page
+Quote Post

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: 25.07.2025 - 01:05