PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (2): [1] 2 »
Найдено сообщений: 20
Kantona
Отправлено: 07 Января, 2011 - 22:17:15 • Тема: Регистрация • Форум: Программирование на PHP
Ответов: 4 Просмотров: 490
А как с помощью такого скрипа срывать страницы? а то уж больно большой он получается! Хочу чтоб было так например я захожу на главную ввожу логин пароль и меня перебрасывает на ту страницу которая мне нужна или наоборот пока логин и пароль не введен то перекидыввает на главную...
Kantona
Отправлено: 07 Января, 2011 - 20:45:49 • Тема: Регистрация • Форум: Программирование на PHP
Ответов: 4 Просмотров: 490
Зравствуйте) есть скрипт регистрации, когда я вхожу на страницу регистрации и просто нажимаю на кнопку регистрации то пишет что пользователь ... зарегестрирован, как сделать чтоб такого не было а регисрировало чтолько после того как поля будут заполнены?? заранее спасибо
вот скрипт
База данных
CODE (
SQL ):
скопировать код в буфер обмена
CREATE TABLE users(
id INT NOT NULL AUTO_INCREMENT ,
login VARCHAR( 15) ,
pass TEXT,
email VARCHAR( 150) ,
PRIMARY KEY ( id)
) ;
connectdb.php
PHP:
скопировать код в буфер обмена
<?
//данные о хосте, пользователе и базе данных
$host = 'localhost' ;
$user = 'root' ;
$pass = 'pass' ;
$dbname = 'test' ;
// подключаемся и выбираем бд, которую указали выше
die ( 'Не удалось подключиться к серверу MySql!' ) ; die ( 'Не удалось выбрать БД!' ) ; ?>
register.php
PHP:
скопировать код в буфер обмена
<?
include ( 'connectdb.php' ) ; // подключение к серверу MySql и выбор БД
if ( ( $_POST [ 'login' ] != '' ) ||
( $_POST [ 'pass1' ] != '' ) ||
( $_POST [ 'pass2' ] != '' ) ||
( $_POST [ 'email' ] != '' ) ) { // если все данные для регистрации введены, то продолжаем
$pass1 = $_POST [ 'pass1' ] ;
$pass2 = $_POST [ 'pass2' ] ;
if ( strcmp ( $pass1 , $pass2 ) == 0 ) { // если пароли совпадают, то продолжаем $login = $_POST [ 'login' ] ;
$email = $_POST [ 'email' ] ;
//проверяем наличие в БД пользователя с логином $login
$sql = 'SELECT * FROM users WHERE login=' . $login ; // скрипт для поиска по логину в таблице users
// sql-скрипт для добавления даных в таблицу
$sql = 'INSERT INTO users(login, pass, email)
VALUES("' . $login . '", "' . $pass1 . '", "' . $email . '")' ;
echo 'Пользователь ' . $_POST [ 'login' ] . ' успешно зарегистрирован! <a href="/index.php">Форма для входа.' ;
} else {
echo 'При регистрации произошла ошибка, <a href="/register.php">повторите попытку</a>.' ;
}
} else echo 'Пользователь с таким логином уже зарегистрирован!' ;
} else echo 'Введенные пароли не совпадают, <a href="/register.php">повторите попытку</a>.' ;
} else {
?>
<form method='post' action='/register.php'>
Введите Логин: <input type='text' size='30' name='login' /> Введите e-mail: <input type=text size=30 name='email' /> Пароль: <input type='password' name='pass1' size='30' /> Повторите пароль: <input type='password' name='pass2' size='30' /> <input type='submit' value='Регистрация' />
<?
}
?>
</form>
index.php
PHP:
скопировать код в буфер обмена
<?
/*!!!Чтобы не повредить работоспособности
скрипта выше этого комментария
не размещайте вообще ничего!!!*/
include ( 'connectdb.php' ) ; // подключение к серверу MySql и выбор БД
$userinfo = '' ;
$state = '0' ;
if ( ( isset ( $_COOKIE [ 'login' ] ) ) & ( isset ( $_COOKIE [ 'pass' ] ) ) ) { // если в куках лежит логин и зашифрованый пароля if ( ! isset ( $_GET [ 'exit' ] ) ) { // если кнопка выход не была нажата $login = $_COOKIE [ 'login' ] ;
$pass = $_COOKIE [ 'pass' ] ;
// проверяем наличие пользователя в БД и достаём оттуда пароль
$sql = "SELECT id, pass FROM users WHERE login='$login '" ;
if ( strcmp ( $pass , md5 ( $userinfo [ 'pass' ] ) ) == 0 ) { //проверяем схожесть пароля из БД с паролем из куков
// достаём все данные из БД
$sql = "SELECT * FROM users WHERE login='$login '" ;
$userinfo = mysql_fetch_array ( $res ) ; // в этой переменной будет лежать вся информация о пользователе из БД // устанавливаем куки для запоминания статуса пользователя
$state = 1 ; // статус, если 1, тогда пользователь авторизован
}
}
} else {
//обнуляем куки, если была нажата кнопка выход
}
}
if ( $state != 1 ) { // если после проверки куков, оказалось, что пользователь не авторизован, то идем дальше
if ( ( isset ( $_POST [ 'login' ] ) ) & ( isset ( $_POST [ 'pass' ] ) ) ) { // если пользователь ввёл логин и пароль $login = $_POST [ 'login' ] ;
// проверяем наличие пользователя в БД и достаём оттуда пароль
$sql = "SELECT id, pass FROM users WHERE login='$login '" ;
$userinfo = mysql_fetch_array ( $res ) ; // в этой переменной лежит пароль из БД и номер пользователя $pass = $_POST [ 'pass' ] ;
if ( strcmp ( $pass , $userinfo [ 'pass' ] ) == 0 ) {
// достаём все данные из БД
$sql = "SELECT * FROM users WHERE login='$login '" ;
$userinfo = mysql_fetch_array ( $res ) ; // в этой переменной будет лежать вся информация о пользователе из БД // устанавливаем куки для запоминания статуса пользователя, пароль шифруем
$state = 1 ; // статус, если 1, тогда пользователь авторизован
}
}
}
}
if ( $state != 1 ) {
?>
<form method="post" action="/index.php">
Логин: <input type="text" size="30" name="login"/>Пароль: <input type="password" name="pass" size="30"/><input type="submit" value="Войти"/>
</form>
<br /><a href="/register.php">Регистрация</a>
<?
} else {
echo 'Вы вошли на сайт!<br /> Ваш Логин: ' . $userinfo [ "login" ] . '<br />Выш E-mail: ' . $userinfo [ "email" ] . '<br /> <a href="/index.php?exit=y">Выход</a>' ;
}
?>
Kantona
Отправлено: 06 Января, 2011 - 19:17:25 • Тема: Как сделать авторизацию • Форум: Программирование на PHP
Ответов: 1 Просмотров: 184
Если хочешь скину тебе свою регистрацию. Перевел её вчера, очень даже не плохая но там только 2 поля при входе логин, пароль и три при регистрации! если знаешь php можешь доделать под себя.. Внедрил вчера на сайт, щас покажу скрины!
Регистрация:
Вход:
Вошли на сайт:
Kantona
Отправлено: 06 Января, 2011 - 18:56:39 • Тема: Подсчет пользователей • Форум: Программирование на PHP
Ответов: 2 Просмотров: 202
Есть таблица:
CODE (
SQL ):
скопировать код в буфер обмена
CREATE TABLE users (
id int( 5) NOT NULL AUTO_INCREMENT ,
login varchar( 15) DEFAULT '0' ,
password varchar( 15) DEFAULT '0' ,
PRIMARY KEY ( id)
) ;
как зделать так что можно было вывести строку "Всего зарегистрированных: ? "
Kantona
Отправлено: 20 Декабря, 2010 - 20:49:17 • Тема: Помогите • Форум: HTML, Дизайн & CSS
Ответов: 4 Просмотров: 1683
Есть файлы:
index.php
PHP:
скопировать код в буфер обмена
<?PHP
include 'themes/' . THEME. '/header.html' ;
include 'themes/' . THEME. '/menu.html' ;
$page = ! empty ( $_GET [ 'page' ] ) ?
trim ( $_GET [ 'page' ] ) : $page = "main" ;
if ( $page ) {
$path = 'inc/' . $page . '/view.php' ;
include ( $path ) ;
} else {
echo '
<h3>Ошибка!</h3>
<h3>Такой страницы не существует. </h3>' ;
}
} else {
echo '
<h3>Ошибка!</h3>
<h3>Доступ запрещен. </h3>' ;
}
}
include 'themes/' . THEME. '/footer.html' ;
?>
themes/default/header.html
CODE (
html ):
скопировать код в буфер обмена
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns= "http://www.w3.org/1999/xhtml" >
<head >
<title > Kanto</ title >
<meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" / >
<link href = "./themes/default/style.css" rel = "stylesheet" type = "text/css" media = "all" / >
</ head >
<body >
<div id = "wrap" >
<div id = "header" >
<h1 > Kanto</ h1 >
</ div >
themes/default/menu.html
CODE (
html ):
скопировать код в буфер обмена
<div id = "menu" >
<ul >
<li ><a href = "?page=main" > Главная</ a ></ li >
<li ><a href = "?page=article" > Статьи</ a ></ li >
<li ><a href = "?page=about" > О сайте</ a ></ li >
</ ul >
</ div >
<div id = "content" >
<div class = "main" >
themes/default/footer.html
CODE (
html ):
скопировать код в буфер обмена
</ div >
</ div >
<div style = "clear: both;" > </ div >
<div id = "footer" >
Сopyright 2010 © <a href = "index.php" > Kanto</ a >
</ div >
</ div >
</ body >
</ html >
и стиль themes/default/style.css
CODE (
htmlphp ):
скопировать код в буфер обмена
* {
padding: 0 ;
margin: 0 ;
}
body {
background: #000;
font- family: Verdana, Arial, Helvetica, sans- serif;
font- size: 12px;
line- height: 16px;
color: #333;
background: url( images/ bg. png) ;
}
img { border: none; }
a { color: #57626a; text-decoration: none; }
a: hover { text- decoration: underline; color : #660099; }
#wrap {
margin: 0 auto;
width: 100%;
}
#header {
padding: 10px 0 15px 0 ;
background: #CCFFCC;
}
#header h1 {
text- shadow: #000 1px 1px 1px;
font- size: 26px;
font- weight: 150 ;
letter- spacing: none;
padding: 12px 0 5px 10px;
}
#menu {
height: 30px;
line- height: 30px;
background: #333;
text- transform: uppercase;
}
#menu ul {
padding- left: 10px;
list- style- type: none;
}
#menu ul li {
display: block;
float: left;
}
#menu ul li a {
font- family: Arial;
color: #CCFFCC;
padding: 0 10px;
text- decoration: none;
font- weight: 150 ;
font- size: 14px;
letter- spacing: - 1px;
}
#menu ul li a:hover {
font- family: Arial;
color: #FFF;
text- decoration: underline;
}
#content {
padding: 10px 20px;
background: #FFF;
}
. main {
background: #FFF;
width: 100%;
float: none;
text- align: justify;
}
. main h2 {
color: #343434;
font- size: 20px;
letter- spacing: - 3px;
font- weight: 150 ;
padding : 10px 0 15px 0 ;
text- align: right;
}
#footer {
background: #CCFFCC;
border- top: 3px solid #333;
text- align: center;
color: #333;
font- size: 12px;
margin: 0 auto;
padding: 10px 0 ;
width: 100%;
}
hr {
border: 1px solid #57626a;
}
Как зделать не такую стуктуру сайта:
а такую:
Kantona
Отправлено: 20 Декабря, 2010 - 15:08:59 • Тема: Паролирование админки • Форум: Программирование на PHP
Ответов: 6 Просмотров: 2647
OrmaJever пишет: 1) Создайте в бд колонку напирме group int(3)
2) Придумайте несколько груп пользователей. НУ например пусть их будет две. 1 - пользователи, 2 - админ.
3) При регистрации всегда добавлятьв эту колонку 1 (тоесть все зарегестрированые будут простых пользователи.). Своему пользователю добавьте в бд цыфру 2.
4) Затем например на странице админки вначале скрипта берёте даные из бд про пользователя и сравниваете. Если колонка group == 2 то страница грузится если нет то редирект например.
Еще лучше))) спасибо, думаю справлюсь)
Kantona
Отправлено: 20 Декабря, 2010 - 12:35:53 • Тема: Паролирование админки • Форум: Программирование на PHP
Ответов: 6 Просмотров: 2647
Платинум пишет: Kantona пишет: а можете по подробней описать как это реализовать?
а подробнее вам расскажут уроки по PHP
Или же в вашем случаи можно скачать другой скрипт, который удовлетворит ваши потребности.
Ну да впринципе)) Ладно, все равно спасибо))
Kantona
Отправлено: 20 Декабря, 2010 - 12:15:54 • Тема: Паролирование админки • Форум: Программирование на PHP
Ответов: 6 Просмотров: 2647
OrmaJever пишет: Раньше обсуждали. Добавить в бд одно поле. И в него писать например цыфры,
1 - пользователь, 2 - какойнибудь модератор, 3 - админ.
ПРи регистрации добавлять всем цыфру 1, а в скриптах проверять если 3 то можно куда хочешь.
а можете по подробней описать как это реализовать?
Kantona
Отправлено: 20 Декабря, 2010 - 11:50:54 • Тема: Паролирование админки • Форум: Программирование на PHP
Ответов: 6 Просмотров: 2647
Здравствуйте! Есть простенький скрипт регистрации и авторизации пользователей!
Его файлы:
config.php
functions.php
join.php
login.php
logout.php
members.php
Дамп базы данных:
CODE (
text ):
скопировать код в буфер обмена
CREATE TABLE users (
id int(5) NOT NULL auto_increment,
login varchar(15) DEFAULT '0' ,
password varchar(15) DEFAULT '0' ,
PRIMARY KEY (id)
);
Структура config.php :
CODE (
text ):
скопировать код в буфер обмена
<?php
include_once("functions.php");
session_register("login");
session_register("password");
session_register("loggedIn");
$messages=array();
$dbhost="localhost";
$dbuser="333";
$dbpass="333";
$dbname="333";
connectToDB();
?>
Структура functions.php :
CODE (
text ):
скопировать код в буфер обмена
<?php
function connectToDB() {
global $link, $dbhost, $dbuser, $dbpass, $dbname;
($link = mysql_pconnect("$dbhost", "$dbuser", "$dbpass")) || die("Couldn't connect to MySQL");
mysql_select_db("$dbname", $link) || die("Couldn't open db: $dbname. Error if any was: ".mysql_error() );
}
function newUser($login, $password) {
global $link;
$query="INSERT INTO users (login, password) VALUES('$login', '$password')";
$result=mysql_query($query, $link) or die("Died inserting login info into db. Error returned if any: ".mysql_error());
return true;
}
function displayErrors($messages) {
print("<b>There were problems with the previous action. Following is a list of the error messages generated:</b>\n<ul>\n");
foreach($messages as $msg){
print("<li>$msg</li>\n");
}
print("</ul>\n");
}
function checkLoggedIn($status){
switch($status){
case "yes":
if(!$_SESSION["loggedIn"]){
header("Location: login.php");
exit;
}
break;
case "no":
if($_SESSION["loggedIn"]){
header("Location: members.php?".session_name()."=".session_id());
}
break;
}
}
function checkPass($login, $password) {
global $link;
$query="SELECT login, password FROM users WHERE login='$login' and password='$password'";
$result=mysql_query($query, $link)
or die("checkPass fatal error: ".mysql_error());
if(mysql_num_rows($result)==1) {
$row=mysql_fetch_array($result);
return $row;
}
}
function cleanMemberSession($login, $password) {
$_SESSION["login"]=$login;
$_SESSION["password"]=$password;
$_SESSION["loggedIn"]=true;
}
function flushMemberSession() {
unset($_SESSION["login"]);
unset($_SESSION["password"]);
unset($_SESSION["loggedIn"]);
session_destroy();
return true;
}
function doCSS() {
?>
<style type="text/css">
body{font-family: Arial, Helvetica; font-size: 10pt}
h1{font-size: 12pt}
</style>
<?php
}
# function validates HTML form field data passed to it:
function field_validator($field_descr, $field_data,
$field_type, $min_length="", $max_length="",
$field_required=1) {
# array for storing error messages
global $messages;
# first, if no data and field is not required, just return now:
if(!$field_data && !$field_required){ return; }
# initialize a flag variable - used to flag whether data is valid or not
$field_ok=false;
# this is the regexp for email validation:
$email_regexp="^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|";
$email_regexp.="(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
# a hash array of "types of data" pointing to "regexps" used to validate the data:
$data_types=array(
"email"=>$email_regexp,
"digit"=>"^[0-9]$",
"number"=>"^[0-9]+$",
"alpha"=>"^[a-zA-Z]+$",
"alpha_space"=>"^[a-zA-Z ]+$",
"alphanumeric"=>"^[a-zA-Z0-9]+$",
"alphanumeric_space"=>"^[a-zA-Z0-9 ]+$",
"string"=>""
);
# check for required fields
if ($field_required && empty($field_data)) {
$messages[] = "$field_descr is a required field.";
return;
}
# if field type is a string, no need to check regexp:
if ($field_type == "string") {
$field_ok = true;
} else {
# Check the field data against the regexp pattern:
$field_ok = ereg($data_types[$field_type], $field_data);
}
# if field data is bad, add message:
if (!$field_ok) {
$messages[] = "Please enter a valid $field_descr.";
return;
}
# field data min length checking:
if ($field_ok && $min_length) {
if (strlen($field_data) < $min_length) {
$messages[] = "$field_descr is invalid, it should be at least $min_length character(s).";
return;
}
}
# field data max length checking:
if ($field_ok && $max_length) {
if (strlen($field_data) > $max_length) {
$messages[] = "$field_descr is invalid, it should be less than $max_length characters.";
return;
}
}
}
?>
Структура join.php :
CODE (
text ):
скопировать код в буфер обмена
<?php
include_once("config.php");
checkLoggedIn("no");
$title="Member Registration Page";
if($_POST["submit"]){
# field_validator($field_descr, $field_data, $field_type, $min_length="", $max_length="", $field_required=1) {
field_validator("login name", $_POST["login"], "alphanumeric", 4, 15);
field_validator("password", $_POST["password"], "string", 4, 15);
field_validator("confirmation password", $_POST["password2"], "string", 4, 15);
if(strcmp($_POST["password"], $_POST["password2"])) {
$messages[]="Your passwords did not match";
}
$query="SELECT login FROM users WHERE login='".$_POST["login"]."'";
$result=mysql_query($query, $link) or die("MySQL query $query failed. Error if any: ".mysql_error());
if( ($row=mysql_fetch_array($result)) ){
$messages[]="Login ID \"".$_POST["login"]."\" already exists. Try another.";
}
if(empty($messages)) {
newUser($_POST["login"], $_POST["password"]);
cleanMemberSession($_POST["login"], $_POST["password"]);
header("Location: members.php?".session_name()."=".session_id());
}
}
?>
<html>
<head>
<title><?php print $title ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<?php doCSS()?>
</head>
<body>
<h1><?php print $title?></h1>
<?php
if(!empty($messages)){
displayErrors($messages);
}
?>
<form action="<?=$_SERVER["PHP_SELF"]?>" method="POST">
<table>
<tr><td>Login:</td><td><input type="text" name="login" value="<?php print $_POST["login"] ?>" maxlength="15"></td></tr>
<tr><td>Password:</td><td><input type="password" name="password" value="" maxlength="15"></td></tr>
<tr><td>Confirm password:</td><td><input type="password" name="password2" value="" maxlength="15"></td></tr>
<tr><td> </td><td><input name="submit" type="submit" value="Submit"></td></tr>
</table>
</form>
</body>
</html>
Структура login.php :
CODE (
text ):
скопировать код в буфер обмена
<?php
include_once("config.php");
checkLoggedIn("no");
$title="Member Login Page";
if($_POST["submit"]) {
field_validator("login name", $_POST["login"], "alphanumeric", 4, 15);
field_validator("password", $_POST["password"], "string", 4, 15);
if($messages){
doIndex();
exit;
}
if( !($row = checkPass($_POST["login"], $_POST["password"])) ) {
$messages[]="Incorrect login/password, try again";
}
if($messages){
doIndex();
exit;
}
cleanMemberSession($row[login], $row[password]);
header("Location: members.php?".session_name()."=".session_id());
} else {
doIndex();
}
function doIndex() {
global $messages;
global $title;
?>
<html>
<head>
<title><?=$title?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<?php doCSS()?>
<body>
<h1><?=$title?></h1>
<?php
if($messages) { displayErrors($messages); }
?>
<form action="<?=$_SERVER["PHP_SELF"]?>" method="POST">
<table>
<tr><td>Login:</td><td><input type="text" name="login" value="<?php print $_POST["login"] ?>" maxlength="15"></td></tr>
<tr><td>Password:</td><td><input type="password" name="password" value="" maxlength="15"></td></tr>
<tr><td> </td><td><input name="submit" type="submit" value="Submit"></td></tr>
</table>
</form>
</body>
</html>
<?php
}
?>
Структура logout.php :
CODE (
text ):
скопировать код в буфер обмена
<?php
include_once("config.php");
checkLoggedIn("yes");
flushMemberSession();
header("Location: login.php");
?>
Структура members.php :
CODE (
text ):
скопировать код в буфер обмена
<?php
include_once("config.php");
checkLoggedIn("yes");
doCSS();
print("Welcome to the members page <b>".$_SESSION["login"]."</b><br>\n");
print("Your password is: <b>".$_SESSION["password"]."</b><br>\n");
print("<a href=\"logout.php?".session_name()."=".session_id()."\">Logout</a>");
?>
Вопрос как зделать так чтоб была регистрация администратора и войти в админпанель мог только я! Помогите нубу пожалуйста
.
.
.
Kantona
Отправлено: 11 Октября, 2010 - 18:59:11 • Тема: Где взять скрипт? • Форум: Напишите за меня, пожалуйста
Ответов: 2 Просмотров: 38
DarkWay666 пишет: JS+PHP
я бы попробывал написать, ибо представление и общая картина имеется, но пока занят
Не плохо, если все таки у вас появится время и вы решитесь написать его!! Если что буду ждать
Kantona
Отправлено: 11 Октября, 2010 - 14:17:05 • Тема: Где взять скрипт? • Форум: Напишите за меня, пожалуйста
Ответов: 2 Просмотров: 38
Мне нужен скрипт который при нажатии кнопки скачать открывет окно и предлагает нажать на рекламу! или просто чтоб не могли люди скачать пока не нажмут на рекламу!! Помогите, где найти такой или как написать его??
Kantona
Отправлено: 09 Октября, 2010 - 20:49:03 • Тема: Оцените каркас сайта!! • Форум: Наработки по собственным проектам
Ответов: 10 Просмотров: 3989
Мелкий пишет: мда.
0) разные по высоте "кнопки" выглядят как промах разметки, даже если так и было задумано
1) особенно радует подвал страницы с неверной кодировкой
2) Thumbs.db в картинках
3) Теги meta тоже вполне радуют своим наличием и незаполнением
4) отсутствие внятной 404 страницы
5) на форуме сильно порадовало отсутствие хоть какой-то валидации регистрации, прокатил email даже цитирую "ващенемыло"
6) двойное экранирование
7) за безусловную публикацию мыла в "пользователи" бить надо определённо
и прочие радости. При чём, зачем тут выделенный домен 2-го уровня?
Вы то мне и были нужны)) по полочкам все разложили! я вообще просто так морил в дремвивере, получилась эта хрень!! По порядку буду все исправлять! Кстати в опере все нормально отображается!
Что скажете про google Adsense?
(Добавление)
Kantona пишет: обенно радует подвал страницы с неверной кодировкой
Подвал это не мой косяк!! а моего хостинга)
(Добавление)
Форум я пока еще вообще не трогал! я 2ой день только над сайтом издеваюсь!
Страниц (2): [1] 2 »
Powered by ExBB FM 1.0 RC1. InvisionExBB