প্রশ্ন উত্থাপন


19

আমি জানি যে আপনি সর্বদা ওয়েব প্রক্সি হিসাবে জীবনের আনন্দগুলি উপভোগ করার ট্রায়াল এবং কষ্টের কথা ভেবেছিলেন। সত্যি বলতে কী নেই? আজ আপনি এই লক্ষ্যটি উপলব্ধি করার দায়িত্ব অর্পণ করেছেন (কমপক্ষে এটির একটি অংশ)। ওয়েবসাইট এক্স দৈনিকে প্রচুর ট্র্যাফিক পেয়েছে এবং প্রচুর সংখ্যক ব্যবহারকারী যারা ক্যোয়ারী প্যারামিটারগুলির মাধ্যমে সংবেদনশীল তথ্য পাস করার জন্য জোর করে (ব্যবহারকারীরা নির্বোধ) কারণ এটি একটি PaaS (স্পষ্টতই এটি একটি পরিষেবা হিসাবে প্রক্সি হিসাবে বোঝায়) খুঁজছেন। আপনার কাজটি হ'ল অনুরোধটি মূল গন্তব্যে পৌঁছে দেওয়ার আগে অনুরোধটি থেকে যে কোনও এবং সমস্ত সংবেদনশীল ক্যোয়ারী প্যারামিটারগুলি সরিয়ে ফেলতে হবে।

ইনপুট

  • আরএফসি 3986 ধারা 3- এ ইউআরআই ব্যাকরণ অনুসরণ করে এমন একটি সু- গঠনযুক্ত পরম HTTP URL ।
    • আপনি ধরে নিতে পারেন কোনও খণ্ড নেই
    • সংক্ষিপ্ত বিন্যাসের উদাহরণ যেখানে বর্গাকার বন্ধনীগুলির কোনও কিছুই alচ্ছিক নির্দেশ করে: http[s]://[user:pass@]host.name.com[:port]/[?param1=value1&param2=value2...]
  • মুছে ফেলার জন্য ক্যোয়ারী প্যারামিটারগুলির একটি তালিকা।

আউটপুট

ইনপুট তালিকায় নির্ধারিত পরামিতিগুলি ছাড়াই পরিবর্তিত HTTP URL।

উদাহরণ

http://example.com/ [foo]
> http://example.com/

http://example.com/?foo=bar []
> http://example.com/?foo=bar

http://example.com/ []
> http://example.com/

http://example.com/?foo=1&bar=2&baz=3 [foo,baz]
> http://example.com/?bar=2

http://example.com/?foo=1&bar=2&baz=3 [foo,bar,baz]
> http://example.com/

http://example.com/?foo&bar=2&baz= [foo,baz]
> http://example.com/?bar=2

http://example.com/?abc=1&def=2&baz=foo [foo,bar]
> http://example.com/?abc=1&def=2&baz=foo

http://example.com/?foobar=baz [foo]
> http://example.com/?foobar=baz

http://foo:foo@foo.com:8080/?foo=1&bar=foo [foo]
> http://foo:foo@foo.com:8080/?bar=foo

স্কোরিং

এটি , তাই সংক্ষিপ্ত উত্তরটি (বাইটে) জেতে।


1
আমি কি আলাদা আলাদা লাইনে ইউআরএল এবং ক্যোয়ারীর প্যারামিটারগুলি পেতে পারি?
সেশোমারা

1
&প্যারামিটারগুলির মধ্যে ছাড়া অন্য কোথাও উপস্থিত হতে পারে?
রিলি

এছাড়াও পাসওয়ার্ড একটি থাকতে পারে ?? অর্ডারটিও কি এমনভাবে রাখা উচিত?
কার্লকাস্টর

@ রিলে নং যদি &কোয়েরি প্যারামিটারের অংশ হয় তবে এটি সঠিকভাবে urlencod করা উচিত%26
পোকে

1
স্পষ্টতই, http://foo:&foo=x@foo.com:8080/?foo=1&bar=fooআরএফসি দ্বারা অনুমোদিত। এটি বিদ্যমান সমাধানগুলির একগুচ্ছ ভাঙ্গা উচিত। : ডি (এই নিয়মটি ব্যবহারকারীর তথ্য সংরক্ষণযোগ্য বা পিসিটি-অব্যাহতি বা সাব-ডিলিম হিসাবে প্রসারিত হতে পারে এবং উপ-ডিলিমগুলি থাকতে পারে &এবং =)
nhh'a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

