| Autor | Zpráva | ||
|---|---|---|---|
| janberka Profil * |
#1 · Zasláno: 6. 12. 2013, 16:48:13
Ahoj, mám jeden problém s registračním php skriptem, se kterým už si dlouho nevím rady. Jde o to, že když vyplním do formuláře uživatele, který už existuje v databázi, uloží se mi (což by neměl).
reg-send.php - ukládací skript <?php
session_start();
$podminky = $_POST['podminky'];
if(isset($podminky)) {
$pass = $_POST['pass'];
$passrep = $_POST['passrep'];
$md5pass = md5($pass);
if($pass == $passrep) {
$login = $_POST['login'];
$mail = $_POST['mail'];
$dateb = $_POST['dateb'];
$q1 = mysql_query('SELECT * FROM users WHERE login = '.$login.'');
$q2 = mysql_query('SELECT * FROM users WHERE email = '.$mail.'');
if($login == ''){
$_SESSION['r-s'] = 'c';
header("location: registration.php");
}
elseif($pass == '') {
$_SESSION['r-s'] = 'k';
header("location: registration.php");
}
elseif($mail == '') {
$_SESSION['r-s'] = 'd';
header("location: registration.php");
}
elseif($dateb == '') {
$_SESSION['r-s'] = 'e';
header("location: registration.php");
}
elseif(mysql_num_rows($q1) > 0) {
$_SESSION['r-s'] = 'f';
header("location: registration.php");
}
elseif(mysql_num_rows($q2) > 0) {
$_SESSION['r-s'] = 'h';
header("location: registration.php");
}
else {
$money = '3000';
$smoney = '20';
$level = '1';
$controled = 'n';
//vkládání dat do databáze
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_czech_ci'");
$q = "INSERT INTO users (id, login, pass, email, dateb, money, smoney, level, controled)
VALUES ('','$login','$md5pass','$mail','$dateb','$money','$smoney','$level','$controled')";
$dotaz3 = mysql_query ($q);
if (!$dotaz3) {
$_SESSION['r-s'] = 'ch';
header('location: info.php');
}
else {
$q3 = mysql_query("SELECT id FROM users WHERE login='.$login.'");
$id = $q3['id'];
$to = "$mail";
$extra = "From: Včelí svět\r\nReply-To: Včelí svět\r\n".
"Content-Type: text/plain; charset=\"utf-8\"\n";
$subject = "Aktivační email ze hry Včelí svět";
$mess = " Vážený/á ".$login.",\n Váš účet zaktivujete kliknutím na <a href=\"info.php?id=".$id."\"> tento odkaz </a> Poté se již budete smět přihlásit. \n Děkujeme za registraci a přejeme pěkné hraní!";
mail ($to, $subject, $mess, $extra);
$_SESSION['r-s'] = 'i';
header('location: info.php');
}
}
}
else {
$_SESSION['r-s'] = 'b';
header("location: registration.php");
}
}
else {
$_SESSION['r-s'] = 'a';
header("location: registration.php");
}
?>registration.php - stránka s formulářem <!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Včelí svět - Registrace</title>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>
<div id="cele">
<div id="page">
<?php
include 'includes/headmenu.php';
include'includes/login-form.php';
?>
<div id="body">
<h2> Registrace uživatele </h2>
<?php
session_start();
if(isset($_SESSION['r-s'])){
$rs = $_SESSION['r-s'];
if($rs == 'a'){
echo '<div id="font1"> Nesouhlasil/a jste s podmínkami! </div>';
}
elseif($rs == 'b') {
echo '<div id="font1"> Hesla se neshodují! </div>';
}
elseif($rs == 'c') {
echo '<div id="font1"> Nezadal/a jste přihlašovací jméno! </div>';
}
elseif($rs == 'd') {
echo '<div id="font1"> Neudal/a jste svůj email! </div>';
}
elseif($rs == 'e') {
echo '<div id="font1"> Nezadal/a jste své datum narození, které je nutné pro Vaše obdarování při narozeninách! </div>';
}
elseif($rs == 'f') {
echo '<div id="font1"> Vámi zadané přihlašovací jméno je již registrováno! Zkuste jiné! </div>';
}
elseif($rs == 'g') {
echo '<div id="font1"> Vámi zadané heslo je příliš krátké, zvolte delší!!! (min. 6 znaků) </div>';
}
elseif($rs == 'h') {
echo '<div id="font1"> Email je již registrován u jiného účtu! Použijte jiný! </div>';
}
}
?>
<form action="reg-send.php" method="post">
<table>
<tr> <td> Přihlašovací jméno: </td> <td> <input type="text" name="login"> </td> </tr>
<tr> <td> Heslo: </td> <td> <input type="password" name="pass"> </td> </tr>
<tr> <td colspan="2"> Heslo musí mít nejméně 6 znaků!!! </td> </tr>
<tr> <td> Heslo znovu: </td> <td> <input type="password" name="passrep"> </td> </tr>
<tr> <td> Email: </td> <td> <input type="mail" name="mail"> </td> </tr>
<tr> <td> Datum narození: </td> <td> <input type="date" name="dateb"> </td> </tr>
<tr> <td> <input type="checkbox" name="podminky"> </td> <td> Souhlasím s podímkami Včelího světa (viz. <a href="pravidla.php"> Pravidla </a>) </td> </tr>
<tr> <td> </td> <td> <input type="submit" value="Zaregistrovat"> </td> </tr>
</table>
</form>
<?php
include'includes/copyright.php';
?>
</div>
</div>
</div>
</body>
</html> |
||
| Taps Profil |
janberka:
zkus sql dotaz upravit do této podoby mysql_query("SELECT * FROM users WHERE login = '$login'"); |
||
| janberka Profil * |
#3 · Zasláno: 6. 12. 2013, 17:48:33
to nepomohlo, nejakej jinej tip pls?
|
||
| Taps Profil |
#4 · Zasláno: 6. 12. 2013, 17:55:30
janberka:
pomocí echa si vypiš co ti vrací sql dotaz a pak zkus dotaz provést v phpmyadminu (admineru) |
||
| janberka Profil * |
#5 · Zasláno: 6. 12. 2013, 18:13:43
nic mi to nezjistilo
|
||
| jenikkozak Profil |
#6 · Zasláno: 6. 12. 2013, 18:14:28
Funkce mysql_query vrací buď
resource, nebo false v případě, že dotaz skončí chybou. Pro získání dat z resource je potřeba použít další funkci - mysql_fetch_array. (Obě zmíněné funkce jsou považovány za zastaralé - viz boxík Warning nahoře na stránkách jejich popisu.)
Data vkládaná do databáze je potřeba escapovat, v opačném případě jde jednak o bezpečnostní chybu a jednak ti to neumožní některé znaky do databáze uložit. |
||
| Taps Profil |
#7 · Zasláno: 6. 12. 2013, 18:20:12
jenikkozak, janberka:
Samozřejmě jsem měl na mysli výpis níže uvedený echo "SELECT * FROM users WHERE login = '$login'"; |
||
| mzk Profil * |
#8 · Zasláno: 6. 12. 2013, 19:11:43
janberka:
„Ahoj, mám jeden problém s registračním php skriptem, se kterým už si dlouho nevím rady. Jde o to, že když vyplním do formuláře uživatele, který už existuje v databázi, uloží se mi (což by neměl).“ tak si dej unikátní klíče na sloupce v databázi |
||
| janberka Profil * |
#9 · Zasláno: 6. 12. 2013, 22:21:51
díky, už se mi to povedlo vyřešit
|
||
| Joker Profil |
#10 · Zasláno: 6. 12. 2013, 22:26:08
janberka:
„už se mi to povedlo vyřešit“ Jak? |
||
|
Časová prodleva: 12 let
|
|||
0