За последние 24 часа нас посетили 16978 программистов и 1699 роботов. Сейчас ищет 951 программист ...

Индефиционный номер для каждого пользователя

Тема в разделе "Вопросы от блондинок", создана пользователем xkspy, 5 янв 2007.

  1. xkspy

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

    С нами с:
    16 дек 2006
    Сообщения:
    45
    Симпатии:
    0
    Как каждому пользователю вписать индивидуальный индифиционный номер, внутри его конфицируемого файла (где записывется адрес почты, сайт и т.д.)?
     
  2. Vitas

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

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
  3. xkspy

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

    С нами с:
    16 дек 2006
    Сообщения:
    45
    Симпатии:
    0
    выше указаные ссылки понятны.
    Но там я например ненашел именно нужного, а точнее мне надо, чтобы при регистрации пользователя, в его файл конфигурации записывался его ID (как происходит на большитсва форумах).
     
  4. Mavir

    Mavir Guest

    http://php.net/fwrite
    На большинстве форумах используют базы данных.
     
  5. xkspy

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

    С нами с:
    16 дек 2006
    Сообщения:
    45
    Симпатии:
    0
    У меня как раз без БД (нет MySQL).
    Уже читал эту ссылку, но там же записывается указаное слово
    PHP:
    1. $somecontent = "Добавить это к файлу\n";
    , а мне надо чтобы он каждый раз, каждому пользователю его индивидуальный (номер ID) записывал.
     
  6. Mavir

    Mavir Guest

    $somecontent = "Вставьте сюда свой ID\n";
     
  7. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    xkspy

    мм, ты хочешь понять, как ID-шники присваивать пользователям?

    ну, есть два варианта:
    1) хранить в файле последний использованный ID номер, при новой регистрации - считывать его, увеличивать на единицу, записывать обратно и юзать
    2) делать md5-хеш из всех данных формы + time() + IP + случайное число.
    3) ненадежный вариант - использовать как ID - time() в момент регистрации.. хотя, если два пользователя будут регистрироваться в 1 секунду, то оба получат 1 ID...
     
  8. eduha

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

    С нами с:
    8 ноя 2006
    Сообщения:
    278
    Симпатии:
    0
    Адрес:
    Караганда
    Тогда вместо time() лучше использовать microtime()
    Вероятность совпадения уменьшается в разы.
     
  9. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    eduha

    а лучше всего - вариант два. с несколькими случайными числами)
     
  10. xkspy

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

    С нами с:
    16 дек 2006
    Сообщения:
    45
    Симпатии:
    0
    Есть ли примеры на эти варианты?

    Ага.
     
  11. Vitas

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

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Можно в качестве ID использовать логин, только это чревато тем, что если пользователь сменит имя (если это возможно), то придется везде изменять его логин.
     
  12. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    xkspy

    вариант 2
    PHP:
    1. <?php
    2. function new_user_id($login,$pwd,$mail,$ip,$dr){
    3. //получаем UNIX TIMESTAMP
    4. $time = time();
    5. //генерируем 3 случайных числа от 0 до 10^16-1
    6. $contr_id = rand(0,999999999999999);
    7. $contr_id2 = rand(0,999999999999999);
    8. $contr_id3 = rand(0,999999999999999);
    9. //генерируем еще 1 случайное число от 0 до 100
    10. $contr3 = round(rand(0,99)*10);
    11. //преобразуем параметры в массив, в произвольные места добавляя 3 "больших" случайных числа
    12. $arr = array($login,$contr_id2,$pwd,$mail,$ip,$contr_id3,$dr,$time,$contr_id);
    13. //преобразовываем массив, элементы которого пересортированы случайным образом, в строку, с разделителем - случайное число от 1 до 99
    14. $str = join($contr3,shuffle($arr));
    15. //вовзращаем это число обратно в виде md5-хеша.
    16. return md5($str);
    17. }
    18. ?>
    проверка входящих данных - на твоей совести:)
    вероятность повтора - вероятность повтора настолько мала, что о ней можно забыть..

    вызываешь функцию:

    PHP:
    1. $new_id = new_user_id([i]параметры[/i]);
     
  13. eduha

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

    С нами с:
    8 ноя 2006
    Сообщения:
    278
    Симпатии:
    0
    Адрес:
    Караганда
    Нафига еще случайные числа?

    microtime не повторяется вообще ;)
     
  14. Mavir

    Mavir Guest

    Извращенец
    http://php.net/uniqid
     
  15. xkspy

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

    С нами с:
    16 дек 2006
    Сообщения:
    45
    Симпатии:
    0
    У меня как раз так и стоит, но меня так не устраевает, т.к. когда пользователь ставит себе аватр он записывает его под логином, а в при присутсвии кирилических символов, аватр в скрипте не отоброжается.

    Почему я и хочу, чтобы еще в файл конфигурации пользователя, записывалось еще число его индифидуальное, чтобы это число потом и присваивалось к аватору пользователя, как на форумах.
    DarkElf, спасибо за варианты, буду рассматривать.
     
  16. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    xkspy

    если проблема только в кириллице, то можно делать так: md5($login); результат - в любом случае буквы + цифры
     
  17. Vitas

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

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    PHP:
    1. <?php
    2.  
    3. $uri = "imgs/привет это мой логин, ХАХАХА!!!.gif" // Пипец, тут усе пошти по-русски
    4.  
    5. echo urlencode ($uri);
     
  18. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    +1

    Код (Text):
    1. fread
    2. ++
    3. fwrite
     
  19. xkspy

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

    С нами с:
    16 дек 2006
    Сообщения:
    45
    Симпатии:
    0
    Дополнительный транслейтор надо дописывать, имя потом в последствии будет высвечивать нормально?
    Vitas, что-то я непонял, что ты хотел этим сказать...
     
  20. Vitas

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

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Думаешь, я сам понял? Туплю, бывает...
     
  21. MaXyC_Web_Studio

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

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    плакалЬ :lol:
     
  22. xkspy

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

    С нами с:
    16 дек 2006
    Сообщения:
    45
    Симпатии:
    0
    Рыдать буду...

    Как внедрить, вот это код (от DarkElf):
    PHP:
    1. <?php
    2. function new_user_id($login,$pwd,$mail,$ip,$dr){
    3. //получаем UNIX TIMESTAMP
    4. $time = time();
    5. //генерируем 3 случайных числа от 0 до 10^16-1
    6. $contr_id = rand(0,999999999999999);
    7. $contr_id2 = rand(0,999999999999999);
    8. $contr_id3 = rand(0,999999999999999);
    9. //генерируем еще 1 случайное число от 0 до 100
    10. $contr3 = round(rand(0,99)*10);
    11. //преобразуем параметры в массив, в произвольные места добавляя 3 "больших" случайных числа
    12. $arr = array($login,$contr_id2,$pwd,$mail,$ip,$contr_id3,$dr,$time,$contr_id);
    13. //преобразовываем массив, элементы которого пересортированы случайным образом, в строку, с разделителем - случайное число от 1 до 99
    14. $str = join($contr3,shuffle($arr));
    15. //вовзращаем это число обратно в виде md5-хеша.
    16. return md5($str);
    17. }
    18. ?>
    В данный код... Здесь $name при регистрации на кирилице, не высвечивает картинку. Вот я и хочу, чтобы был у каждого номер.
    PHP:
    1. <?php exit; }
    2.   if ((get_ui($name,"ava") != "close") and ($f !="")){
    3.     # Можно загружать аватар
    4.    $avaf = $a_s_p.$f;
    5.     $avap = $ava_p.$name."_ava.gif";
    6.     if (file_exists($avaf)){
    7.       if (!copy($avaf, $avap))
    8.             { ?>Ошибка установки картинки.<br><?php }
    9.         else{
    10.           echo "<br><img src=".$avap."><br>";
    11. ?>
     
  23. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    xkspy

    PHP:
    1. <?php
    2. ...
    3. $avap = $ava_p.md5($name)."_ava.gif";
    4. ...
    5. ?>
     
  24. xkspy

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

    С нами с:
    16 дек 2006
    Сообщения:
    45
    Симпатии:
    0
    DarkElf, отлично! Спасибо!

    Маленькая загвоздка получилась. В данном скрипте имеется код:
    PHP:
    1. <script>
    2. <!--
    3. function sn(s){ s=s+', '; ff = parent.bottomframe.bottomform.words;ff.focus();ff.value = s;}
    4. function ms(c,a,n,cn,i,cw,fw,sf,bi,w,t){
    5.  dc = parent.bodyframe.document; a_s =''; i_s=''; bi_s1=''; bi_s2='';
    6.  if (c == 0){
    7. if (a == 1){a_s='<img src=ava/'+n+'_ava.gif border=0>';}
    8. ...
    9. ...
    Так вот, там где раньше был $name, в этом скрипте, теперь +n+ отображает картинку с именем. Как заставить +n+ шифроватся тоже в md5?

    Вот так неполучается:
    PHP:
    1. <?php echo md5(+n+); ?>
    Шифрует как +n+ для всех пользователей.
     
  25. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    у тебя n откуда берется?