Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Registracija PHP/MySQL


newyorkas

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 1637 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki. Reiktų pagalbos su PHP ir duomenų baze. Viską kaip ir ganėtinai normaliai surašiau, bet dėl kažkokios priežasties, PHP neperduoda duomenų į duomenų bazę, o tiesiog išmeta "This page isn't working". Duomenų bazė, mano galva, sukurta gerai, duomenų bazę php faile taip pat nurodau kaip ir gerai, SELECT'as mano galva taip pat yra parašytas gerai. Gal galėtumėte šiek tiek pagelbėt?

db.PNG.0e0db6a948751f7602bc61713ff07c0d.PNG

Ačiū Jums.

Kodus įkėliau į spoiler'ius.

registracija.html

 

<!DOCTYPE HTML>
<html>
<head>
  <title>Register Form</title>
</head>
<body>
 <form action="insert.php" method="POST">
  <table>
   <tr>
    <td>Name :</td>
    <td><input type="text" name="username" required></td>
   </tr>
   <tr>
    <td>Password :</td>
    <td><input type="password" name="password" required></td>
   </tr>
   <tr>
    <td>Gender :</td>
    <td>
     <input type="radio" name="gender" value="m" required>Male
     <input type="radio" name="gender" value="f" required>Female
    </td>
   </tr>
   <tr>
    <td>Email :</td>
    <td><input type="email" name="email" required></td>
   </tr> 
   <tr>
    <td>Phone no :</td>
    <td>
     <select name="phoneCode" required>
      <option selected hidden value="">Select Code</option>
      <option value="370">370</option>
     </select>
     <input type="phone" name="phone" required>
    </td>
   </tr>
   <tr>
    <td><input type="submit" value="Submit"></td>
   </tr>
  </table>
 </form>
</body>
</html>

insert.php

 

 
<?php
$username = $_POST['username'];
$password = $_POST['password'];
$gender = $_POST['gender'];
$email = $_POST['email'];
$phoneCode = $_POST['phoneCode'];
$phone = $_POST['phone'];
if (!empty($username) || !empty($password) || !empty($gender) || !empty($email) || !empty($phoneCode) || !empty($phone)) {
 $host = "localhost";
    $dbUsername = "root";
    $dbPassword = "";
    $dbname = "register";
    //create connection
    $conn = new mysqli($host, $dbUsername, $dbPassword, $dbname);
    if (mysqli_connect_error()) {
     die('Connect Error('. mysqli_connect_errno().')'. mysqli_connect_error());
    } else {
     $SELECT = "SELECT email From vartotojai Where email = ? Limit 1";
     $INSERT = "INSERT Into vartotojai (username, password, gender, email, phoneCode, phone) values(?, ?, ?, ?, ?, ?)";
     //Prepare statement
     $stmt = $conn->prepare($SELECT);
     $stmt->bind_param("s", $email);
     $stmt->execute();
     $stmt->bind_result($email);
     $stmt->store_result();
     $rnum = $stmt->num_rows;
     if ($rnum==0) {
      $stmt->close();
      $stmt = $conn->prepare($INSERT);
      $stmt->bind_param("ssssii", $username, $password, $gender, $email, $phoneCode, $phone);
      $stmt->execute();
      echo "New record inserted sucessfully";
     } else {
      echo "Someone already register using this email";
     }
     $stmt->close();
     $conn->close();
    }
} else {
 echo "All field are required";
 die();
}
?>

 

Redaguota , nario newyorkas
Nuoroda į komentarą
Dalintis per kitą puslapį

Čia pas tave hibridas. Nežinau nuo kurios vietos net taisyti :D

Prepare statementų absoliučiai nereikia naudoti, nes nesikreipi į duomenų bazę du kartus. O kad išvengti SQL injekcijos labai prasta mintis.

Turi visada filtruoti su griežtais filtrais, nes dabar gali HTML/JS kodo prirašyti, kas iš to, kad apsaugo nuo SQL?

Jeigu nori patikrinti ar toks vartotojas egzistuoja, paprasčiausiai rašai:

if ($conn->query("SELECT COUNT(`id`) FROM `vartotojai` WHERE `email` = '$email';") > 0) {

echo 'Toks naudotojas jau yra užregistruotas.';

}

Insertinimas:

if ($conn->query("INSERT INTO `vartotojai` (`username`, `password`, `gender`, `email`, `phoneCode`, `phone`) VALUES ('$username', '$password', '$gender', '$email', '$phoneCode', '$phone');")) {

echo 'Naudotojas buvo sėkmingai užregistruotas.';

}

empty spaminti daug kartų nėra gerai.

Geriau taip:

if (isset($_POST['username'], $_POST['password'])) { // daugiau POST žinoma per kablelį padėk.

čia jau gali gauti visus POST, nes jie buvo submitinti.

} else {

header('Location: registracija.html');

exit;

}

Ir siūlau rašyti viską viename faile, nebent planuoji siųsti ajax užklausą. Kitaip vartotojas suklys ir turės viską iš naujo įvesti visus duomenis, kai gali viename faile kai rašai atkurti visus POST, sudėti atgal į laukus.

  • Teigiamai 2
Nuoroda į komentarą
Dalintis per kitą puslapį

prieš 14 valandas(-ų), NTQ parašė:

Čia pas tave hibridas. Nežinau nuo kurios vietos net taisyti :D

Prepare statementų absoliučiai nereikia naudoti, nes nesikreipi į duomenų bazę du kartus. O kad išvengti SQL injekcijos labai prasta mintis.

Turi visada filtruoti su griežtais filtrais, nes dabar gali HTML/JS kodo prirašyti, kas iš to, kad apsaugo nuo SQL?

Jeigu nori patikrinti ar toks vartotojas egzistuoja, paprasčiausiai rašai:

if ($conn->query("SELECT COUNT(`id`) FROM `vartotojai` WHERE `email` = '$email';") > 0) {

echo 'Toks naudotojas jau yra užregistruotas.';

}

Insertinimas:

if ($conn->query("INSERT INTO `vartotojai` (`username`, `password`, `gender`, `email`, `phoneCode`, `phone`) VALUES ('$username', '$password', '$gender', '$email', '$phoneCode', '$phone');")) {

echo 'Naudotojas buvo sėkmingai užregistruotas.';

}

empty spaminti daug kartų nėra gerai.

Geriau taip:

if (isset($_POST['username'], $_POST['password'])) { // daugiau POST žinoma per kablelį padėk.

čia jau gali gauti visus POST, nes jie buvo submitinti.

} else {

header('Location: registracija.html');

exit;

}

Ir siūlau rašyti viską viename faile, nebent planuoji siųsti ajax užklausą. Kitaip vartotojas suklys ir turės viską iš naujo įvesti visus duomenis, kai gali viename faile kai rašai atkurti visus POST, sudėti atgal į laukus.

Ačiū už pagalbą, persirašiau savarankiškai aš tą registraciją, dabar kaip ir viskas normaliai veikia. :)

Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 1637 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...