Помогите разобратся с циклами

Discussion in 'PHP' started by Foster, 22 Jan 2007.

  1. Foster

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

    Joined:
    14 Jul 2005
    Messages:
    79
    Likes Received:
    10
    Reputations:
    2
    Предположим в таблице forum есть поля forum_id, forum_name, forum_moderators.
    forum_id - номер форума;
    forum_name - имя форума
    forum_moderators - модераторы форума (admin, admin2, user, lamer)
    Вобщем я пытался накалбасить скриптик каторый бы обновлял обновлял все разделы сразу.. но так ничего и не вышло, может быть ваша помощь мне поможет?!
    Вот кусок кода
    PHP:
    <?

    ...

    //Сначала получаем список форумов и их модераторов
    $query = mysql_query("SELECT * FROM `forum` ORDER by `forum_id` ASC");
    $Xquery = mysql_fetch_array($query);
    $row = mysql_num_rows($query);
    echo 
    '<form name=update>';
    //затем используем циклы для вывода на экран всех форумов и их модеров

    for($y=1; $y<=$row; $y++)
    {
     echo
    '<tr bgcolor="000000"><td><font color="FF9900"><b>'.$Xquery['forum_id'].'';
     echo
    '<td><font color="FF9900"><b>'.$Xquery['forum_name'].'</td>';
     echo
    '<td style="width:13"><font color="FF9900"><input type="hidden" name="forum_id" value="'.$Xquery['forum_id'].'"><input type="text" name="forum_moderators" value="'.$Xquery['forum_moderators'].'">';
     
    $Xquery = mysql_fetch_array($query);
    }
    echo 
    '<input type=submit value=update>';
    //Вот отсюда собственно и начинаются проблемы, мне нужно что бы обновился КАЖДЫЙ раздел форума, а не один
    $update = mysql_query("UPDATE `forum` SET `forum_moderators` = '".$forum_moderators."' WHERE `forum_id` = '".$forum_id."'")

    ...

    ?>
    Заранее благадарствую!
     
    #1 Foster, 22 Jan 2007
    Last edited by a moderator: 22 Jan 2007
  2. Foster

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

    Joined:
    14 Jul 2005
    Messages:
    79
    Likes Received:
    10
    Reputations:
    2
    и ещё одно... можно ли с помощью пхп шифровать информацию, не хешировать а именно зашифровывать..? например я хочу зашифровать при помощи пароля текст в файле mess.txt а потом таким же образом востановить...
    ЗЫ: base64_encode, md5, crypt не предлогать =)

    Нашол кое че, да вот помоему чето не робит

    PHP:
    // encode function - encodes text to quet sequre text 

    // 

    function encrypt( &$ftext, $fkey='fenyxxxx' ){ 

    $prevchr=0; 

    $answ=''; 


    if (
    $im = strlen($ftext)) { 

    $k=0; 


    for(
    $i=0;$i<$im;$i++){ 

    $thischr = ord(substr($ftext,$i,1)) + $prevchr; 

    if(isset(
    $fkey[$k])){ 

    $key_chr=ord($fkey[$k])+ord($fkey[$k+1])+ord($fkey[$k+2])-ord($fkey[$k+3]);} 

    else{
    $k=0;$key_chr=ord($fkey[$k]);$fkey=substr($fkey,1).$fkey[0]; 

    }; 

    $key_chr=$key_chr+$old_chr^$i; 

    $old_chr = checkbit($key_chr, 7) + 

    checkbit($key_chr, 64)*$fkey[1] + 

    checkbit($key_chr, 1)*$fkey[2] + 

    checkbit($key_chr, 32)*$fkey[3] + 

    checkbit($key_chr, 2)*$fkey[4] + 

    checkbit($key_chr, 8)*$fkey[5] + 

    checkbit($key_chr, 128)*$fkey[7] + 

    checkbit($key_chr, 4)*$fkey[6]; 


    $k++; $thischr=$thischr+$key_chr; 

    $prevchr = checkbit($thischr, 16) + 

    checkbit($thischr, 64)*2 + 

    checkbit($thischr, 1)*4 + 

    checkbit($thischr, 32)*8 + 

    checkbit($thischr, 2)*16 + 

    checkbit($thischr, 8)*32 + 

    checkbit($thischr, 128)*64 + 

    checkbit($thischr, 4)*128; 


    $answ .= chr($prevchr); 

    } 

    } 

    return 
    $answ; 

    } 


    // 

    // decode function. decodes encoded data 

    // 

    function decrypt( &$ftext, $fkey='fenyxxxx' ){ 

    $prevchr=0; 

    $old_prevchr=0; 

    $answ=''; 


    if (
    $im = strlen($ftext)) { 

    $k=0; 

    for(
    $i=0;$i<$im;$i++){ 

    $thischr = ord(substr($ftext,$i,1)); 

    if(isset(
    $fkey[$k])){$key_chr=ord($fkey[$k])+ord($fkey[$k+1])+ord($fkey[$k+2])-ord($fkey[$k+3]);}else{$k=0;$key_chr=ord($fkey[$k]);$fkey=substr($fkey,1).$fkey[0];}; 


    $key_chr=$key_chr+$old_chr^$i; 

    $old_chr = checkbit($key_chr, 7) + 

    checkbit($key_chr, 64)*$fkey[1] + 

    checkbit($key_chr, 1)*$fkey[2] + 

    checkbit($key_chr, 32)*$fkey[3] + 

    checkbit($key_chr, 2)*$fkey[4] + 

    checkbit($key_chr, 8)*$fkey[5] + 

    checkbit($key_chr, 128)*$fkey[7] + 

    checkbit($key_chr, 4)*$fkey[6]; 


    $k++; 


    $prevchr = checkbit($thischr, 4) + 

    checkbit($thischr, 16)*2 + 

    checkbit($thischr, 128)*4 + 

    checkbit($thischr, 32)*8 + 

    checkbit($thischr, 1)*16 + 

    checkbit($thischr, 8)*32 + 

    checkbit($thischr, 2)*64 + 

    checkbit($thischr, 64)*128; 

    $prevchr=$prevchr-$key_chr; 

    $answ .= chr($prevchr-$old_prevchr); 

    $old_prevchr = $thischr; 

    } 

    } 

    return 
    $answ; 

    } 


    function 
    checkbit( $num1, $num2 ) { 

    return ( 
    $num1 & $num2 ? 1 : 0 ); 

    }
     
    #2 Foster, 22 Jan 2007
    Last edited: 22 Jan 2007
  3. flipper

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

    Joined:
    5 Sep 2006
    Messages:
    131
    Likes Received:
    85
    Reputations:
    29
    Есть функции ENCODE и DECODE
    Code:
    $CCKey="se2sdlg34ejuc4uk4tr4ic47sjm2yh7o9e80sp80r8o0d8uc7t76i6on68s";
    $UpdateSQL="UPDATE $ClientsTableName SET CCNum=ENCODE('$CCNum', '$CCKey') WHERE ClientID='$ClientID'";
    $rs = $conn->Execute("SELECT *, DECODE(CCNum, '$CCKey') AS DecodeCCNum FROM $ClientsTableName WHERE ClientID='$ClientID'");
    
     
    #3 flipper, 22 Jan 2007
    Last edited: 22 Jan 2007
  4. D1mOn

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

    Joined:
    2 Oct 2005
    Messages:
    380
    Likes Received:
    144
    Reputations:
    29
    Foster напиши свой алгоритм шифрования =)
     
  5. Raz0r

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

    Joined:
    7 Jan 2007
    Messages:
    126
    Likes Received:
    20
    Reputations:
    0
    Code:
    //Вот отсюда собственно и начинаются проблемы, мне нужно что бы обновился КАЖДЫЙ раздел форума, а не один
    $update = mysql_query("UPDATE `forum` SET `forum_moderators` = '".$forum_moderators."' WHERE `forum_id` = '".$forum_id."'")
    
    Запихай $update в foreach
     
  6. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    PHP:
    UPDATE `forum` SET `forum_moderators` = '".$forum_moderators."' WHERE 1
    =) по идее должно обновиться все
     
  7. Raz0r

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

    Joined:
    7 Jan 2007
    Messages:
    126
    Likes Received:
    20
    Reputations:
    0
    вопрос - а нахер делать модераторов если ты их будешь ставить модераторами во ВСЕ разделы, создай просто группу с доступом модерским и делов-то
     
  8. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    Насчет обратимого шифрования, я так понял именно оно тебе нужно. предлагаю так
    PHP:
    <?php 
    // Зашифровываем пароль 
    $user_password = "31337"; 
    $key = "Это секретный ключ"; 
    // Шифруем пароль с использованием ключа $key 
    $user_crypt = mcrypt_ecb(MCRYPT_3DES, $key, $maks_password, 
    MCRYPT_ENCRYPT); 
    echo 
    "Зашифрованный пароль - ".$user_crypt; 
    // Расшифровываем пароль 
    $user_crypt= mcrypt_ecb (MCRYPT_3DES, $key, $user_crypt, 
    MCRYPT_DECRYPT); 
    echo 
    "Расшифрованный пароль - ".$user_crypt; 
    ?>