Автор Тема: PHP POST Variables.  (Прочитано 2355 раз)

Оффлайн kernel

  • Moderator
  • Newbie
  • *****
  • Сообщений: 39
  • kernel
    • ICQ клиент - 346797916
    • Просмотр профиля
    • Web interfaces and software development
PHP POST Variables.
« : Июль 09, 2008, 01:53:41 »
Վողջույն բարեկամներ  :)
Մի գուցե սկսում եմ շատ ՚հեշտ ու հանգիստ հարցից՚ իսկ մի գուցե ոչ.

Ինչեվիցե...

դիտարկենք հետեւյալը.
ունենք form, որը ունի ենթադրենք կամայական քանակի texfield.
փորցում ենք ստանալ պոստով, բայց գրելով տեքստի ցանկացած մասում - ' նշանը, ստանում ենք post - ից հետո
 "\'" ...

<?
$var = $_POST['textfield'];
echo $var;
// եքե գրենք "Hell'o" կստանանք - "hell\'o"
?>

frm...
<input name="textfield" type="text" id="textfield" value="<? echo $val; ?>" />
....
<input type="submit" name="button" id="button" value="Submit" />
/frm...


ես կատարում եմ հետեվյալը post - ով ստանալուց հետո:

<?
$val = str_replace("\'","'",$val);
$val = str_replace('\"','"',$val);
?>


նույնը վերաբերվում ե նաեւ " նշանին

նշեմ, որ եքե textfield - ի մեջ հետագայում փոփոխականը նորից փորցենք echo անել, ակա - " նշանը կտրում է
<input name="textfield" type="text" id="textfield" value="hell"o" />
valeu - ի սկիզբն ու վերջը....

փորցենք քննարկել... օվ ինչ առաջարկներ ու նկատողություններ ունի՞

Оффлайн xalyavshik

  • Sr. Member
  • ****
  • Сообщений: 405
  • Linux Registred User #472973
    • ICQ клиент - 757487
    • Просмотр профиля
    • GNU in Armenia
    • Email
Re: PHP POST Variables.
« Ответ #1 : Июль 09, 2008, 10:39:06 »
# killall -9 "win PC"

Оффлайн kernel

  • Moderator
  • Newbie
  • *****
  • Сообщений: 39
  • kernel
    • ICQ клиент - 346797916
    • Просмотр профиля
    • Web interfaces and software development
Re: PHP POST Variables.
« Ответ #2 : Июль 09, 2008, 11:02:59 »
Հարգելի արսեն՜ նախ հոգաչափ շնորհակալ եմ, փոստը (երը) ողջունելու համար.

PHP Post - ի վերաբերյալ.

հակառակ նյուանս N1 - Ենթադրենք, պատրաստվում է նորությունների բաժին, ու կայքի տերը (պատվիրատուն) պնդում է,
որ իր նորությունների տեքստում հաստատ հետագայում առկա են լինելու վերընշված " եւ ' նշանները.
Արսեն ջան, նման իրավիճակ ինձ հետ շատ է պատահել.

1) "  եւ ' սիմվոլները պետք է թույլատրվեն user - ին մուտքագրել.
    համենաին դեպս, դրանք տեքստերում շատ հաճախ հանդիպող նշաններ են.

2) ինչ վերաբերվում է - system("ls"); ապա նշեմ, որ PHP - ում գոյություն ունեն հետեւյալ ֆունկցիաները, վտանգը կանխելու համար.
 
    a) mysql_escape_string();
        mysql_real_escape_string();
        // կանխում է sql injection@. (եթե կարիք կա, կբացատրեմ մանրամասն)
    b) escapeshellcmd();
         // դե սրա անունը երեվի հուշում է ... կարծում եմ մեկնաբանելու կարիք չկա.

հաճույքով կպատասղանեմ այս եւ այլ հարցերին...

Оффлайн xalyavshik

  • Sr. Member
  • ****
  • Сообщений: 405
  • Linux Registred User #472973
    • ICQ клиент - 757487
    • Просмотр профиля
    • GNU in Armenia
    • Email
Re: PHP POST Variables.
« Ответ #3 : Июль 09, 2008, 11:16:52 »
ապեր հարգեցի այս հրամանների մասին չեի լսել
այսինքն այդ հրամանները պարտադիր պետք ա օգտագործել

շատ շնորհակալ եմ
 :)
# killall -9 "win PC"

Оффлайн Mesrop

  • кайферов
  • Administrator
  • Jr. Member
  • *****
  • Сообщений: 99
    • ICQ клиент - 302049440
    • MSN клиент - info@mesrop.info
    • AOL клиент - MesropMinasyan
    • Yahoo клиент - mesrop91
    • Просмотр профиля
    • Mesrop Minasyan :: Homesite
Re: PHP POST Variables.
« Ответ #4 : Июль 09, 2008, 06:16:20 »
Բարև տղեքին ;)
հետաքրքիր պոստեր եք անում ;) եսել շուշուտ կնայեմ.
Դավ, նայիր stripslashes() - function
май... май нейм из...