উত্তর:


6

জিএনইউ 98 98 88 80 77 74 69 59 54 (48 + 1 ফর -আর) 49 sed

:;s,(.+)(=[^&]*[& ]|&)(.*)\1,\3 ,
t;s,[?&]? .*,,

অপসারণের জন্য পরামিতিগুলির তালিকা ফাঁক দিয়ে পৃথক করা হয়েছে।

$ echo 'http://example.com/?foo=1&bar=2&baz=3 foo bar baz' | sed -rf sed.txt
http://example.com/

$ echo 'http://example.com/?foo&bar=2&baz= foo baz' | sed -rf sed.txt
http://example.com/?bar=2

$ echo 'http://example.com/' | sed -rf sed.txt
http://example.com/

আপনার বর্তমান কোড সম্পাদনায়, ওপি-র প্রশ্ন থেকে একাধিক পরীক্ষা ফলাফল URL এর একটি অনুগামী &বা ?চরিত্র দেয়।
সেশোমারা

@ সশৌমারা আমি নিশ্চিত যে আমি কীভাবে এটি মিস করেছি ... ভাগ্যক্রমে এটি কেবল 1 বাইটের পার্থক্য।
রিলে

আপনার সম্পাদনা ইতিহাসে 96, 77 এবং 59 বাইট কোড সংস্করণ পাওয়া যায় না। সম্পাদনা 7 শিরোনাম 6 সম্পাদনার তুলনায় 10 বাইট কম দেখিয়েছিল, তবে কোডটি পরিবর্তন করা হয়নি। আমি নিটপিক করছি যদিও দুর্দান্ত গল্ফিং!
সেশোমারা

1
@ সেশোমারা আমার মনে হয় এটি কিছু সম্পাদনা সংযুক্ত করেছে কারণ সেগুলি অপ্রাপ্তবয়স্ক (কেবল কয়েকটি অক্ষর মুছে ফেলা)।
রাইলে

@ সেশোমারা আমার ধারণা এটি আসলে এগুলি সংযুক্ত করে কারণ আমি একে অপরের 5 মিনিটের মধ্যে একাধিক সম্পাদনা করেছি।
রাইলে

5

জাভাস্ক্রিপ্ট (ES6), 62 60 বাইট

f=
(s,a,u=new URL(s))=>a.map(e=>u.searchParams.delete(e))&&''+u
;
s.value=document.URL;
<div oninput=o.textContent=f(s.value,a.value.split`\n`)><input id=s><br><textarea id=a></textarea><pre id=o>

সম্পাদনা: @ শেগি ধন্যবাদ 2 বাইট সংরক্ষণ করা।


আপনি .hrefশেষে বামে 5 বাইট সংরক্ষণ করতে পারেন ।
শেগি

@ শেগি এই স্ট্রিংটি ফিরিয়ে দেবে না ... আমি ধরে নিছিলাম যে এটি অনুমোদিত নয়।
নীল

এটি নির্ভর করে আপনি কীভাবে এটি আউটপুট করেন। উদাহরণস্বরূপ, আপনি যদি alertএটি ব্যবহার করেন বা এটি কোনও (পাঠ্য) নোডের মধ্যে সন্নিবেশ করান তবে এটি আপনাকে hrefবস্তুর সম্পত্তি দেবে । আপনি যদি এটি কনসোলে লগ করেন তবে তা আপনাকে সম্পূর্ণ বস্তুটি দেবে। এই ঝাঁকুনি দেখুন ।
শেগি

1
@ শেগি আহ, তাই আমি অবশ্যই স্পষ্ট করে 2 বাইট সংরক্ষণ করতে পারি, ধন্যবাদ
নীল

3

পিএইচপি, 90 বাইট

<?=trim(preg_replace("#(?<=\?|&)(".join("|",$_GET[r]).")(=.*)?(&|$)#U","",$_GET[u]),"?&");

-11 বাইট থাকলে? বা & শেষে অনুমোদিত হয়

পূর্ববর্তী সংস্করণ 140 বাইট

<?=substr($u=$_GET[u],0,strpos($u,"?")+!!$j=join("&",preg_grep("#^(".join("|",$_GET[r]).")(=|$)#",explode("&",parse_url($u)[query]),1))).$j;

+2 বাইট: বিকল্পগুলি অবশ্যই প্রথম বন্ধনীযুক্ত হতে হবে, বা ^/ (.*|$)প্রথম / শেষ বিকল্পের অংশ হবে।
তিতাস

