Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem Z Systemem Logowania
Forum PHP.pl > Forum > Przedszkole
AgeraR
Witam,
Ostatnio napisałem skrypt do logowania i rejestracji i on nie działa pomoże mi ktoś?
Błędy to:

Notice: Undefined index: login in /var/www/vhosts/muxiu.5v.pl/httpdocs/Skrypty/register.php on line 3

Notice: Undefined index: haslo in /var/www/vhosts/muxiu.5v.pl/httpdocs/Skrypty/register.php on line 4

Fatal error: Function name must be a string in /var/www/vhosts/muxiu.5v.pl/httpdocs/Skrypty/register.php on line 5

A kod:
Tylko rejestracja*(Edit)

  1. <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1--><?PHP
  2.  
  3. $user = $_POST['login'];
  4. $pass = $_POST['haslo'];
  5. $email = $_POST['email'];
  6.  
  7. $con = mysql_connect("****","****","****") or ("Blad polaczenia: "  . mysql_error());
  8. if (!$con)
  9.     die('Nie mozna polaczayc: ' . mysql_error());
  10.     
  11. mysql_select_db("****" , $con) or die ("Nie mozna wczytac bazy danych" . mysql_error());
  12.  
  13. $check = mysql_query("SELECT * FROM Konta WHERE `login`='".$user."'");
  14. $numrows = mysql_num_rows($check);
  15. if ($numrows == 0)
  16. {
  17.     $pass = md5($pass);
  18.     $ins = mysql_query("INSERT INTO  `Konta` (`login` , `haslo` , 'email') VALUES ('".$user."' ,  '".$pass."' ,  '".$email."'); ");
  19.     if ($ins)
  20.         die ("Register-SUCCESS");
  21.     else
  22.         die ("Blad: " . mysql_error());
  23. }
  24. else
  25. {
  26.     die("Podany login juz istnieje!");
  27. }
  28.  
  29.  
  30. ?><!--c2--></div><!--ec2-->


Proszę o pomoc
Z góry dziękuje.
:-)
Kshyhoo
Notice to nie błąd a informacja, że zmienna nie istnieje. Będzie istniała, jak wyślesz formularz... Można zablokować wyświetlanie tych informacji, ale lepszym wyjściem jest napisanie kodu tak, żeby sam skrypt zapobiegał ich wyświetlaniu.
AgeraR
Cytat(Kshyhoo @ 18.09.2017, 20:45:53 ) *
Notice to nie błąd a informacja, że zmienna nie istnieje. Będzie istniała, jak wyślesz formularz... Można zablokować wyświetlanie tych informacji, ale lepszym wyjściem jest napisanie kodu tak, żeby sam skrypt zapobiegał ich wyświetlaniu.

Dobra ale po
1: Jak napisać to
2: Tam jest jeszcze Fatal Error
Kshyhoo
Ja nie widzę w linii 5 funkcji o nazwie "name"... wogóle takiej funkcji nie widzę!
viking
Cały ten kod jest do przepisania. Stare rozszerzenie mysql, pełno dziur, md5 do hasła. Może kilka lat temu było poprawnie. Poczytaj o PDO, isset / ?? (PHP7).
AgeraR
To co mam zrobić żeby ten Fatal error nie wyskakiwał i hasła sie zapisywały do bazy?
Kshyhoo
Nazwa funkcji musi być stringiem i wydaje się, że jest...
AgeraR
Cytat(Kshyhoo @ 18.09.2017, 21:04:32 ) *
Nazwa funkcji musi być stringiem i wydaje się, że jest...

No to jak jest wszystko poprawnie napisane no to dlaczego mi to nie działa?
Pyton_000
zgubiłeś die w 5 linijce.

@Kshyhoo Notice to też błąd. Ma niski priorytet ale ma.
AgeraR
Cytat(Pyton_000 @ 18.09.2017, 21:22:19 ) *
zgubiłeś die w 5 linijce.

@Kshyhoo Notice to też błąd. Ma niski priorytet ale ma.

Dodałem die

Teraz Błąd

