[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Задание от TWINa ломайте
Игорь_Vasinsky
<?php
session_start();
$host = "localhost";
$db = "twin_base";
$user = "root";
$password = "";
$link_sql = mysql_connect($host,$user,$password) or die("Не могу соединиться с базой данных!");
$dbSelected = mysql_select_db( $db, $link_sql ) or die("База не выбрана");

if(isset($_GET['id'])){

$sql_user = "SELECT * FROM names WHERE `id` = '".$_GET['id']."'";
$sql_priew = mysql_query($sql_user);
while ( $user = mysql_fetch_array($sql_priew)){
echo "<div style='background-color:#FFF9C9; padding:5px; margin-bottom:5px'><b>Пользователь:
</b> «<font style='color:#0C00FF; font-size:18px'>"
.stripslashes($user['name'])."</font>
» <b>зарегистрирован:</b> <font style='color:#0C00FF'>"
.$user['date']."</font></div>";
}
}


if (isset($_GET['find']) && empty($_GET['find'])){$mes_find = "<b>Поиск не может осуществлятся по пустому запросу</b> !<hr />";}
else {$mes_find = "";}
if (isset($_GET['find']) && !empty($_GET['find'])){
$val = $_GET['find'];
$_GET['find'] = htmlspecialchars(($_GET['find']));
$sql_find_q = "SELECT * FROM names WHERE name LIKE '%".$_GET['find']."%'";
$sql_find = mysql_query($sql_find_q);
$num_us = mysql_num_rows($sql_find);
if ($num_us < 1){echo "<b>Результать поиска:</b> Совпадений по запросу « <font style='color:#0C00FF'>".$_GET['find']."</font> » не найдено.<hr />";}
else {
echo "<b>Запрос « <font style='color:#0C00FF'>".$_GET['find']."</font> &raquo, найдено : ".$num_us." </b>";
echo "<UL>";
while ( $users = mysql_fetch_array($sql_find)){
echo "<li>".stripslashes($users['name'])."<br />";
}
echo "</UL><hr />";
}
}


echo $mes_find;
// жаль включить нельзя sad.gif((
//if(isset($_POST['login']) && substr_count($_POST['login'], "<?")){
//echo "Здрасть. Пхпехер это ты штоль ?"; $reg = "false";
// echo " | <a href='".$PHP_SELF."?again=true'>зайти как смертный</a>"; exit;}

if(isset($_POST['login']) && !empty($_POST['login'])){$_POST['login'] = htmlspecialchars(trim($_POST['login']));}
if(isset($_GET['again']) && $_GET['again'] == "true"){unset($_SESSION['f5control']);}
if (isset($_GET['reg']) && $_GET['reg'] != 1){$message = "Руки чешуться штоли?";} // если мухлюют с GET
elseif(!isset($_GET['reg']) && !isset($_POST['login'])){$message = "Your login please here";} // режим ожидания нового юзверя
elseif(isset($_POST['login']) && strlen(trim($_POST['login'])) > 340){$message = "Борзеть то не надо,
<font style='color:red'>max 340</font> символов можно и то только для ВАС!"
; $reg = 'false';}
elseif(isset($_POST['login']) && empty($_POST['login'])){
$message = "Может введёте ваш логин ? У вас есть там кнопички с буковками ? Вот и натыкайте ваш логин."; $reg = 'false';}
else {
if(isset($_SESSION['f5control'])){
$message = "Ой..Вы кажется обновились... И данные опять отправили (sad.gif: Но мы вас записывать не будем... может <a href='".$PHP_SELF."?again=true'>зарегистрировать</a> вас под новым логином ? "; $reg = 'false'; $form="false";}
else{
$message = "Welcome <i>[ <font style='color:red'>".stripslashes($_POST['login'])."</font> ]</i> & Fhanks !"; // Если логин гостя принят
session_register("f5control");
$_SESSION['f5control']="yes";
$reg = "true";
$form = "false";
}
}


if (isset($_GET['find']) && !empty($_GET['find'])){
$val = $_GET['find'];
$val = stripslashes($val);
}
else {$val = "искать логин";}

echo $message;


if($form == "false"){echo "<br />[ <a href='".$PHP_SELF."?again=true'>вернуться</a> ]";}
else{
echo"

<form action='"
.$PHP_SELF.".?reg=1' method='POST'>
<input type='text' name='login'>
<input type='submit' value='регистрировать'>
</form>

Search users:
<form action='"
.$PHP_SELF."' method='GET'>
<input type='text' name='find' value='"
.$val."';>
<input type='submit' value='наити'>
</form>
"
;
}



$date = date('Y-m-j h:i:s');
$name = mysql_real_escape_string($_POST['login']);


if ($reg == "true"){
$sql = "INSERT INTO names (name, date) values ('".$name."', '".$date."')";
mysql_query($sql) or die("Чёт записать не могу, Хозяин.... странно");
}




echo "<hr />";
//$sql = ("SELECT * FROM names", $link_sql);
$sql2 = mysql_query("SELECT * FROM names ORDER BY `id` DESC", $link_sql);
$num_us = mysql_num_rows($sql2);
echo "<small>Зарегистрировано: [ ".$num_us." ]</small>";
if ($num_us < 1){echo "записей нет";}
else {
echo "<UL>";
while ( $users = mysql_fetch_array($sql2))
{
echo "<li> <a href='index.php?id=".$users['id']."'>".stripslashes($users['name'])."</a><br />";
}
echo "</UL>";
}

mysql_close($link_sql);

?>




Спустя 4 часа, 17 минут, 41 секунда (19.03.2010 - 07:25) twin написал(а):
Игорь, будь другом, приведи листинг в порядок. Невозможно же читать, глаза поломались. sad.gif

Спустя 1 час, 19 минут, 49 секунд (19.03.2010 - 08:44) twin написал(а):
Пока очень плохо. По порядку, повторяющиеся ошибки не комментирую.

1. Зачем изменил название базы? Это не блажь, это вопросы совместимости. У меня дома настроен полигон и мне приходится менять настройки. Ладно я, но если ты работашь в команде и будешь творить что заблагорассудится, а не то, что требуется в доках, будет крайне печально.

2. Не установлена кодировка соединения.

3. Поставь первой строчкой это
    error_reporting(E_ALL);
и полюбуйся, сколько там нотисов.

4. Для чего вот эта перезапись?
        $sql_user = "SELECT * FROM names WHERE `id` = '".$_GET['id']."'";
$sql_priew = mysql_query($sql_user);
Ты же все равно не ставишь диагностику. Целочисленное значение пихаешь в апострофах и в голом виде. Это дырка.

5. Вот тут
        while ( $user = mysql_fetch_array($sql_priew))
зачем тебе два массива? Ты же работаешь с одним - ассоциативным.

6. Это что за новости?
 stripslashes($user['name']) 
Для чего так? Попробуй зарегистрировать такое имя \ и найди его после этого.

7. Тут ты соригинальничал
    if (isset($_GET['find']) && empty($_GET['find']))

для чего две проверки то? Но суть не в этом. Я хочу найти имя 0. С какого перепуга это пустой запрос?

8.Это как понимать?
        $_GET['find'] = htmlspecialchars(($_GET['find']));
$sql_find_q = "SELECT * FROM names WHERE name LIKE '%".$_GET['find']."%'";
Если я ищу имя <twin> то в запрос ты отправляешь &lt;twin&gt; Найдет разве?

9. $PHP_SELF это что? Нет давно такого, это в 4-ке было. Вот это есть: $_SERVER['PHP_SELF'];

10. Вот это
    $date = date('Y-m-j h:i:s');
MySQL умеет делать сам. Для этого есть NOW() или TIMESTAMP

11.
mysql_query($sql) or die("Чёт записать не могу, Хозяин.... странно");
Действительно - странно... С чего бы это? А вот если с хозяином общаешься, то почему бы ему и причину странности не показать?
or die("Чёт записать не могу, Хозяин.... странно". mysql_error());


Так, это по коду. Теперь по системе.

Условия задачи соблюдены не полностью.
1. Скрипт зависим от магических кавычек
2. Данные после регистрации не возвращаются в форму.
3. Нет общего списка имен.
Цитата
Зарегистрировано: [0]записей нет

4. Скрипт на регистрацию со страницы результата поиска реагирует как на флуд.
5. Поисковик не адекватно ведет себя с такими именами, как & % _

Юзабилити хромает, стиль вообще полная каша.

Ремонтируй. smile.gif

Спустя 5 часов, 40 минут, 17 секунд (19.03.2010 - 14:25) Игорь_Vasinsky написал(а):
как тока будет время.. спасибо что уделил время.
я редкий самоучка с нелогичной логикой.

В пух и прах. Удар по самооценке. Как теперь себя в руки взять....


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.