Need help... MySQL

Soul_Stealler

Registered
Как да направя дадена колона, че числото в нея да е уникално и със всеки добавен ред само да се покачва? :roll:
 
Ако създаваш таблицата през phpmyadmin-a трябва полето да е:

Примерно id (обикновенно то е уникално и нараства само).

В phpmyadmina пишеш
име на полето - id
тип - int
дължина 10
допълнително - auto_increment
и накрая му задаваш да е уникално

Ako таблицата я създаваш с php код:


Код:
CREATE TABLE `table` (
`id` INT( 10 ) NOT NULL AUTO_INCREMENT ,
`pole1` VARCHAR( 30 ) NOT NULL ,
`pole2` VARCHAR( 30 ) NOT NULL ,
UNIQUE (
`id` 
)
) ;

В случая товае таблица с 3 полета 1-то от което е id,уникално и auto_increment
 
МНооооого 10х :) .
А, и още един въпрос. Може ли някой да подпбри поне малко защитата на тоя скрипт за регистрация ? :roll:

<?php
///////////////////////////////////////
$self = $_SERVER['PHP_SELF'];
$user = $_POST['user'];
$pass = $_POST['pass'];
$email = $_POST['email'];
$pass2 = $_POST['pass2'];
if ( (!$user) or (!$pass) or (!$email) or $pass != $pass2 ){
$form = "Моля въведете правилно всички данни!:";
$form.= "<form action='$self' method='post'>
<table width='300' border='0' cellspacing='0' cellpadding='0'>
<tr>
<td>Потребител:</td>
<td> <input type='text' name='user' value='$user0' maxlength='25'></td>
</tr>
<tr>
<td>Парола:</td>
<td> <input type='password' name='pass' value='$pass' maxlength='25'></td>
</tr>
<tr>
<td>Повторете паролата:</td>
<td> <input type='password' name='pass2' value='$pass2' maxlength='25'></td>
</tr>
<tr>
<td>Емайл:</td>
<td> <input type='email' name='email' value='$email' maxlength='50'></td>
</tr>
</table>
<input type='submit' value='Напред'>
</form>";
echo "$form";


} if( !preg_match("/^[a-zA-Z0-9_^#]+$/", trim($user)) ){
echo "<b>››</b>Потребителското ви име съдържа непозволени символи!<br>";
} if( (!$user) ){
echo "<b>››</b>Не сте попълнили полето \"<b>Потребител</b>\"<br>";
} if( (!$pass) or (!$pass) ){
echo "<b>››</b>Не сте попълнили полето \"<b>Парола</b>\"<br>";
} if( $pass != $pass2 ){
echo "<b>››</b>2те пароли не ви съвпадат<br>";
} if( (!$email) ){
echo "<b>››</b>Не сте попълнили полето \"<b>Емайл</b>\"<br>";
}

////////////////////2ra chast////////////
else {
$pass3 = md5($pass);
$zaiavka2 = "select user from **** where user='$user'";
$rez2 = @mysql_query($zaiavka2, $conn) or die("ZAQVKATA NE MOJE DA BUDE IZPULNENA");
while ( $red2 = mysql_fetch_array( $rez2 )){
$exuser = $red2["user"];
}
if ($exuser == $user){
echo "Потребителя вече съществува!<br><a href='register.php'><<Назад</a>";
} if ($exuser != $user){


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$zaqvka = "insert into **** (user, pass, email) values ('$user', '$pass3', '$email')";
$rez = @mysql_query($zaqvka, $conn) or die("Заявката не може да бъде изпълнена");
if ($rez){
echo "Брагодарим ви <b>$user</b> ,че се регистрирахте. Вече можете да влезнете с акаунта си.";
echo '<META HTTP-EQUIV="Refresh" CONTENT="0; URL=index.php">';
}
///////////////////////////////////////////////////////////////////////////////////////////
}
}


?>
 
Ми добре си е.
При регистрацията трябва да проверяваш дали няма съвпадение на имена.
Това вече си го направил.
Това е за да не могат да се регистрират с username което вече съществува.
 
Проблема е, че вчера вечерта се беше регистрирал потребител с име <script>back();</script> и т.н. и беше станало мазало във форума. :roll: . Има ли начин да ги забраня тея неща ?
 
Я замени това:
if( !preg_match("/^[a-zA-Z0-9_^#]+$/", trim($user)) ){

с това
if(!eregi('^[a-zA-Z0-9_]+$',$user)){

За да видя какво ще стане.
Пробвай се после да се регнеш с подобен на оня user (script).

Може да направиш още една проверка:
след това:
if ($exuser != $user){
добавяш:
$user=stripslashes($user);//маха всички тагове и специални знаци
 
Тези дето съдържат <script> не ги пуска да се регистират, а тея дето има кавички слага \ пред тях
 
Има ли команда която да показва линка на страницата в която е потребителя (в момента). Например аз сега съм в http://www.web-tourist.net/forum/posting.php?mode=reply&t=1765

И да има някъде нещо от рода
echo "Линка на страницата в която съм в момента е $stranicata";


Тоест : Линка на страницата в която съм в момента е http://www.web-tourist.net/forum/posting.php?mode=reply&t=1765
 
Soul_Stealler каза:
Има ли команда която да показва линка на страницата в която е потребителя (в момента). Например аз сега съм в http://www.web-tourist.net/forum/posting.php?mode=reply&t=1765

И да има някъде нещо от рода
echo "Линка на страницата в която съм в момента е $stranicata";


Тоест : Линка на страницата в която съм в момента е http://www.web-tourist.net/forum/posting.php?mode=reply&t=1765

Няма ли такова нещо !? :roll:
 

Back
Горе