ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 02.11.2008, 13:24
Аватар для Ru}{eeZ
Ru}{eeZ
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме:
956872

Репутация: 186
Отправить сообщение для Ru}{eeZ с помощью ICQ
По умолчанию

Цитата:
Сообщение от Spyder  
вот кто нить напрямую обратиться к base.php и вся ваша хэк логинка летит мимо
Делай тогда с .htaccess'ом, а то бред)
Это будет позже продумано =))
 
Ответить с цитированием

  #12  
Старый 02.11.2008, 13:34
Аватар для Ru}{eeZ
Ru}{eeZ
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме:
956872

Репутация: 186
Отправить сообщение для Ru}{eeZ с помощью ICQ
По умолчанию

Я вот вроде добился своего, код немного смешной, но рабочий

PHP код:
<?php

$f 
file("base.php");

if(isset(
$login) && isset($password)) {
  foreach(
$f as $d) {
    
$d trim($d);
    list(
$user$pass) = split(":"$d);
    if(
$login == $user && $password == $pass) {
      print 
"Вошли";
      
$good 1;
    } else {
      
$bad 1;
    }
  }

  if (
$good == && $bad == 1) {
  } else {
    print 
"Облом";
  }

} else {
print <<<HERE
<form method = "post">
Логин: <input type = "text" name = "login"><br />
Пароль: <input type = "text" name = "password"><br />
<input type = "submit" value = "Вход">
</form>

HERE;

}

?>
 
Ответить с цитированием

  #13  
Старый 02.11.2008, 14:15
Аватар для Ru}{eeZ
Ru}{eeZ
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме:
956872

Репутация: 186
Отправить сообщение для Ru}{eeZ с помощью ICQ
По умолчанию

а это регистрация, если кому понадобится...

PHP код:
<?php

if (isset($login) && isset($password)) {
    
$fp fopen('base.php''a');
    
fputs($fp"\r\n" $login ':' $password);
    
fclose($fp);
    print 
$login ", спасибо за регистрацию";
} else {
    print <<<HERE
<form method = "post">
Логин: <input type = "text" name = "login"><br />
Пароль: <input type = "text" name = "password"><br />
<input type = "submit" value = "Регистрация">
</form>

HERE;

}

?>
 
Ответить с цитированием

  #14  
Старый 02.11.2008, 14:53
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

Ru}{eeZ меня видимо одного смущает, что с такой регой и страницей логина может быть неограниченное количество строк, с одинаковым логином, но разными паролями, а значит никто из таких пользователей залогиниться не сможет. Включенный Register_globals - зло. Твой скрипт будет рад обрабатывать 10к строк, если к нему будут обращаться каждую секунду.

Если же хочется мучаться с файлами, то:
PHP код:
<?

if (isset($_POST['login']) && isset($_POST['password']))
{
    
$f=file('base.php');
    if (
in_array($_POST['login'].':'.$_POST['password']."\r\n",$f)) {print "Вошли";}
    else {print 
"Облом";}
} else {
?>
<form method = "post">
Логин: <input type = "text" name = "login"><br />
Пароль: <input type = "text" name = "password"><br />
<input type = "submit" value = "Вход">
</form> 
<?
}
?>
 
Ответить с цитированием

  #15  
Старый 02.11.2008, 15:32
Аватар для Ru}{eeZ
Ru}{eeZ
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме:
956872

Репутация: 186
Отправить сообщение для Ru}{eeZ с помощью ICQ
По умолчанию

Да ладно, я всё это мутил ради самообразования( ), cms я пока писать не собираюсь) Но всеравно спасибо)
 
Ответить с цитированием

  #16  
Старый 04.11.2008, 00:40
Аватар для eLWAux
eLWAux
Members of Antichat - Level 5
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме:
5111568

Репутация: 2399


Отправить сообщение для eLWAux с помощью ICQ
По умолчанию

base.php:

PHP код:
<? header("Location: index.php"); die('хм..');
admin:test
?>
 
Ответить с цитированием

  #17  
Старый 04.11.2008, 01:46
Аватар для SleepShadowWeb
SleepShadowWeb
Новичок
Регистрация: 02.02.2006
Сообщений: 28
Провел на форуме:
351198

Репутация: 54
По умолчанию

советую в цикл foreach добавить break;
Код:
if($login == $user && $password == $pass) { 
print "Вошли"; 
$good = 1;
break;
}
и ещё:
переменные $good и $bad лучше объявить:
Код:
$f = file("base.php");
$good = 0;
$bad = 0;
и ещё, вот этот код:
Код:
if ($good == 1 && $bad == 1) { 
  } else { 
    print "Облом"; 
  }
в случае, если логин и пароль совпадут с первой строкой в файле и записей в нём будет одна, тогда условие не выполнится! (хотя данные корректны)
В любом случае, наличие переменной $bad в коде не оправдано! Лучше убери.
И следует контролировать длину проверяемых данных (функция substr)

Код:
$f = file("base.php"); 
$good = 0;

if(isset($_POST['login']) && isset($_POST['password'])) 
{ 
  $p_pass = substr($_POST['password'], 0, 10);
  $p_login = substr($_POST['login'], 0, 10);
  foreach($f as $d) { 
    $d = trim($d); 
    list($user, $pass) = split(":", $d); 
    if($p_login == $user && $p_pass == $pass)  {
      $good = 1; 
      break;
 }
}

  if ($good == 1) { 
      print "Вошли"; 
  } else { 
    print "Облом"; 
  }

} else { 
print <<<HERE
......
и ещё в файле base.php аккаунты лучше хранить массивом, а не в текстовом виде, тогда автоматом увеличивается скорость работы скрипта и пропадает угроза безопасеости.
при поиске не нужно будет перебирать все элементы и использовать функцию in_array, а просто обратиться к массиву по индексу.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
Что такое Php? PAPA212 Болталка 13 28.12.2007 20:44
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