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

KORLEONE

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

И приведите пжл пример если не трудно)
 
PHP:
$link=mysql_connect('данные для подключения к БД');
insert_rand_data($link);
 
function insert_rand_data($link){
$zapr="INSERT IGNORE INTO dbname SET port=".rand(27000, 27099);
$res=mysql_query($zapr, $link);
if ( mysql_insert_id($link)==0 ){ // такой порт уже есть в базе
    insert_rand_data($link); // пробуем вставить новый порт   
    }
echo 'Вставили';
}

На колонку port надо поставить индекс с параметром UNIQUE

Есть особенность. Скрипт никогда не закончит работу, когда будут заполнены все порты на интервале от 27000 до 27099.
 
Так, я все-таки проверил и у меня пых ну ни в какую функцию insert_rand_data() кушать не желает
кусается и гавкает мол чего мне суешь )
 
Какую ошибку выдает? Я это в браузере писал без отладки.
 
php не видит эту функцию. Покажите полностью ваш код.
 
Ну вот, изначальный

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";
 
Назад
Сверху