[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. -m0rgan-

    -m0rgan- Elder - Старейшина

    Joined:
    29 Sep 2008
    Messages:
    514
    Likes Received:
    170
    Reputations:
    17
    Вот еще появился вопрос по этому скрипту:
    Редириктить то оно редириктит, но не при всех не правильных значениях...
    Мне нужно, чтобы параперт id принимал только числовые значения, при подстановке каких либо символов он редиректил...
    в даный момент редириктин при таком запросе:

    http://localhost/news.php?id=-25

    а при http://localhost/news.php?id=25'
    страница остается в прежнем состояие...
    можно ли сделать так, чтобы при определенных значениях id редиректило?
     
  2. Кубик Рубик

    Joined:
    10 Apr 2008
    Messages:
    48
    Likes Received:
    0
    Reputations:
    0
    Привет, я создаю двуязычную версию сайта, русский и английский. Мне нужно чтобы каждый из них индексировался поисковиками как отдельный сайт. Поэтому я все же решил использовать поддомены. Так вопрос как мне это сделать(?lang=ru перенести на ru.site.com)?
     
  3. SVAROG

    SVAROG Elder - Старейшина

    Joined:
    13 Feb 2007
    Messages:
    424
    Likes Received:
    86
    Reputations:
    -1
    у меня в этом деле опыта небыло, но идея такая появилась
    допустим такой участок кода <title>".$title."</title>
    и есть два файла, в одном русский язык в другом анг
    например в eng.php будет:
    $title="My Site";
    а в rus.php
    $title="Мой сайт";
    и потом в зависимости от того на каком языке должен быть сайт инклудишь тот или иной файл
    Думаю идея понятна
     
  4. -m0rgan-

    -m0rgan- Elder - Старейшина

    Joined:
    29 Sep 2008
    Messages:
    514
    Likes Received:
    170
    Reputations:
    17
    и есче подскажите плиз скрипт, который записывает ип в логи!
     
  5. Winst0n

    Winst0n Elder - Старейшина

    Joined:
    19 Aug 2008
    Messages:
    92
    Likes Received:
    5
    Reputations:
    0
    разобрался :)
     
    #8625 Winst0n, 22 Feb 2009
    Last edited: 22 Feb 2009
  6. Zedi

    Zedi Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    если просто последовательно соединить то вот
    PHP:
    <?php 
    include('../bd.php'); 
    if (isset(
    $_POST['id'])) {$id $_POST['id'];}
    if (isset(
    $id))
    {
    $result mysql_query ("DELETE FROM a WHERE id='$id'");
    if (
    $result == 'true') {echo "<p>del</p>";}
    else {echo 
    "<p>del</p>";}
    }         
    else 
    {
    ?>
    <form action="del.php" method="post">
    <? 
    $result = mysql_query("SELECT title,id FROM a");      
    $myrow = mysql_fetch_array($result);
    do 
    {
    printf ("<p><input name='id' type='radio' value='%s'><label> %s</label></p>",$myrow["id"],$myrow["title"]);
    }
    while ($myrow = mysql_fetch_array($result));
    ?>
    <input name="submit" type="submit" value="удалить">
    </form>
    <?php
    }     
    ?>  
    если не так то объясни как тебе надо
     
    #8626 Zedi, 22 Feb 2009
    Last edited: 22 Feb 2009
  7. D Mak

    D Mak Elder - Старейшина

    Joined:
    23 Jun 2007
    Messages:
    136
    Likes Received:
    27
    Reputations:
    0
    PHP:
    <?
    include(
    '../bd.php');  
    if(!empty(
    $_POST)) {
    if (isset(
    $_POST['id'])) {$id $_POST['id'];} 
    if (isset(
    $id)) 

    $result mysql_query ("DELETE FROM a WHERE id='$id'"); 
    if (
    $result == 'true') {echo "<p>del</p>";} 
    else {echo 
    "<p>del</p>";} 
    }          
    else  

    echo 
    "<p>no =\</p>"
    }     
    } else : 
    ?>
    <form action="del.php" method="post"> 
    <?  
    $result = mysql_query("SELECT title,id FROM a");       
    $myrow = mysql_fetch_array($result); 
    do  

    printf ("<p><input name='id' type='radio' value='%s'><label> %s</label></p>",$myrow["id"],$myrow["title"]); 

    while ($myrow = mysql_fetch_array($result)); 
    ?> 
    <input name="submit" type="submit" value="удалить"> 
    </form>
    <? endif; ?>

     
  8. Winst0n

    Winst0n Elder - Старейшина

    Joined:
    19 Aug 2008
    Messages:
    92
    Likes Received:
    5
    Reputations:
    0
    разобрался :)
     
    #8628 Winst0n, 22 Feb 2009
    Last edited: 22 Feb 2009
  9. -m0rgan-

    -m0rgan- Elder - Старейшина

    Joined:
    29 Sep 2008
    Messages:
    514
    Likes Received:
    170
    Reputations:
    17
    Спасибо!
    А как сделать, чтоб записался запрос сделаний до редирикта на страницу в которой это записуется?
    идея такова:
    при попытке провеления атаки будет редериктить на страницу с сообщением, на которой будут записыватся даные атакующего...
    зарание спасибо!
     
  10. Shadow_p1raT

    Shadow_p1raT Elder - Старейшина

    Joined:
    9 Mar 2008
    Messages:
    174
    Likes Received:
    93
    Reputations:
    0
    добавь после даты
    PHP:
    $_SERVER['HTTP_REFERER']
     
    1 person likes this.
  11. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    вот несколько конкретных решений:

    №1 тут я просто $id прописал если надо другое сам пропишеш $_post['id'] или $_get['id']

    PHP:
    if (isset($id) && is_numeric($id)){
    //обрабатываеш числовое ID вот такое: http://localhost/news.php?id=25'  здесь уже не пройдет
    }
    else {
        exit(
    'hello!');// если ID не числовое
    }
    №2 вместо(вместе c) is_numeric можно использовать регулярку

    PHP:
    if (isset($id) && is_numeric($id) && preg_match("/^[0-9]+$/i",$id)) {
    //обрабатываеш числовое ID вот такое: http://localhost/news.php?id=25'  здесь уже не пройдет
    }
    else {
        exit(
    'hello!');// если ID не числовое
    }

    №3 совсем конкретизируем второй вариант:

    PHP:
    if (isset($id) && is_numeric($id) && preg_match("/^[0-9]+$/i",$id)) {
    //обрабатываеш числовое ID вот такое: http://localhost/news.php?id=25'  здесь уже не пройдет

    switch ((integer)$id){
      case 
    1//если ИД = 1
        
    echo "строка один<br>";
        
    //еще что то делаеш
        
    echo "строка два и т.д.";
        break;
      case 
    4:  //если ИД = 4
        
    echo "4 строка один<br>";
        
    //еще что то делаеш
        
    echo "4 строка два и т.д.";
        break;
      default: 
    //если id не равно одному из вушеперечисленных значений
        
    Echo"ID is not correct;";
        break;
        }
    }
    else {
        exit(
    'hello!');// если ID не числовое
    }
     
    _________________________
    2 people like this.
  12. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    KIR@PRO Омг, а еще более извращенно слабо? Можно разбить еще строку на составляющие, а потом каждый знак сравнивать - число это или нет.

    -m0rgan-

    PHP:
    error_reporting(0);
    include
    "config.php";
    $id=intval($_GET['id'])>intval($_GET['id']) : 0// Вся соль тут)
    if($id) {
    echo 
    $news
    $query "SELECT * FROM news where `id`='".$id."'";
    $result mysql_query($query);
    while (
    $row mysql_fetch_array($result)) :
    цикл...
    endwhile;
    } else {
    header('Location: heck.php');} 
     
    _________________________
    #8632 Gifts, 22 Feb 2009
    Last edited: 22 Feb 2009
  13. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    я привел ему пару примеров простой средний и 100500% безопасный вариант


    p.s. приходится так изощьряться потомучто нет 100% уверенности в том, что в функциях isset(), is_numeric(), preg_match() нет приватных уязвимостей... поэтому я добавил switch
     
    _________________________
    1 person likes this.
  14. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359

    хм странно но почему то при ?id=3 и вообще ?id=(ТОЛЬКО ЧИСЛО) все время редиректит, но когда не число тоже редиректит) ищи ошибку....


    вообще не пойму смысла вот этого: ? intval($_GET['id']) : 0

    intval() если id не число всеравно вернет 0
     
    _________________________
    #8634 KIR@PRO, 22 Feb 2009
    Last edited: 22 Feb 2009
  15. fatalo

    fatalo Elder - Старейшина

    Joined:
    15 May 2008
    Messages:
    45
    Likes Received:
    46
    Reputations:
    5
    Вопросец,какая функция в пхп отвечает за сохранение определенного файла на сервер?(допустим,я подставляю ссылку в запрос,и скрипт сохраняет содержимое ссылке ко мне на винт)
     
  16. Zedi

    Zedi Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    Прочитай про fopen fwrite file_get_contents
     
  17. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    ты как то запутался в одном предложении тебе на винт сервера сохранить надо или всетаки всоего компа(клиента)??
     
    _________________________
  18. [JavaScript]

    [JavaScript] Member

    Joined:
    14 Feb 2009
    Messages:
    45
    Likes Received:
    22
    Reputations:
    1
    KIR@PRO, а если его винт и есть сервер.
     
  19. fatalo

    fatalo Elder - Старейшина

    Joined:
    15 May 2008
    Messages:
    45
    Likes Received:
    46
    Reputations:
    5
    [JavaScript],ты прав.
    А вот я что-то туплю.
     
  20. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    KIR@PRO Все работает, а про число - сильно сомневаюсь, что в БД будут отрицательные ID
    PHP:
    $id=intval($_GET['id'])>intval($_GET['id']) : 0;
    if(
    $id) {
    echo 
    '------'.$id.'--------';
    } else {
    header('Location: heck.php');die;}  
     
    _________________________
    2 people like this.
Thread Status:
Not open for further replies.