-2 বাইট: অপসারণ .*অথবা (-5) (=.*|$)দিয়ে প্রতিস্থাপন করুন \b
তিতাস

আপনার regexp দেখতে অনুরূপ #^foo|bar(=.*|$)#যা অনুরূপ #(^foo)|(bar=.*|bar$))#। তবে তা হওয়া উচিত #(foo|bar)(=.*|$)#
তিতাস

@ টিটাস আপনি আমার ভুল বলেছেন
জার্গ হালসারম্যান

চমৎকার! আমি জোরের কথা ভাবিনি; এ কারণেই আমি কেন পিছিয়ে পড়লাম array_map(এবং আমি অবাক হয়েছি যে এটি কীভাবে সংক্ষিপ্ত হতে পারে)।
তিতাস

2

পিএইচপি, 120 110 বাইট

preg_replace এবং অ্যারে ফাংশন সঙ্গে: (দ্বারা অনুপ্রাণিত Jörg )

<?=preg_replace(array_map(function($s){return"#(\\?|&)$s(=.*)?(&|$)#U";},array_slice($argv,2)),"\1",$argv[1]);

ফাইল এ সংরক্ষণ করুন, সাথে কল করুন php <scriptname> <uri> <parametername> <parametername> ...

parse_str এবং http_build_query (120 বাইট) সহ:

parse_str(end($u=explode('?',$argv[1])),$a);for($i=$argc;$i-->1;)unset($a[$argv[$i]]);echo"$u[0]?".http_build_query($a);

সাথে চালানো php -r <code> <uri> <parametername> <parametername> ...


parse_str? http_build_query? কেউ কেউ কাজের গল্ফ এমনকি কাজের গল্ফে কাজের জন্য সঠিক সরঞ্জামগুলি ব্যবহার করে দেখে আমি খুব আনন্দিত। ইউআরএল / এসকিউএল ক্যোয়ারী / রেজিএক্সপ্যাক / এইচটিএমএল বেকিং হওয়া বাগগুলি কেবলমাত্র "কেবল স্ট্রিং" হিসাবে সহজেই প্রতিরোধযোগ্য numerous
দায়েরডেমান্ডে

আরও অনুপ্রেরণার জন্য হতে পারে। আমি আপনাকে পেয়েছি
Jörg Hülsermann

@ লিন ডোন´ আমার সাথে লাঞ্ছিত করার চেয়ে আরও ভাল কিছু করার কী আছে?
তিতাস

2

জাভা 7, 127 বাইট

String a(String a,String[]b){for(String c:b)a=a.replaceAll("(?<=[?&])"+c+"(=[^&]*)?(&|$)","");return a.replaceAll("[?&]$","");}

ব্যাখ্যা

String sanitize(String url, String[] params) {
    for (String param : params) {
        // please don't modify function parameters in real code
        url=url.replaceAll("(?<=[?&])" // Look for a leading ? or & but don't consume it
            + param                    // Consume the key of the query param (assuming key=value syntax)
            + "(=[^&]*)?"              // Consume the value of the query param if it exists
            + "(&|$)","");             // Consume the trailing & unless we're at the end of the url and replace with nothing
    }
    url = url.replaceAll("[?&]$",""); // If we remove all of the params then we'll have a trailing ? which needs to be removed
                                      // If we remove the last param only then we could have a trailing & which also needs to be removed
                                      // We will only run into one of these scenarios
    return url;
}

Ideone


এটি আপনার 4 র্থ, 5 ম, 6 ষ্ঠ এবং 9 ম উদাহরণগুলি ব্যর্থ করে দেয় ওও আমি জাভা 8 ব্যবহার করছি, তবে এটি হতে পারে। যদিও সি # সমতুল্য চেষ্টা করেছে এবং এটি একই ক্ষেত্রে ব্যর্থ হয়েছে, তাই আইডুন্নো।
ইয়োডল

1
কোনও বিষয় নয়, আমি যেভাবে এটি পরীক্ষা করছিলাম তাতে গোলমাল।
ইয়োডল

2

সি #, 377 336 330 328 বাইট (173 ওয়েল)

string n(string u,string[]r){var s=u.Split('?');if(s.Length<2)return u;var a=s[1].Contains("&")?s[1].Split('&'):new string[]{s[1]};int B=a.Length,i=0,C=i,c=B;for(;i<B;i++)foreach(var R in r)if(R==a[i].Split('=')[0]){a[i]="";c--;}var t=s[0];t+=c>0?"?":"";for(i=0;i<a.Length;i++)if(a[i]!=""){t+=a[i];C++;if(C!=c)t+="&";}return t;}

