Здравейте препоръчаха ми този урок:
http://web-tourist.net/login/login/view.php?st=802
и по него си пренаправих файловете за мои цели, като пооправих грешките на този, който го е писал.
Сега проблемът е, че не иска да променя в базата данни информацията след като submit-на в editprofile.php
Качвам съдържанието на всички файлове, ако искате да тествате.
Може да се каже, че съм оправил повечето грешки, ако не и всички.
Бих искал да направя email полето да е задължително и в него да може да се въвежда само email адрес, а не всяк'ви щуротии. Благодаря предварително. Извинявам се, ако има грешки или сложни обяснения първи пост ми е и го пиша в 4:30 през нощта. (=
Ето файловото дърво:
Тук ще дам съдържанието на всеки файл, но преди това ще покажа как промених заявката в базата данни:
[sql]
CREATE TABLE `users` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
type ENUM( 'member' , 'admin' ) NOT NULL default 'member',
`username` varchar(30) NOT NULL default '',
`password` varchar(255) NOT NULL default '',
`first_name` varchar (15) NOT NULL,
`last_name` varchar (30) NOT NULL,
`gender` ENUM('male', 'female') NOT NULL default 'male',
`email` varchar(50) NOT NULL default '',
`skype` varchar(50) NOT NULL default 'Not Specified',
`facebook` varchar(150) NOT NULL default 'Not Specified',
`location` varchar(100) NOT NULL default 'Not Specified',
PRIMARY KEY (`id`),
UNIQUE KEY (`email`),
KEY (`email`, `password`)
) ENGINE = MYISAM DEFAULT CHARSET = utf8;
[/sql]
Kъдето ID е уникалният номер на регистриралият се потребител и се увеличава автоматично.
type е типа на потребителя съответно - admin/user , което позволява задаване на различни привилегии
username е името, с което потребителя достъпва сайта
password е паролата, с която потребителя достъпва сайта
first_name е първото име на потребителя
last_name е последното име на потребителя
gender е пола на потребителя
email е електронният адрес на потребителя
skype е skype-ът на потребителя
facebook е връзка към facebook акаунта на потребителя
location е местожителството на потребителя.
[config.php]
[register.php]
[members.php]
[index.php]
[logout.php]
[editprofile.php]
http://web-tourist.net/login/login/view.php?st=802
и по него си пренаправих файловете за мои цели, като пооправих грешките на този, който го е писал.
Сега проблемът е, че не иска да променя в базата данни информацията след като submit-на в editprofile.php
Качвам съдържанието на всички файлове, ако искате да тествате.
Може да се каже, че съм оправил повечето грешки, ако не и всички.
Бих искал да направя email полето да е задължително и в него да може да се въвежда само email адрес, а не всяк'ви щуротии. Благодаря предварително. Извинявам се, ако има грешки или сложни обяснения първи пост ми е и го пиша в 4:30 през нощта. (=
Ето файловото дърво:
config.php
register.php
members.php
logout.php
editprofile.php
index.php
> includes - ПАПКА (която съдържа):
index.php - празен
login.php
index.html
menu.html
Тук ще дам съдържанието на всеки файл, но преди това ще покажа как промених заявката в базата данни:
[sql]
CREATE TABLE `users` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
type ENUM( 'member' , 'admin' ) NOT NULL default 'member',
`username` varchar(30) NOT NULL default '',
`password` varchar(255) NOT NULL default '',
`first_name` varchar (15) NOT NULL,
`last_name` varchar (30) NOT NULL,
`gender` ENUM('male', 'female') NOT NULL default 'male',
`email` varchar(50) NOT NULL default '',
`skype` varchar(50) NOT NULL default 'Not Specified',
`facebook` varchar(150) NOT NULL default 'Not Specified',
`location` varchar(100) NOT NULL default 'Not Specified',
PRIMARY KEY (`id`),
UNIQUE KEY (`email`),
KEY (`email`, `password`)
) ENGINE = MYISAM DEFAULT CHARSET = utf8;
[/sql]
Kъдето ID е уникалният номер на регистриралият се потребител и се увеличава автоматично.
type е типа на потребителя съответно - admin/user , което позволява задаване на различни привилегии
username е името, с което потребителя достъпва сайта
password е паролата, с която потребителя достъпва сайта
first_name е първото име на потребителя
last_name е последното име на потребителя
gender е пола на потребителя
email е електронният адрес на потребителя
skype е skype-ът на потребителя
facebook е връзка към facebook акаунта на потребителя
location е местожителството на потребителя.
[config.php]
PHP:
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
ob_start();
$conn = mysql_connect("localhost","admin","root");
mysql_select_db("project_x") or die(mysql_error());
$logged = MYSQL_QUERY("SELECT * from users WHERE id='$_COOKIE[id]' AND password = '$_COOKIE[pass]'");
$logged = mysql_fetch_array($logged);
?>
[register.php]
PHP:
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
ob_start();
// Позволява бисквитки
include("config.php");
// Използва config.php
if ($_POST['register']) {
// Проверка... АКО формата е изпратена
$username = $_POST[username];
$password = $_POST[pass];
$cpassword = $_POST[cpass];
$email = $_POST[emai1];
//Въвежда променливите с информация зададена от потребителя
if($username==NULL|$password==NULL|$cpassword==NULL|$email==NULL)
{
//проверка за празни полета
echo "Оставили сте празно поле!";
}else{
//Няма празни полета! => Продължаваме...
if($password != $cpassword) {
//Проверка за паролите
echo "Паролите не съвпадат!";
}else{
//Паролите са си O.K.! => Продължавамe...
$password = md5($password);
//Криптира паролата при изпращане на заявката
$checkname = mysql_query("SELECT username FROM users WHERE username='$username'");
$checkname= mysql_num_rows($checkname);
$checkemail = mysql_query("SELECT email FROM users WHERE email='$email'");
$checkemail = mysql_num_rows($checkemail);
if ($checkemail>0|$checkname>0) {
//Проверка дали няма вече такъв регистриран потребител.има => чупи цикала и плюе:
echo "The username or email is already in use";
}else{
// или, ако никой не използва този username и email ... => продължаваме
$username = htmlspecialchars($username);
$password = htmlspecialchars($password);
$email = htmlspecialchars($email);
// тук се уверяваме да не се изпрати случайно html код.
// Всичко бачка чудесно => INSERT
$query = mysql_query("INSERT INTO users (username, password, email) VALUES('$username','$password','$email')");
// Добавя информацията в DB в таблица users
echo "Вие успешно се регистрирахте!";
}
}
}
}else{
// формата не е попълнена правилно => хаййде на ново
echo ("
<center>
<form method=\"POST\">
Потребителско име: <input type=\"text\" size=\"15\" maxlength=\"25\" name=\"username\"><br/>
Парола: <input type=\"password\" size=\"15\" maxlength=\"25\" name=\"pass\"><br/>
Повторете паролата: <input type=\"password\" size=\"15\" maxlength=\"25\" name=\"cpass\"><br/>
Email адрес: <input type=\"text\" size=\"15\" maxlength=\"25\" name=\"emai1\"><br/>
<input name=\"register\" type=\"submit\" value=\"Регистрирай се\">
</form>
</center>
");
}
?>
[members.php]
PHP:
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
ob_start();
include("config.php");
if (!$_GET[user])
{
$getuser = mysql_query("SELECT * from users order by id asc");
while ($user = mysql_fetch_array($getuser))
{
// Вика всичко от таблица user
echo ("<a href=\"members.php?user=$user[username]\">$user[username]</a><br/>\n");
// Генериран линк към профила на потребител.
}
}
ELSE
{
$getuser = mysql_query("SELECT * from users where username = '$_GET[user]'");
$usernum = mysql_num_rows($getuser);
if ($usernum == 0)
{
echo ("Няма потребители");
}
else
{
$profile = mysql_fetch_array($getuser);
echo ("<center><b>Сега разглеждате профила на: $profile[username]</b> с юзърклас <b>$profile[type]</b> <br/></center>
Име: $profile[first_name] $profile[last_name]<br/>
Пол: $profile[gender]<br/>
Facebook: $profile[facebook]<br/>
Skype: $profile[skype]<br/>
Location: $profile[location]<br/>
Email адрес: $profile[email]<br/>");
// тук викаме информацията за потребителя от базата данни от таблица users (17ред)
}
}
?>
[index.php]
PHP:
<?php
include 'includes/header.html';
include 'includes/login.php';
include 'includes/menu.html';
?>
[logout.php]
PHP:
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
ob_start();
setcookie("id", 2132421,time()+(60*60*24*5), "/", "");
setcookie("pass", loggedout,time()+(60*60*24*5), "/", "");
echo ("<meta http-equiv=\"Refresh\" content=\"2; URL=index.php\"/>Вие успешно излязохте от акаунта си!");
?>
[editprofile.php]
PHP:
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
ob_start();
include("config.php");
if ($logged[username])
{
// При успешен вход => Продължаваме...
if (!$_POST[update])
{
// Формата не е била изпратена => Продължаваме...
$profile = mysql_query("SELECT * from users where username = '$logged[username]'");
$profile = mysql_fetch_array($profile);
// Взима информацията от DB и я показва в html формата.
echo("
<center><form method=\"POST\">
<table width=\"100%\">
<tr>
<td align=\"right\" width=\"25%\">
Потребител:
</td>
<td align=\"left\">
<input type=\"text\" size=\"25\" maxlength=\"25\" name=\"username\" value=\"$profile[username]\">
</td>
<tr>
<td align=\"right\" width=\"25%\">
Име
</td>
<td align=\"left\">
<input type=\"text\" size=\"25\" maxlength=\"25\" name=\"first_name\" value=\"$profile[first_name]\">
<input type=\"text\" size=\"25\" maxlength=\"25\" name=\"last_name\" value=\"$profile[last_name]\">
</td>
</td>
</tr>
<tr>
<td align=\"right\" width=\"25%\">
Location
</td>
<td align=\"left\">
<input type=\"text\" size=\"25\" maxlength=\"25\" name=\"locate\" value=\"$profile[location]\"></td>
</tr>
<tr>
<td align=\"right\" width=\"25%\">
Skype
</td>
<td align=\"left\">
<input size=\"25\" name=\"skype\" value=\"$profile[skype]\"></td>
</tr>
<tr>
<td align=\"right\" width=\"25%\">
Facebook</td>
<td align=\"left\">
<input size=\"25\" name=\"facebook\" value=\"$profile[facebook]\"></td>
</tr>
<tr>
<td align=\"right\" width=\"25%\">
Email адрес</td>
<td align=\"left\">
<input size=\"25\" name=\"email\" value=\"$profile[email]\"></td>
</tr>
<tr>
<td align=\"center\">
</td>
<td align=\"left\">
<input type=\"submit\" name=\"update\" value=\"Обнови\"></td>
</tr>
</table>
</form>
</center>");
}
else
{
$username = htmlspecialchars($_POST[username]);
$first_name = htmlspecialchars($_POST[first_name]);
$last_name = htmlspecialchars($_POST[last_name]);
$password = htmlspecialchars($_POST[password]);
$gender = htmlspecialchars($_POST[gender]);
$facebook = htmlspecialchars($_POST[facebook]);
$skype = htmlspecialchars($_POST[skype]);
$locate = htmlspecialchars($_POST[locate]);
// махаме html от заявката
echo ("Вашия профил е успешно обновен!");
$update = mysql_query("Update users set email = '$email',
skype = '$skype', facebook = '$facebook', location = '$locate',
first_name = '$first_name', last_name = '$last_name',
gender = '$gender', username = '$username',
where username = '$logged[username]'");
// Обновява информацията в базата данни
}
}
else
{
// Ако НЕ са се логнали
echo ("<a href=\"index.php\">Не сте логнат!</a>");
}
?>