За последние 24 часа нас посетили 51646 программистов и 1760 роботов. Сейчас ищут 870 программистов ...

msql обработка данных

Тема в разделе "PHP для новичков", создана пользователем 2Kem, 5 апр 2009.

  1. 2Kem

    2Kem Активный пользователь

    С нами с:
    18 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    Доброго времени суток Народ! Обращаюсь к тебе так как возник вопрос... Вопрос Заключается в следуещем! Есть форма на странице в одной из строк куда надо вводить информацию... надо сделать фильтрацию данных... тоесть при отправке в базу что-то что введут! она из Этого будет отправлять то что нужно!

    Пример как надо мне вводят ссылку http://dump.ru/file/11111111 и при отправке в базу проходило только 11111111

    Вот код:

    PHP:
    1. <?php header('Content-Type: text/html; charset=windows-1251'); ?>
    2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    3. <html>
    4. <head>
    5. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    6. <title>connect BD</title>
    7. </head>
    8.  
    9. <body>
    10. <?php
    11.  
    12. $err= null;
    13.  
    14.  if (isset($_POST["fam"]) && $_POST["fam"]!='')
    15.    {
    16.    $fam = $_POST["fam"];
    17.   }
    18.  else
    19.  {
    20.    $err.="Вы неввели ник!<br>";
    21.  }
    22.  
    23. if (isset($_POST["imya"]) && $_POST["imya"]!='')
    24.    {
    25.    $imya = $_POST["imya"];
    26.   }
    27.  else
    28.  {
    29.    $err.="Вы неввели Город<br>";
    30.  }
    31.  
    32. if (isset($_POST["otch"]) && $_POST["otch"]!='')
    33.    {
    34.    $otch = $_POST["otch"];
    35.   }
    36.  else
    37.  {
    38.    $err.="Вы не дали ссылку на трек<br>";
    39.  }
    40. if (isset($_POST["icq"]) && $_POST["icq"]!='')
    41.    {
    42.    $icq = $_POST["icq"];
    43.   }
    44.  else
    45.  {
    46.    $err.="Поле icq ввести обязательно<br>";
    47.  }
    48.  
    49.    $db = mysql_connect ("localhost","****","*****");
    50. mysql_query ("set character_set_client='cp1251'");
    51. mysql_query ("set character_set_results='cp1251'");
    52. mysql_query ("set collation_connection='cp1251_general_ci'");
    53. mysql_select_db ("****",$db);
    54.  
    55. $result=mysql_query("SELECT * FROM battle1 WHERE fam='$fam' AND imya='$imya' AND otch='$otch' AND icq='$icq'");
    56.  
    57. if (mysql_num_rows($result)>0) $err.="Пользователь с таким именем уже отправлял<br>";
    58.  
    59. if ($err==NULL)
    60. {
    61.  
    62.   $result = mysql_query ("INSERT INTO battle1 (fam,imya,otch,icq) VALUES ('$fam','$imya','$otch','$icq')");
    63.  
    64. }
    65.   else
    66. {
    67.     echo $err;
    68. }
    69.  
    70. ?>
    71. <META HTTP-EQUIV="Refresh" CONTENT="0; URL=http://battle1.2micro.ru/reg/track_user.php">
    72. </body>
    73. </html>
    А это код страницы откуда отправляют! дам часть лишнего ненадо!

    PHP:
    1. echo " <body bgcolor=\"999999\">
    2. <form action=\"mysql.php\" method=\"post\" >  
    3. <b>Ник участника:</b> <input type=\"text\" size=\"20\" maxlength=\"40\" name=\"fam\" /><br>
    4. <b>Город участника:</b><input type=\"text\" size=\"20\" maxlength=\"40\" name=\"imya\"  />  <br>
    5. <b>Номер ICQ:</b> <input type=\"text\" size=\"20\" maxlength=\"40\" name=\"icq\" /> <br>
    6. <b>Ссылка на трек: <br>Вставлять только цифры<br>http://dump.ru/file/1632077<br>Тоесть <font color=\"#CC0000\">1632077</b></font><input type=\"text\" size=\"20\" maxlength=\"40\" name=\"otch\" /> <br>
    7. <input name=\"sumbit\" type=\"submit\" value=\"Отправить трек\" />  <br>
    8. <b>Расположение трека строго dump.ru</b>
    9. ";
    если вы заметите то в Этом коде написанно

    <b>Ссылка на трек: <br>Вставлять только цифры<br>http://dump.ru/file/1632077<br>Тоесть <font color=\"#CC0000\">1632077</b></font>

    Много Людей не будут понимать! для Этого и нужно сделать фильтрацию... Спасибо Заранее буду благодарен помощи! :wink:
     
  2. 2Kem

    2Kem Активный пользователь

    С нами с:
    18 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    Ребят ну что не кто незнает как Это осуществить? ну все же я надеюсь найти ответ на мой вопрос! если не понятно выразился... кто Реально хочет помочь... могу более доступней обьяснить!
     
  3. Eveness

    Eveness Активный пользователь

    С нами с:
    4 апр 2009
    Сообщения:
    4
    Симпатии:
    0
    PHP:
    1. @preg_match('#([url=http://dump.ru/file/]http://dump.ru/file/[/url])?([\d].*)#i', $otch, $matches);
    Соответственно в $matches[2] будет код, в каком виде его бы не ввели, ссылка или число.
    А вообще нужно обязательно фильтровать данные из $_POST.
     
  4. 2Kem

    2Kem Активный пользователь

    С нами с:
    18 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    Извените Но я не понял(( я не такой уж phpшник даже совсем не он! можно поподробней пожалуйста?
     
  5. 2Kem

    2Kem Активный пользователь

    С нами с:
    18 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    Или народ как было бы проще сделать! Ведь ссылку что вводят она не меняется http://dump.ru/file/11111111 ! сделать так что бы в базу изо всей ссылки попадали цыфры типа отфильтровала точки и буквы оставила только цыфры! как так реализовать?
     
  6. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    проверка на int, ctype_digit, или preg_match (регулярное выражение, где пропускаем только цифпы)
     
  7. 2Kem

    2Kem Активный пользователь

    С нами с:
    18 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    Как правильно составить прег матч   $otch="http://dump.ru/file/1252289";
    preg_match_all("/\(?(\d{0})?\)?(?(1)[\-\s])\d{0}\d{7}/x", $otch, $track);

    При чем цыфры те что надо вырезать... могут менять в количестве взависимости от треков что зальют на сервер!
     
  8. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    PHP:
    1.  
    2. <?php
    3. function ClearAll($data)
    4. {
    5.     $data = preg_replace('/[^а-яА-Яa-zA-Z0-9]/ui', ' ', $data);
    6.  
    7.     return $data;
    8. }
    Удаляем все, кроме букв и цифр.
    Под себя поправишь, я думаю))
     
  9. 2Kem

    2Kem Активный пользователь

    С нами с:
    18 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    дело в том что удалять будет все кроме например цыфр! а если человек даст ссылку на другой обменник.... например там http://slil.ru/27439945 то удалит все оставив цыфры... Но ссылка будет не действительна!
     
  10. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Т.е. нужно просто выдрать все, что после последнего слеша?
     
  11. 2Kem

    2Kem Активный пользователь

    С нами с:
    18 мар 2009
    Сообщения:
    36
    Симпатии:
    0
  12. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Хм
    Кто-то из нас двоих жираф :)
     
  13. 2Kem

    2Kem Активный пользователь

    С нами с:
    18 мар 2009
    Сообщения:
    36
    Симпатии:
    0
    что такое? просто давно тут не был.... и вспомнил что доделать надо)))