PDA

Просмотр полной версии : Помогите разобратся с циклами


Foster
22.01.2007, 01:28
Предположим в таблице forum есть поля forum_id, forum_name, forum_moderators.
forum_id - номер форума;
forum_name - имя форума
forum_moderators - модераторы форума (admin, admin2, user, lamer)
Вобщем я пытался накалбасить скриптик каторый бы обновлял обновлял все разделы сразу.. но так ничего и не вышло, может быть ваша помощь мне поможет?!
Вот кусок кода

<?

...

//Сначала получаем список форумов и их модераторов
$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."'")

...

?>


Заранее благадарствую!

Foster
22.01.2007, 02:19
и ещё одно... можно ли с помощью пхп шифровать информацию, не хешировать а именно зашифровывать..? например я хочу зашифровать при помощи пароля текст в файле mess.txt а потом таким же образом востановить...
ЗЫ: base64_encode, md5, crypt не предлогать =)

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


// 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 );

}

flipper
22.01.2007, 09:51
и ещё одно... можно ли с помощью пхп шифровать информацию, не хешировать а именно зашифровывать..? например я хочу зашифровать при помощи пароля текст в файле mess.txt а потом таким же образом востановить...
ЗЫ: base64_encode, md5, crypt не предлогать =)


Есть функции ENCODE и DECODE
$CCKey="se2sdlg34ejuc4uk4tr4ic47sjm2yh7o9e80sp80r8o0d8uc7t 76i6on68s";
$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'");

D1mOn
22.01.2007, 13:37
Foster напиши свой алгоритм шифрования =)

Raz0r
22.01.2007, 14:15
//Вот отсюда собственно и начинаются проблемы, мне нужно что бы обновился КАЖДЫЙ раздел форума, а не один
$update = mysql_query("UPDATE `forum` SET `forum_moderators` = '".$forum_moderators."' WHERE `forum_id` = '".$forum_id."'")

Запихай $update в foreach

blackybr
22.01.2007, 15:54
UPDATE `forum` SET `forum_moderators` = '".$forum_moderators."' WHERE 1

=) по идее должно обновиться все

Raz0r
22.01.2007, 15:59
вопрос - а нахер делать модераторов если ты их будешь ставить модераторами во ВСЕ разделы, создай просто группу с доступом модерским и делов-то

blackybr
22.01.2007, 15:59
Насчет обратимого шифрования, я так понял именно оно тебе нужно. предлагаю так

<?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;
?>