Zobraziť témy bez odpovede | Zobraziť aktívne témy Aktuálny čas je 19 Apr 2014, 16:42



Odpovedať na tému  [ Príspevkov: 15 ] 
Registrace, Přihlášení za pomocí MySQL
Hľadať:
Facebook Twitter Vybrali Sme  
 
Autor Správa
Medium Expert
Medium Expert
Obrázok užívateľa

Registrovaný: 24.8.2010
Príspevky: 83
Karma: Level -1a
Príspevok Registrace, Přihlášení za pomocí MySQL
Zdravím,
Tohle není moje práce ale když to jdu použít tak to trochu předělám třeba zápis do SQL a funguje podle mých představ. Jelikož slyším různě na internetu po různých fórech že hledají Registrace a Přihlašovací stránky k tomu tak to aspoň sem dám a odlákám tak pár spamerů. Možná že nějací zde budou.

Registrace [registrace.php]:
Kód:
<?php
echo '<h1>Registrace</h1>';

   $submit = $_POST['submit'];

   // Data tabulky
   $nick = strtolower(strip_tags($_POST['nick']));
   $skype = strip_tags($_POST['skype']);
   $icq = strip_tags($_POST['icq']);
   $mail = strip_tags($_POST['mail']);
   $date = date("Y-m-d");
      //Strip tag který zakazuje tagy $uznick  = strip_tags($_POST['uznick']);
      // md5 která zasifruje heslo $passone = md5($_POST['passone']);
      //$passone = md5(strip_tags($_POST['passone']));
      //$nick = striplower($_POST['skype']);

   $passone = $_POST['passone'];
   $passtwo = $_POST['passtwo'];


      if ($submit)
      {
        //echo "$nick, $skype, $icq, $mail";
        //echo $nick."<br>".$skype."<br>".$icq."<br>".$mail.

        $pripojeni = mysql_connect("127.0.0.1","root","heslo");
        mysql_select_db("web");

        $nickcheck = mysql_query("SELECT nick FROM uzivatele WHERE nick='$nick'");
        $vysl = mysql_num_rows($nickcheck);

        if ($vysl!=0)
        {
           die("Nick už je používán někým jiným !");
        }

         if ($nick&&$skype&&$icq&&$mail&&$passone&&$passtwo)// kontrola vyplněných políček
         {

                 if ($passone==$passtwo)
                   {
                     if (strlen($nick)>25||strlen($skype)>25||strlen($icq)>25||strlen($mail)>25)
                     {
                      echo "Délka políček je max. 25 !";
                     }
                     else
                     {
                       if (strlen($passone)>25||strlen($passone)<6)
                       {
                         echo "Heslo musí mít minimalne 6 a macimalne 25 znaku !";
                       }
                        else
                        {
                                     // Sifra hesel
                                     $passone = md5($passone);// Sifrovani hesla
                                     $passtwo = md5($passtwo);// Sifrovani hesla
                                     //registrace uzivatele
                                     

                                     
                                      $queryregister = mysql_query(" INSERT INTO uzivatele VALUES ('','$nick','$skype','$icq','$mail','$passone','$date')");
                                     
                                      die ("Nyní jste byl zaregistrován do systeém. Dekujeme !");

                        }
                     }
                   }
                   else
                    echo "Nesedí oba hesla !";
         }
         else
          echo "Vyplňtě <b>všechna</b> políčka !!";

      }

?>



<html>
<head>
  <title>Register</title>
</head>
    <body>
     <form action='registrace.php' method='POST'>
      <table>
       <tbody>
         <tr>
           <td>Nick</td>
           <td><input type='text' name='nick' value='<?php echo $nick; ?>'>
         </tr>

         <tr>
           <td>Skype</td>
           <td><input type='text' name='skype' value='<?php echo $skype; ?>'>
         </tr>

         <tr>
           <td>ICQ</td>
           <td><input type='text' name='icq' value='<?php echo $icq; ?>'>
         </tr>
         
         <tr>
           <td>E-Mail</td>
           <td><input type='text' name='mail' value='<?php echo $mail; ?>'>
         </tr>
         
         <tr>
           <td>Heslo 1</td>
           <td><input type='password' name='passone'>
         </tr>

         <tr>
           <td>Heslo 2</td>
           <td><input type='password' name='passtwo'>
         </tr>
         
         <tr>
           <td>Reg</td>
           <td><input type='submit' name='submit' value='Registrovat'>
         </tr>
       </tbody>
      </table>
     </form>
    </body>
