У меня небольшой вопросик)

Тема в разделе "Как сделать...", создана пользователем KORLEONE, 15 апр 2012.

  1. KORLEONE

    KORLEONE Писатель

    Регистр.:
    22 мар 2012
    Сообщения:
    1
    Симпатии:
    0
    Привет) у мне небольшой вопросик как сделать - Чтобы при нажатии кнопки *Установить сервер*
    в БД user в строчку port записывался порт от 27000 до 27099 выданный рандомно и самое главное чтобы порты не повторялись у других юзеров?

    И приведите пжл пример если не трудно)
     
  2. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    PHP:
    $link=mysql_connect('данные для подключения к БД');
    insert_rand_data($link);
     
    function 
    insert_rand_data($link){
    $zapr="INSERT IGNORE INTO dbname SET port=".rand(2700027099);
    $res=mysql_query($zapr$link);
    if ( 
    mysql_insert_id($link)==){ // такой порт уже есть в базе
        
    insert_rand_data($link); // пробуем вставить новый порт   
        
    }
    echo 
    'Вставили';
    }
    На колонку port надо поставить индекс с параметром UNIQUE

    Есть особенность. Скрипт никогда не закончит работу, когда будут заполнены все порты на интервале от 27000 до 27099.
     
  3. KORLEONE

    KORLEONE Писатель

    Регистр.:
    22 мар 2012
    Сообщения:
    1
    Симпатии:
    0
    Так, я все-таки проверил и у меня пых ну ни в какую функцию insert_rand_data() кушать не желает
    кусается и гавкает мол чего мне суешь )
     
  4. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    Какую ошибку выдает? Я это в браузере писал без отладки.
     
  5. KORLEONE

    KORLEONE Писатель

    Регистр.:
    22 мар 2012
    Сообщения:
    1
    Симпатии:
    0


    Fatal error: Call to undefined function insert_rand_data() in ...
     
  6. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    php не видит эту функцию. Покажите полностью ваш код.
     
  7. KORLEONE

    KORLEONE Писатель

    Регистр.:
    22 мар 2012
    Сообщения:
    1
    Симпатии:
    0
    Ну вот, изначальный

    PHP:
    <?php
    session_start
    ();
    set_time_limit(0);
    include (
    "bd.php");if (isset($_GET['id'])) {$id =$_GET['id']; }
    else
    { exit(
    "Error");}
    if (!
    preg_match("|^[\d]+$|"$id)) {
    exit(
    "<p>Неверный формат запроса! Проверьте URL</p>");
    }
     
    if (!empty(
    $_SESSION['login']) and !empty($_SESSION['password']))
    {
    $login $_SESSION['login'];
    $password $_SESSION['password'];
    $result2 mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
    $myrow2 mysql_fetch_array($result2);
    if (empty(
    $myrow2['id']))
      {
      exit(
    "Вход на эту страницу разрешен только зарегистрированным пользователям!");
     
      }
    }
    else {
    //Проверяем, зарегистрирован ли вошедший
    exit("Вход на эту страницу разрешен только зарегистрированным пользователям!"); }
    $result mysql_query("SELECT * FROM users WHERE id='$id'",$db);
    $myrow mysql_fetch_array($result);//Извлекаем все данные пользователя с данным id
     
     
     
    ?>
     
    <html>
    <head>
    <title><?php echo $myrow['login']; ?></title>
    <script type="text/javascript" src="view.js"></script>
    <title>Панель управления</title>
    <link rel="stylesheet" type="text/css" href="images/view.css" media="all">
    <script type="text/javascript" src="view.js"></script>
    </head>
    <body>
     
    <body id="main_body" >
        <div id="form_container">
                            <div class="form_description">
    <center><h2>Установка сервера</h2></center>
                                                <p></p>
                            </div>
     
     
    <?php
    print <<<HERE
    HERE;
     
    if (
    $myrow['login'] == $login) {
     
    print <<<HERE
     
    <center><h3>Установка идет в течении 15 секунд</h3></center>
    <center><img src="images/ajax-loader-small.gif" align="center"></center>
    <head><meta http-equiv="Refresh" content="15; URL=index.php""></head>
     
     
    HERE;
    //копирование сервера
    $old_dir "install/cs/";
    $new_dir "servers/$login/cs";
     
    foreach(new 
    RecursiveIteratorIterator(new RecursiveDirectoryIterator($old_dir)) as $f) if($f->isFile()) {
      
    $f_name=rtrim($new_dir,'/').next(explode(realpath($old_dir),$f->getRealPath(),2));
      
    is_dir(dirname($f_name)) || mkdir(dirname($f_name),0755,true);
      
    copy($f->getPathname(),$f_name);
    }
     
     
     
        
    mysql_query("UPDATE users SET cs='1' WHERE login='$login'",$db); //ставим значение пользователю
     
    }
     
    ?>
    <img src="images/network2.png" align="right">
    <div id="footer">
     
     
            </div>
    </body>
    </html>
    Вот я и хотел, чтобы при установке(создание сервера) давался рандомный порт )
    $переменная = директория "servers/$login/cs/$port";