Parse error: syntax error, unexpected '$email' (T_VARIABLE) in /var/www/vhosts/muxiu.5v.pl/httpdocs/Skrypty/register.php on line 5

Wyskakuje ;(

Nikt już nie pomoże?
Pyton_000
Sorka. Mój błąd. To nie w 5 linijce a 7.

Wklej cały kod gdzieś np http://bin.devsphp.pl i daj go tu
emillo91
Te błędy występują dlatego że jak wyżej wspomniano nie ma akcji dla $_POST. Musisz zrobić warunek przed przypisaniem metody $_POST do zmiennych $user, $pass, $email. Najpierw sprawdź czy istnieją zmienne $_POST. Jeżeli nie to $user = null, $pass = null, $email = null, inaczej przypisz metodę $_POST do zmiennych.
Odnośnie zapytań do bazy danych to wyrzuć podwójne apostrofy oraz kropki przy zmiennych $user, $pass, $email, gdyż są zbędne.
AgeraR
Cytat(Pyton_000 @ 19.09.2017, 11:27:48 ) *
Sorka. Mój błąd. To nie w 5 linijce a 7.

Wklej cały kod gdzieś np http://bin.devsphp.pl i daj go tu

Zmienione teraz wyskakuje błąd:

Parse error: syntax error, unexpected '$con' (T_VARIABLE) in /var/www/vhosts/muxiu.5v.pl/httpdocs/Skrypty/register.php on line 7

Tu masz Kod
trueblue
O kurczaki...
emillo91
Namieszałeś w warunkach przy łączeniu z bazą danych w tej linii.
AgeraR
Cytat(emillo91 @ 19.09.2017, 16:30:20 ) *
Namieszałeś w warunkach przy łączeniu z bazą danych w tej linii.

Tam gdzie jest napisane Host itd?
jak tak to to jest specjalnie zeby nie bylo widac biggrin.gif
emillo91
Usuń warunki w tej linii i zobacz czy się łączy z bazą
programistaarek
  1. <?
  2. $mysql_host = 'host';
  3. $port = '3306';
  4. $username = 'nazwa użytkownika';
  5. $password = 'hasło bazy danych';
  6. $database = 'nazwa bazy danych';
  7.  
  8. try{
  9. $pdo = new PDO('mysql:host='.$mysql_host.';dbname='.$database.';port='.$port, $username, $password );
  10.  
  11. }catch(PDOException $e){
  12. echo 'Połączenie nie mogło zostać utworzone.';
  13. }
  14.  
  15. @mysql_query("set names 'utf8'");
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22. $email = substr($_POST['email'],0,32);
  23. $pos = strpos($email, "@");
  24. $pos2 = strpos($email, ".");
  25.  
  26. //WYBIERAMY USTAWIENIA Z BAZY
  27.  
  28. //JEŚLI KLIKNIĘTO WYŚLIJ
  29. if(isset($_POST['send'])){
  30.  
  31.  
  32. if($pos == false OR $pos2 == false){
  33. echo "
  34. <script type='text/javascript'>window.alert('Niepoprawny adres e-mail');document.location.href = 'index.php';</script>
  35. ";
  36. EXIT();
  37.  
  38. }else{
  39. $login = trim($_POST['imie']);
  40. $email = trim($_POST['email']);
  41. $errors = NULL;
  42. if(strlen($login)<6) $errors .= 'Login musi zawierać co najmniej 6 znaków<br>';
  43. if(!preg_match('/\@/', $email) || strlen($email)<5) $errors .= 'Podany adres e-mail jest nieprawidłowy<br>';
  44. $stmt = $pdo->prepare("SELECT COUNT(id) FROM Konta WHERE login=:login");
  45. $stmt->bindValue(":login", $login, PDO::PARAM_STR);
  46. $stmt->execute();
  47. $row = $stmt->fetch();
  48. if($row[0]>0) $errors .= 'Konto o takim loginie już istnieje<br>';
  49. $stmt2 = $pdo->prepare("SELECT COUNT(id) FROM uzytkownicy WHERE email=:email");
  50. $stmt2->bindValue(":email", $email, PDO::PARAM_STR);
  51. $stmt2->execute();
  52. $row2 = $stmt2->fetch();
  53.  
  54. if(empty($row2[0]>0)){
  55. function passwordGenerator($length) {
  56. $uppercase = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'W', 'Y', 'Z');
  57. $lowercase = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'w', 'y', 'z');
  58. $number = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
  59. $password = NULL;
  60. for ($i = 0; $i < $length; $i++) {
  61. $password .= $uppercase[rand(0, count($uppercase) - 1)];
  62. $password .= $lowercase[rand(0, count($lowercase) - 1)];
  63. $password .= $number[rand(0, count($number) - 1)];
  64. }
  65. return substr($password, 0, $length);
  66. }
  67. $kod = rand(11111111,99999999);
  68. $wzrost = rand(165,210);
  69. $waga = rand(60,120);
  70. //WYGENEROWANE HASLO
  71. $myPassword = passwordGenerator(8);
  72. $myPassword1 = sha1($myPassword);
  73. $repka = rand(1,64);
  74. $data = date("Y-m-d H:i:s");
  75.  
  76. $dodaj = $pdo->prepare("INSERT INTO `Konta`(login, haslo, email) VALUES(:login, :haslo, :email)");
  77. $dodaj->bindValue(":login", $login, PDO::PARAM_STR);
  78. $dodaj->bindValue(":haslo", $myPassword1, PDO::PARAM_STR);
  79. $dodaj->bindValue(":email", $email, PDO::PARAM_STR);
  80. $dodaj->execute();
  81.  
  82.  
  83. echo "
  84. <script type='text/javascript'>window.alert('Utworzono konto sprawdź swoją skrzynke pocztową na nią wysłaliśmy Ci wygenerowane hasło !!!!');document.location.href = 'index.php';</script>
  85. ";
  86.  
  87.  
  88. /// poniżej funkcja mail() wysyła na pocztę dane do logowania !!
  89.  
  90. $to = ''.$_POST['email'].'';
  91. $subject = 'Rejestracja Serwisie';
  92. $message = "Witaj ".$_POST['login']."!
  93.  
  94. Twoje dane w serwisie to::
  95. Login: ".$_POST['login']."
  96. E-mail: ".$_POST['email']."
  97. Hasło: ".$myPassword."
  98.  
  99.  
  100. Wiadomość wygenerowana automatycznie, prosimy nie odpowiadać.
  101. Pozdrawiamy,
  102. Administracja Serwisu";
  103. $headers = 'From: SERWIS XYZ' . "\r\n" .
  104. 'Reply-To: noreply@serwis.xyz' . "\r\n" .
  105. 'X-Mailer: PHP/' . phpversion();
  106.  
  107. mail($to, $subject, $message, $headers);
  108.  
  109. }else{
  110. echo "
  111. <script type='text/javascript'>window.alert('Konto o takim adresie e-mail już istnieje');document.location.href = 'index.php';</script>
  112. ";
  113.  
  114. }
  115. }
  116.  
  117.  
  118.  
  119. }
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127. ?>
  128.  
  129. <html>
  130. <head>
  131. <title> Rejestarcja w serwisie</title>
  132. </head>
  133. <body>
  134.  
  135. <form action="index.php" method="POST" class="cd-form">
  136. <p class="fieldset">
  137. <label>Login</label>
  138. <input name="imie" type="text" placeholder="Login">
  139.  
  140. </p>
  141.  
  142. <p class="fieldset">
  143. <label>E-mail</label>
  144. <input name="email" type="email" placeholder="E-mail">
  145. </p>
  146.  
  147.  
  148. <p class="fieldset">
  149. <input type="submit" name="send" value="Załóż konto">
  150. </p>
  151. </form>
  152.  
  153. </body>
  154.  
  155.  
  156.  
  157.  
  158. </html>
  159.  
  160.  
  161.  



W bazie danych ustaw haslo,email oraz login jako varchar i np daj im 255 znaków. W tym skrypcie tylko sobie zamień dane do połączenia z bazą. Tu masz już PDO. Pamiętaj!
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.