Skrypt rejestrujący[php] [html] [js] - mrtepes - 27-10-2010
Cześć muszę zrobić stronę, która będzie wprowadzać dane do bazy sql.
Taki prosty skrypt rejestrujący. Ma sprawdzać czy dany login istnieje już w tabeli, kodować hasło md5 i mieć zabezpieczenie tokenem.
Znalazłem coś podobnego lecz po zmodyfikowaniu nie działa mi:
Kawałek sqla:
Kod: # MySQL-Front 3.2 (Build 6.2)
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET CHARACTER SET 'utf8' */;
# Host: 192.168.140.130 Database: db_account
# ------------------------------------------------------
# Server version 5.0.45-log
#
# Table structure for table t_account
#
DROP TABLE IF EXISTS `t_account`;
CREATE TABLE `t_account` (
`accountid` bigint(21) NOT NULL auto_increment,
`name` varchar(32) default NULL,
`pwd` varchar(32) default NULL,
`pw2` varchar(32) default NULL,
accountid ma zostawiać, w name wpisać login, w pwd wpisać hasło w md5.
Zrobiłem takie coś:
Kod: <body>
<div id="registerResult"></div>
<form method="post" action="javascript:register();">
<table width="100%" border="1">
<tr>
<td colspan="2">Register</td>
</tr>
<tr>
<td>Login</td>
<td>
<input type="text" id="name" name="name" /> </td>
</tr>
<tr>
<td>Hasło</td>
<td><input type="password" id="pwd" name="pwd" /></td>
</tr>
<tr>
<td>Powtórz Hasło</td>
<td><input type="password" id="repeadpwd" name="repeadpwd" /></td>
</tr>
<tr>
<td><img src="token.php" alt="token" style="vertical-align: middle" /></td>
<td><input type="text" id="token" name="token" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="Submit" id="registerButton" value="Zarejestruj" />
</td>
</tr>
</table>
</form>
</body>
</html>
skrypt php:
Kod PHP: <?php session_start(); function lacz_bd() { $db = new mysqli('ip', 'root', 'haslo', 'db_account'); if (! $db) return false; $db->autocommit(TRUE); return $db; }
if(!empty($_GET['activ'])){ $name = addslashes($_GET['activ']); $db = lacz_bd(); $zapytanie = "update t_account set act='1' where name='$name'"; $wynik = $db->query($zapytanie); echo 'OK'; }
if($_SESSION['captcha']!=$_POST['token']){ echo '1'; exit(); }
$name = addslashes($_POST['name']); $pwd = addslashes($_POST['pwd']); $token = addslashes($_POST['token']);
if(!empty($name)&&!empty($pwd)&&!empty($token)){ $db = lacz_bd();
$zapytanie = "select name from t_account WHERE name='$name'"; $wynik = $db->query($zapytanie); $ile_znalezionych = $wynik->num_rows; if($ile_znalezionych>0){ echo '2'; exit(); } $zapytanie = "insert t_account (accountid, name, pwd,) values ('', '$name', md5('$pwd'),)"; $wynik = $db->query($zapytanie); if($wynik){ $stopka = '<br /><br />-----------------------------------------------<br /><br />'; $from = 'serwer'; $admin_mail = 'admin@mail'; topic = 'Aktywacja konta'; $tresc = 'Dane do logowania w serwisie : <br /><br /> Login: '.$name.'<br /> Haslo: '.$pwd.'<br /><br />; }else{ echo 'error';} }
?>
Plik java:
Kod: function register(){
var repeadpwd = document.getElementById("repeadpwd").value;
var registerResult = document.getElementById("registerResult");
var name = document.getElementById("name").value;
var pwd = document.getElementById("pwd").value;
var token = document.getElementById("token").value;
var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
var litPatt = /^[2-9]{5,5}$/;
var odp = regex.test(pp);
wynik= token.match(litPatt);
if(name==''){
registerResult.innerHTML = 'Błšd: Nie podano <b>Loginu</b>';
}else if (pwd!= repeadpwd){
registerResult.innerHTML = 'Błšd: <b>Podane hasłš różniš się od siebie</b>';
}else if(pwd==''){
registerResult.innerHTML = 'Błšd: Nie podano <b>Hasła</b>';
}else if(token==''){
registerResult.innerHTML = 'Błšd: Nie podano <b>Tokena</b>';
}else if(wynik == null){
registerResult.innerHTML = 'Błšd:<b>Token zawiera złe dane</b>';
}else{
var myAjax = new Ajax.Request(
'register.php',
{
method: 'post',
parameters: "name="+name+
"&pwd="+pwd+
"&token="+token,
onComplete: showResponse,
onFailure: showAlert
});
}
}
function showResponse(text){
var registerResult = document.getElementById("registerResult");
if(text.responseText=='1'){
registerResult.innerHTML = 'Błšd: <b>Token zawiera złe dane</b>';
}else if(text.responseText=='2'){
registerResult.innerHTML = 'Błšd: <b>Podany login jest już zajęty</b>';
}else{
registerResult.innerHTML = 'Rejestracja zakończona.;
}
}
function showAlert(MyRequest) {
var registerResult = document.getElementById("registerResult");
registerResult.innerHTML = 'Błšd: <b>Nieudana rejestracja.</b>';
var registerButton = document.getElementById('registerButton');
registerButton.style.display = "none";
}
token:
Kod: <?
session_start();
$pool = '23456789'; //liczby z których bedziemy losować token
$img_width = 100; //wymiary tokena
$img_height = 16;
$str = ''; //wyzerowanie tokena
for ($i = 0; $i < 5; $i++){ // losowanie liczb
$str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
}
$string = $str;
$_SESSION['captcha'] = $string; //tworzymy sesje z wartością tokena
$im = imagecreate($img_width, $img_height); //tworzymy obrazek
$bg_color = imagecolorallocate($im,255,255,255); // kolor tła
$font_color = imagecolorallocate($im,0,0,0); // kolor czcionki
$grid_color = imagecolorallocate($im,246,246,246); // kolor lini
$border_color = imagecolorallocate ($im, 246, 246, 246); // kolor ramki
// Tworzenie tokena
imagefill($im,1,1,$bg_color);
ImageLine($im,90,0,90,30,$grid_color); //1
ImageLine($im,10,0,10,30,$grid_color); //2
ImageLine($im,20,0,20,30,$grid_color); //1
ImageLine($im,30,0,30,30,$grid_color); //1
ImageLine($im,40,0,40,30,$grid_color); //1
ImageLine($im,50,0,50,30,$grid_color); //1
ImageLine($im,60,0,60,30,$grid_color); //1
ImageLine($im,70,0,70,30,$grid_color); //1
ImageLine($im,80,0,80,30,$grid_color); //1
ImageLine($im,0,5,100,5,$grid_color); //1
ImageLine($im,0,10,100,10,$grid_color); //1
ImageLine($im,0,15,100,15,$grid_color); //1
$x = rand(5, $img_width/(7/2)); // pozycja liczb w tokenie
imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $border_color);
for($a=0; $a < 7; $a++){
imagestring($im, 3, $x, 1, substr($string, $a, 1), $font_color);
$x += (5*2); #odstęp
}
header("Content-type: image/gif");
imagegif($im);
imagedestroy($im);
?>
Możecie mi wytłumaczyć co jest źle zrobione?
RE: Skrypt rejestrujący[php] [html] [js] - swinia - 27-10-2010
możesz napisać co nie działa?? jakieś błędy wywala, czy coś w tym stylu??
RE: Skrypt rejestrujący[php] [html] [js] - mrtepes - 27-10-2010
Po nacisnieciu przycisku rejestruj nic sie nie dzieje. Jak wroce do domu to postaram sie zalaczyc moje plilki czyli sqla. formularz, skrypty php i js to moze jak bedziecie mieli pliki to latwiej bedzie znalezc bledy
|