অসমাপ্ত পুরো প্রোগ্রাম:

using System;
class a
{
    static void Main()
    {
        string input = Console.ReadLine();
        string url = input.Split(' ')[0];
        string r = input.Split(' ')[1];
        r = r.Replace("[", "").Replace("]","");
        string[] remove = r.Split(',');
        a b = new a();
        Console.WriteLine(b.n(url, remove));
    }
    string n(string u,string[]r)
    {
        var s=u.Split('?');
        if(s.Length<2)return u;
        var a=s[1].Contains("&")?s[1].Split('&'):new string[]{s[1]};
        int B=a.Length,i=0,C=i,c=B;
        for(;i<B;i++)
            foreach(var R in r)
                if(R==a[i].Split('=')[0])
                {
                    a[i]="";
                    c--;
                }
        var t=s[0];
        t+=c>0?"?":"";
        for(i=0;i<a.Length;i++)
            if(a[i]!="")
            {
                t+=a[i];
                C++;
                if (C!=c)t+="&";
            }
        return t;
    }
}

সম্ভবত খুব দক্ষ নয়, তবে এটি কাজ করে বলে আমি মনে করি।

বিকল্পভাবে, জাভা থেকে @ পোকের পদ্ধতিটি ব্যবহার করে একটি 173 বাইট সমাধান রয়েছে। যদিও রেজেক্সের জন্য একটি আমদানি প্রয়োজন, তাই সম্ভবত সংক্ষিপ্ত হতে পারে না।

using System.Text.RegularExpressions;string m(string a,string[]b){foreach(var c in b)a=Regex.Replace(a,$"(?<=[?&]){c}(=[^&]*)?(&|$)","");return Regex.Replace(a,"[?&]$","");}

2

রুবি, 146 140 127 119 116 113 বাইট

সম্পাদন করা 2: ব্যবহার করে 6 বাইট সংরক্ষিত $1, $2এবং $*, এবং 7 পরিবর্তন করে x.split("=")[0]থেকে x[/\w+/]
সম্পাদন করা 3: ব্যবহার দ্বারা সংরক্ষিত 6 বাইট *পরিবর্তে .join, অপ্রয়োজনীয় স্পেস থেকে 2 বাইট সংরক্ষিত
সমতুল্য করার ইনলাইন (পরিবর্তিত Regex reformulating দ্বারা সংরক্ষিত 3 বাইট: সম্পাদন করা 4 $*[1][/([^?]*)\??(.*)/,1]এবং করা হিসাবে নির্ধারিত a)
সম্পাদনা 5: ($*[2].scan(r=/\w+/)&[x[r]])[0]পরিবর্তে ব্যবহার করে 3 বাইট সংরক্ষণ করা$*[2].scan(r=/\w+/).include?(x[r])

প্রোগ্রামটি চলাকালীন ইনপুট ধরে নেওয়া:

a,b=$*[1][/([^?]*)\??(.*)/,1],$2.split("&").reject{|x|($*[2].scan(r=/\w+/)&[x[r]])[0]}*"&"
puts(b[0] ?a+"?"+b: a)

ব্যাখ্যা

a,b=$*[1][/([^?]*)\??(.*)/,1],$2.split("&")

এই URL টি কমান্ড লাইন দেওয়া, এবং মধ্যে দোকান ম্যাচ parses $1এবং $2$*[1][/([^?]*)\??(.*)/,1]প্রথম ম্যাচটি ভিতরে সঞ্চয় করার জন্যও ফেরত দেয় a, যখন দ্বিতীয় ম্যাচটি $2 point 1 পয়েন্ট হিসাবে চিহ্নিত হয় এবং bঅ্যারের অ্যারেতে পার্স করে ...