Оффлайн kernel

  • Moderator
  • Newbie
  • *****
  • Сообщений: 39
  • kernel
    • ICQ клиент - 346797916
    • Просмотр профиля
    • Web interfaces and software development
Re: PHP POST Variables.
« Ответ #5 : Июль 09, 2008, 06:23:29 »
Հարգանքներս Մեսրոպ ջան՜

stripslash(); ի նկատի ունեցել եմ. բայց ինչ եթե user - ը գրում է օրինակ

$var = "I love the word \wellcome\ this is fine";

հիմա ինչ էս user - ը զրկվի սլեշերից ՞

Оффлайн Mesrop

  • кайферов
  • Administrator
  • Jr. Member
  • *****
  • Сообщений: 99
    • ICQ клиент - 302049440
    • MSN клиент - info@mesrop.info
    • AOL клиент - MesropMinasyan
    • Yahoo клиент - mesrop91
    • Просмотр профиля
    • Mesrop Minasyan :: Homesite
Re: PHP POST Variables.
« Ответ #6 : Июль 09, 2008, 08:19:33 »
էէ... մոլորվա )) կարծեմ սֆթուց դրահամար պետքա addslashes anes, inq@ slashi dem@ slash a dnum, heto hanuma slashi demi slash@ u 2nde mnuma manek useri drac slash@ )))))
laver? :D
май... май нейм из...

Оффлайн kernel

  • Moderator
  • Newbie
  • *****
  • Сообщений: 39
  • kernel
    • ICQ клиент - 346797916
    • Просмотр профиля
    • Web interfaces and software development
Re: PHP POST Variables.
« Ответ #7 : Июль 10, 2008, 02:52:38 »
Ուրեմն այսպես. նախ ասեմ, որ եթե post կամ get - ից հետո, մեխանիկորեն բոլոր ", ' նշաններից առաջ հայտնվում է \ նշանը, ապա Magic Quotes արժեքը php.ini  - ում դրված է on.

; Magic quotes
;

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On

PHP սկրիպտում ունենք հնարավուրություն այն ստուգելու.

<?
// checkign is magic quotes on or off:
if(get_magic_quotes_gpc()) {
   echo "Magic quotes are enabled";
} else {
   echo "Magic quotes are disabled";
}
// kan eli function-ner,  manramasn chem meknabanum.
?>

եթե Magic quotes  - ի արժեքը off է, ապա այդ աշխատանքը կարող եք կատարել addslashes() ֆունկցիայով.
Օրինակ .
<?
$lala - addslashes($_POST['textfield']);
//$lala - stripcslashes($_POST['textfield']);
?>

Ամենահարմար մեթոդը, որը այսոր եմ ՛փորփրել՛, հետեւյալն է.

<?
// Getting posted vars.
$lala = $_POST['textfield'];
echo "after post <br>".$lala."<br>";
$lala = stripcslashes($lala);
echo "after stripcslashes()<br>".$lala."<br>";
$for_html_lala = for_html($lala);
echo "after for_html() <br>".$for_html_lala;

function for_html($var) {
$var=str_replace("'", '&#39;', $var);
$var=str_replace('"', '&#34;', $var);
return $var;
}
?>

<form id="form1" name="form1" method="post" action="">
  <input name="textfield" type="text" id="textfield" value="<? echo $for_html_lala; ?>" />
  <input type="submit" name="button" id="button" value="Submit" />
</form>

---------------------------------------------------------------------------------------------

ինչ՞ է կատարվում.

1) $lala = stripcslashes($lala); հանում է սլեշերը. ասենք եթե ունենք - Hello "My" name's \Lavrent\.
    ապա post - ից հետո կստանանք - Hello \"My\" name\'s \\Lavrent\\.
    $lala = stripcslashes($lala) - ից հետո էլ կստանանք - Hello "My" name's \Lavrent\.
    բայս եթե textfield - ի մեջ կարիք կա նորից echo անելու $lala փոփոխականը, ապա ունենում ենք րել պրոբլեմ.
    Պրոբլեմը հետեւյալն է՝ եթե տողում ունենք " նշանը, ապա  textfield - ի  value="<? echo $lala; ?>" - ի
    ժամանակ textfield - ը փչանեւմ է.
2) Հետեւաբար կստեղծենք ֆուկցիյա for_html(), որը մեզ կոգնի.
    Մանրամասն - տես PHP կոդում.

Оффлайн xalyavshik

  • Sr. Member
  • ****
  • Сообщений: 405
  • Linux Registred User #472973
    • ICQ клиент - 757487
    • Просмотр профиля
    • GNU in Armenia
    • Email
Re: PHP POST Variables.
« Ответ #8 : Июль 10, 2008, 03:11:38 »
ավելացնելու բան չակ  :)
Դավո ջան հալալ ա
# killall -9 "win PC"