</html>

Přihlášení [login.php]:
Kód:
<?php

  session_start();

  $nick = $_POST['nick'];
  $pass = $_POST['pass'];
 
if ($nick&&$pass)
{
  $connect = mysql_connect("127.0.0.1","root","vertrigo") or die("Nepodarilo se pripojit k MySQl");
  mysql_select_db("web") or die("Nepodařilo se najít DB");
 
  $line = mysql_query("SELECT * FROM uzivatele WHERE nick='$nick'");

  $numrows = mysql_num_rows($line);
 
  if ($numrows!=0)
  {
     // cod pro prihlaseni
     while ($row = mysql_fetch_assoc($line))
     {
       $dbname = $row['nick'];
       $dbpass = $row['pass'];
     }
     
     if ($nick==$dbname&&md5($pass)==$dbpass)
     {
       echo "Jsi prihlasen :) <a href='uzivatel.php'> Administrace </a>";
       $_SESSION['nick']=$nick;
     }
     else
         echo "Nesprávné heslo !";



  }
  else
     die("Tento uživatel neexituje !");


}
else
    die ("Zasej Nick a Heslo !");
?>

Uživatelský panel [uzivatel.php]:
Kód:
<?php

session_start();

   if ($_SESSION['nick'])
     echo "Vítej, ".$_SESSION['nick']."!<br><a href='logout.php'>Odhlaseni</a>";
else
     die("Musiš se přihlásit ! <a href='index.php'>Prihlasit !</a>");
?>

Odhlášení [logout.php]:
Kód:
<?php
  session_start();
 
  session_destroy();
 
  echo "Byl jsi úspěšně odhlášen. <a href='index.php'>Klikni</a> na login .";
?>