.reject { |x|

... সব প্রত্যাখ্যান করা হচ্ছে ...

    ($*[2].scan(r=/\w+/)&[x[r]])[0]

... '=' এর আগে একটি স্ট্রিং থাকে যা দ্বিতীয় প্যারামিটারের দেওয়া নামের তালিকায় অন্তর্ভুক্ত থাকে ... এটি কাজ করে কারণ আমরা শব্দগুলির জন্য স্ক্যান করি (তালিকা পেতে) তারপরে শব্দটি পাওয়া যায় =এবং দেখুন কিনা শব্দটি তালিকায় রয়েছে &। যেহেতু &"পাওয়া যায়নি" (নাল সেট) এ খালি অ্যারেটি ফেরত দেয় তাই অ্যারেতে nilকোনও উপাদান নেই কিনা তা জানতে আমরা নীচে বর্ণিত কৌশলটি ব্যবহার করি । অন্যথায় আমরা একটি স্ট্রিং প্রত্যাবর্তন করি, যা সত্য হিসাবে গণ্য হয়, যা সেই স্ট্রিংটিকে প্রত্যাখ্যান করে।

}*"&"

... এবং 'এবং' এর সাথে বাকী স্ট্রিংগুলিতে যোগদান করুন

এই মুহুর্তে, bURL- এর জিইটি কোয়েরি স্ট্রিং। সুতরাং, আমাদের কেবল এটি মুদ্রণ করা প্রয়োজন।

puts(b[0] ?a+"?"+b: a)

এটি রুবিতে একটি কৌশল ব্যবহার করে। b[0]হতে হবে nilযদি খ একটি খালি বিন্যাস বা স্ট্রিং। সুতরাং যদি এটি সত্য , (না nilবা false), তবে অ্যারেতে কমপক্ষে একটি উপাদান রয়েছে, সুতরাং আমাদের a+"?"+bসঠিক URL টি রাখা দরকার। অন্যথায়, আমরা কেবল রাখি a, কারণ দেখানোর মতো কোনও পরামিতি নেই

দ্রষ্টব্য: এই উত্তরটি ধরে নিয়েছে ? কোয়েরি থেকে URL টি সীমাবদ্ধ করা ছাড়া কোথাও উপস্থিত হতে পারে না । (আমি লিঙ্কযুক্ত আরএফসি থেকে যা পড়েছি সে অনুযায়ী)

এছাড়াও, এটি আমার প্রথম গল্ফ উত্তর: ডি


2
পিপিসিজিতে আপনাকে স্বাগতম!
এক্রোলিথ

1

বীচি , 46 বাইট

কমান্ড-লাইন আরোগুলি থেকে অপসারণের জন্য স্টিডিন থেকে URL এবং ক্যোয়ারী প্যারামিটার নেয়।

