Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]problem z logowaniem opartym na sesjach
Forum PHP.pl > Forum > Przedszkole
shreker
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
Shili
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.
shreker
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
Shili
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.
nithajasz
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.
shreker
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;
    }
?>
nithajasz
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
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.