Ještě pro začátečníky aby si nelámali hlavu v PHPMyAdmin a nesnažili si udělat špatné tabulky tak jsem já osobně pro vás udělal tyto. Mám je odskoušené a nehrozí že by měli nějakou chybu.
Kód:
CREATE TABLE  `web`.`uzivatele` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nick` VARCHAR( 25 ) NOT NULL ,
`skype` VARCHAR( 25 ) NOT NULL ,
`icq` VARCHAR( 25 ) NOT NULL ,
`mail` VARCHAR( 25 ) NOT NULL ,
`pass` VARCHAR( 25 ) NOT NULL ,
`date` VARCHAR( 25 ) NOT NULL
) ENGINE = MYISAM


05 Okt 2010, 15:25
Profil  
Moderátor
Moderátor
Obrázok užívateľa

Registrovaný: 9.9.2005
Príspevky: 23984
Bydlisko: Prievidza
Karma: Level +6
Príspevok Re: Registrace, Přihlášení za pomocí MySQL
to je riadny mišmaš, načo tam máš toto?
Kód:
                                     $passone = md5($passone);// Sifrovani hesla
                                     $passtwo = md5($passtwo);// Sifrovani hesla
keď predtým je kontrola že hesla sú rovnaké? Stačí $passtwo = $passone = md5($passone);
pri prihlásení absolútne žiadna kontrola vstupov, taká sql injection diera, že sa ti prihlásim ako admin behom pár minút
Viac sa mi pozerať nechce, ale toto je veľmi zlý kód


05 Okt 2010, 16:20
Profil  ICQ  WWW
Medium Expert
Medium Expert
Obrázok užívateľa

Registrovaný: 24.8.2010
Príspevky: 83
Karma: Level -1a
Príspevok Re: Registrace, Přihlášení za pomocí MySQL
no... je v tom diera vidím... kontroloval som to teraz je tam diera ale znovu to písať nebudem


05 Okt 2010, 18:02
Profil  
Light Expert
Light Expert
Obrázok užívateľa

Registrovaný: 5.3.2009
Príspevky: 48
Karma: Neutrál
Príspevok Re: Registrace, Přihlášení za pomocí MySQL
to je co za hlupost ??? ked dam login.php jedine co tam mam je "Zasej Nick a Heslo !" :-D to akoze ziadny prihlasovaci formular tam neni ??? zisiel by sa :-P


19 Okt 2010, 20:29
Profil  
Light Expert
Light Expert
Obrázok užívateľa

Registrovaný: 6.10.2010
Príspevky: 67
Karma: Mínusko
Príspevok Re: Registrace, Přihlášení za pomocí MySQL
Tu sa pocita s tym, ze si ten formular dorobis, co by to bolo, keby ti všetko ponukol jak na tacni?!

//autoeditácia príspevku (25 Nov 2010, 19:11)
Mam jedno vylepsenie...
Namiesto toho:
Kód:
$line = mysql_query("SELECT * FROM uzivatele WHERE nick='$nick'");

  $numrows = mysql_num_rows($line);
 
  if ($numrows!=0)
  {
     // cod pro prihlaseni
     while ($row = mysql_fetch_assoc($line))
     {
       $dbname = $row['nick'];
       $dbpass = $row['pass'];
     }
     
     if ($nick==$dbname&&md5($pass)==$dbpass)


by som dal
Kód:
$line = mysql_query("SELECT * FROM uzivatele WHERE nick='$nick AND pass='$pass' ");

  $numrows = mysql_num_rows($line);
 
  if ($numrows!=0)
  {
   // .... zbytok kodu


25 Nov 2010, 20:07
Profil  
Moderátor
Moderátor
Obrázok užívateľa

Registrovaný: 9.9.2005
Príspevky: 23984
Bydlisko: Prievidza
Karma: Level +6
Príspevok Re: Registrace, Přihlášení za pomocí MySQL
trošku ti tam ušli apostrofy v tom query, takže tvoje vylepšie akurát tak hodí parse error


26 Nov 2010, 2:02
Profil  ICQ  WWW
Light Expert
Light Expert
Obrázok užívateľa

Registrovaný: 6.10.2010
Príspevky: 67
Karma: Mínusko
Príspevok Re: Registrace, Přihlášení za pomocí MySQL
ale inac je to dobre?


26 Nov 2010, 17:07
Profil  
VIP
VIP
Obrázok užívateľa

Registrovaný: 24.2.2005
Príspevky: 1005
Bydlisko: MYsql
Karma: Level +3
Príspevok Re: Registrace, Přihlášení za pomocí MySQL
Tomu while tam nerozumiem - zbytočnosť :). Ináč ako spomínal audio, sql injection ako hrom. Hlavne to treba opraviť.


27 Nov 2010, 0:08
Profil  
Light Expert
Light Expert
Obrázok užívateľa

Registrovaný: 6.10.2010
Príspevky: 67
Karma: Mínusko
Príspevok Re: Registrace, Přihlášení za pomocí MySQL
Mám tu jeden problémik....

Súbor login.php:
Kód:
<?php
session_start();
include ('../endora.php');
  if(! isset($_SESSION['meno'])) {
   if (isset($_POST['meno'])) {
  $meno = $_POST['meno'];
  $heslo = md5($_POST['heslo']);
   include('Databasa/db.php');
  $query = mysql_query("SELECT meno FROM trhov WHERE meno='$meno' AND heslo=$heslo");
   if( mysql_num_rows($query) == 1) {
  $_SESSION['meno'] = mysql_result($result,0,"meno");
  $_SESSION['pr_meno'] = mysql_result($result,0,"pr_meno");
echo "Ahoj";}
   } else { include ("login.html");
     }
      } else {
              $name = $_SESSION['meno'];
               echo "Vitajte $meno. Ak sa chcete odhlásiť kliknite <a href='logout.php' title='odhlásiť sa'>TU</a>";
              }

?>


A vôbec mi to neberie... Môžete mi pomôcť???


28 Nov 2010, 15:12
Profil  
Guru
Guru
Obrázok užívateľa

Registrovaný: 7.2.2009
Príspevky: 2776
Bydlisko: Bratislava
Karma: Level +5
Príspevok Re: Registrace, Přihlášení za pomocí MySQL
Fuj! Ble! Argh! Taky otrasny kod som nevidel od svojej poslednej prace...
1) SQL ma funkciu md5? som nevedel...
2)mysql_numrows? nie nahodou mysql_num_rows?
boze, sprav si v tom poriadok, tie zatvorky su totalna katastrofa, v tom by sa nevyznal nikto...


28 Nov 2010, 16:35
Profil  WWW
Light Expert
Light Expert
Obrázok užívateľa

Registrovaný: 6.10.2010
Príspevky: 67
Karma: Mínusko
Príspevok Re: Registrace, Přihlášení za pomocí MySQL
diky za kritiku.... Tú som už asi dávno potreboval. :) :)
Kód si opravím a skúsim. Díky za pomoc.
P.S. Už tam nie je žiadna chyba?


28 Nov 2010, 16:41
Profil  
Moderátor
Moderátor
Obrázok užívateľa

Registrovaný: 9.9.2005
Príspevky: 23984
Bydlisko: Prievidza
Karma: Level +6
Príspevok Re: Registrace, Přihlášení za pomocí MySQL
stale su tam tie chyby co ti napisal. Co si vlastne opravil? A kde?


28 Nov 2010, 16:46
Profil  ICQ  WWW
Light Expert
Light Expert
Obrázok užívateľa

Registrovaný: 6.10.2010
Príspevky: 67
Karma: Mínusko
Príspevok Re: Registrace, Přihlášení za pomocí MySQL
Ci TERAZ tam nie su nejake chyby (okrem zátvoriek, samozrejme)....


28 Nov 2010, 16:59
Profil  
Guru
Guru
Obrázok užívateľa

Registrovaný: 7.2.2009
Príspevky: 2776
Bydlisko: Bratislava
Karma: Level +5
Príspevok Re: Registrace, Přihlášení za pomocí MySQL
No skus toto, neprechadzal som znak po znaku, ale aspon som ti to trosku upravil, aby si sa v tom aspon ty sam vyznal..
Kód:
<?php
session_start();
  include ('../endora.php');
  if(! isset($_SESSION['meno'])) {
    if(isset($_POST['meno'])) {
      $meno = htmlspecialchars(addslashes($_POST['meno']));
      $heslo = md5(htmlspecialchars(addslashes($_POST['heslo'])));
      include('Databasa/db.php');
      $sql = "SELECT meno FROM trhov WHERE meno='$meno' AND heslo='$heslo'";
      $result = mysql_query($sql);
        if(mysql_num_rows($result)) {
          $_SESSION['meno'] = mysql_result($result,0,"meno");
          $_SESSION['pr_meno'] = mysql_result($result,0,"pr_meno");
          echo("Ahoj");
        }
    }else
      include ("login.html");
  }else{
      $meno = $_SESSION['meno'];
      echo("Vitajte $meno. Ak sa chcete odhlásiť kliknite <a href='logout.php' title='odhlásiť sa'>TU</a>");
  }

?>


28 Nov 2010, 17:04
Profil  WWW
Light Expert
Light Expert
Obrázok užívateľa

Registrovaný: 6.10.2010
Príspevky: 67
Karma: Mínusko
Príspevok Re: Registrace, Přihlášení za pomocí MySQL
Velmi vrele diky......


28 Nov 2010, 18:46
Profil  
Zobraziť príspevky z predchádzajúceho:  Zoradiť podľa  
Odpovedať na tému  [ Príspevkov: 15 ] 


Kto je on-line 
Užívatelia prezerajúci fórum: Žiadny registrovaný užívateľ nie je prítomný a 0 hostia

Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre
Nemôžete zasielať súbory v tomto fóre

Hľadať:
Skočiť na:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group. © Hojko 2004-2014
[ Time : 0.222s | 12 Queries | GZIP : On ]