YgqR`\?.+`{s:J_@`^[^=]+`NIyFI@>a^'&[s&'?sJ'&]}

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

 g               Local variable containing list of cmdline args
Y                Yank into global variable y so it's available inside the function
  q              Grab a line of stdin
   R`\?.+`{...}  Do a regex replace of everything from ? on, using a callback function:

s:J_@`^[^=]+`NIyFI@>a^'&[s&'?sJ'&]
                  @>a^'&            All but 1st char of match, split on &
                FI                  Filter on this function:
   _@`^[^=]+`                         Regex match: run of non = from beginning of string
                                      @ returns a list (here, of one item), so...
  J                                   Join to get a scalar
             NIy                      True if match not in y; false if in y
s:                                  Assign the filtered list to s
                        [        ]  Return a list containing:
                         s&'?       ? if s is nonempty, [] otherwise
                             sJ'&   s joined on &
                                    When used as a replacement, a list is first stringified
                                    (which, in the absence of flags, means concatenated)

1

পাওয়ারশেল ভি 3 +, 115 90 বাইট

param($n,$z)$a,$b=$n-split'\?';($z|%{$b=$b-replace"(^|&)$_(=[^&]*)?(&|$)"});$a+"?"*!!$b+$b

পরামিতিগুলি সরানোর $nজন্য URL $zহিসাবে এবং স্ট্রিংগুলির আক্ষরিক অ্যারে হিসাবে ইনপুট নেয় । -splitইনপুট ইউআরএল চালু করে ?, প্রথমার্ধটিকে $aদ্বিতীয় ভাগে সংরক্ষণ করে $b

এরপরে, প্রতিটি নিষিদ্ধ ক্যোয়ারী শব্দের সরানোর জন্য একটি রেগেক্স সম্পাদন $bকরে পুনরায় তৈরি করা হয় । তারপর, আউটপুট (অপরিবর্তিত), প্লাস একটি কিনা উপর নির্ভর করে বিদ্যমান, প্লাস একটি কিনা উপর নির্ভর করে বিদ্যমান, প্লাস `$ x এর।$z-replace$a/$b?$x


1

পাইথ - 27 বাইট

কেনি ঠিক তখন ছিলেন যখন তিনি বিল্টিনকে রূপান্তর করতে এবং তারপরে উল্টানো সম্পর্কে কথা বলেন, যদিও এটি সঠিকভাবে করা খুব শক্ত হবে।

.sjK\?mj\&f!}hcT\=Qcd\&czKK

টেস্ট স্যুট


1

রেটিনা , 44 48 বাইট

ক্রসড আউট 44 এখনও 44 the ফিক্সটির জন্য মার্টিনকে ধন্যবাদ।

[?&](?>([^ =&]+))[^ &]*(?=.* \1( |$))| .*

/&
/?

ইনপুট লাগে uri param1 param2এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

প্রথম প্রতিস্থাপন কোয়েরি স্ট্রিং থেকে উপযুক্ত প্যারামিটারগুলি মুছে দেয়। [?&](?>([^ =&+))[^ &]*একটি ?বা মেলে& , একটি সম্পূর্ণ পরামিতি নাম, এবং ( allyচ্ছিকভাবে ) =এবং একটি মানের সাথে ক্যাপচার গ্রুপে প্যারামিটারের নামটি সংরক্ষণ করে Then (?=.* \1( |$))যদি কোনও প্যারামিটার এই শর্তগুলির সাথে মেলে, তবে এটি সরানো হবে (একটি খালি প্রতিস্থাপনের পরিবর্তে))

বিকল্পগুলি অ-ওভারল্যাপিং (চেহারাটির দিকে ধন্যবাদ) এবং বাম থেকে ডানে অগ্রসর হয়। ইউআরএল এর শেষে পৌঁছে, .* শাখাটি মুছে ফেলার জন্য পরামিতিগুলির তালিকার সাথে মিলে যায় এবং এটি মুছে ফেলা হয়।

দ্বিতীয় প্রতিস্থাপনটি নিশ্চিত করে ?যে প্রথম প্যারামিটারটি মোছা থাকলে নতুন ক্যোয়ারিং স্ট্রিংটি শুরু হয়েছিল starts


আমি মনে করি এটি যদি পরামিতিগুলি তালিকার শেষে উপস্থিত হয় (যেমন retina.tryitonline.net/… চেষ্টা করুন ) para এটির সমাধানের একটি উপায় হ'ল গ্রুপ 1 টি মোড়ানো (?>...)
মার্টিন ইন্ডার

নন-ব্যাকট্র্যাকিং স্যুবপ্রেসশনগুলি সম্পর্কে @ মার্টিন ইন্ডার টিআইএল ধন্যবাদ!
DLosc

0

জাভা 7, 203 বাইট

String f(String u,List p)throws Exception{String[]g=u.split("\\?",2);String s="";if(g.length>1)for(String q:g[1].split("&")){if(p.indexOf(q.split("=")[0])<0){s+=s.isEmpty()?"?":"&";s+=q;}}return g[0]+s;}

Ungolfed:

  String f(String u, List p) throws Exception {
    String[] g = u.split("\\?", 2);
    String s = "";
    if (g.length > 1) for (String q : g[1].split("&")) {
      if (p.indexOf(q.split("=")[0]) < 0) {
        s += s.isEmpty() ? "?" : "&";
        s += q;
      }
    }
    return g[0] + s;
  }

এই ফাংশনটি সমস্ত পরীক্ষায় পাস করে।



0

পিএইচপি, প্রতিযোগিতা নয়

এই জন্য হেক, পিএইচপি তৈরি করা হয়েছিল; আসল ইউআরএল কেন ব্যবহার করবেন না?

<?foreach($_GET[x]as$w)unset($_GET[$w]);
echo http,s[$_SERVER[SERVER_PORT]-443],"://",
$u=$_SERVER[PHP_AUTH_USER],($p=$_SERVER[PHP_AUTH_PW])?":$p":"","@"[!$u&!$p],
"$_SERVER[HTTP_HOST]$_SERVER[SCRIPT_NAME]?",http_build_query($_GET);

ফাইলে সংরক্ষণ করুন, আপনার পছন্দসই কোয়েরি স্ট্রিং প্লাসের সাথে কল করুন &x[]=x&x[]=<exclude1>&x[]=<exclude2>&...

ব্যবহারকারীর নাম এবং পাসওয়ার্ডে ব্যর্থ হতে পারে (অন্যথায় আপনার ব্রাউজারগুলি সেগুলি সরিয়ে দেয় বা না) depending
হবে ব্যর্থ হন পাসওয়ার্ড 0

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.