ক্লায়েন্ট-সাইড এবং সার্ভার-সাইড প্রোগ্রামিংয়ের মধ্যে পার্থক্য কী?


498

আমার এই কোডটি রয়েছে:

<script type="text/javascript">
    var foo = 'bar';
    <?php
        file_put_contents('foo.txt', ' + foo + ');
    ?>

    var baz = <?php echo 42; ?>;
    alert(baz);
</script>

এটি কেন আমার পাঠ্য ফাইলে "বার" লিখবে না, তবে "42" সতর্ক করে?


এনবি: এই প্রশ্নের পূর্বে সংশোধনগুলি ক্লায়েন্টের সার্ভারে পিএইচপি এবং জাভাস্ক্রিপ্ট সম্পর্কে স্পষ্টভাবে ছিল। সমস্যা এবং সমাধানগুলির অপরিহার্য প্রকৃতি কোনও ক্লায়েন্টের সাথে এবং অন্যটি সার্ভারে চলমান থাকলেও (ভাষাটি একই ভাষা হলেও) কোনও যুগল ভাষার ক্ষেত্রে একই। যখন আপনি নির্দিষ্ট ভাষা সম্পর্কে কথা বলার উত্তরগুলি দেখেন তবে এটিকে অ্যাকাউন্টে আনুন।

উত্তর:


460

আপনার কোডটি দুটি সম্পূর্ণ আলাদা অংশে বিভক্ত, সার্ভারের পাশ এবং ক্লায়েন্টের দিক

                    |
               ---------->
              HTTP request
                    |
+--------------+    |    +--------------+
|              |    |    |              |
|    browser   |    |    |  web  server |
| (JavaScript) |    |    |  (PHP etc.)  |
|              |    |    |              |
+--------------+    |    +--------------+
                    |
  client side       |      server side
                    |
               <----------
          HTML, CSS, JavaScript
                    |

উভয় পক্ষই এইচটিটিপি অনুরোধ এবং প্রতিক্রিয়াগুলির মাধ্যমে যোগাযোগ করে। পিএইচপি সার্ভারে নির্বাহ করা হয় এবং কিছু এইচটিএমএল এবং সম্ভবত জাভাস্ক্রিপ্ট কোড আউটপুট দেয় যা ক্লায়েন্টের প্রতিক্রিয়া হিসাবে প্রেরণ করা হয় যেখানে এইচটিএমএল ব্যাখ্যা করা হয় এবং জাভাস্ক্রিপ্ট কার্যকর করা হয়। পিএইচপি একবার প্রতিক্রিয়া আউটপুট শেষ করার পরে, স্ক্রিপ্টটি শেষ হয় এবং কোনও নতুন এইচটিটিপি অনুরোধ না আসা পর্যন্ত সার্ভারে কিছুই হবে না।

উদাহরণ কোডটি এভাবে কার্যকর করে:

<script type="text/javascript">
    var foo = 'bar';
    <?php
        file_put_contents('foo.txt', ' + foo + ');
    ?>

    var baz = <?php echo 42; ?>;
    alert(baz);
</script>

পদক্ষেপ 1, পিএইচপি <?php ?>ট্যাগগুলির মধ্যে সমস্ত কোড চালায় । ফলাফল এটি:

<script type="text/javascript">
    var foo = 'bar';

    var baz = 42;
    alert(baz);
</script>

file_put_contentsকল কিছু ঘটাতে না, এটা শুধু একটা ফাইলে, "+ foo বিন্যাস" লিখেছেন। <?php echo 42; ?>কল আউটপুট "42", যা স্পট যেখানে যে কোড ব্যবহার করা হয় এখন ঘটে।

এই ফলস্বরূপ এইচটিএমএল / জাভাস্ক্রিপ্ট কোডটি এখন ক্লায়েন্টকে পাঠানো হয়েছে, যেখানে এটি মূল্যায়ন হয়। alertকল কাজ করে, যখন fooপরিবর্তনশীল যে কোন স্থানে ব্যবহার করা হয় না।

সমস্ত পিএইচপি কোডটি ক্লায়েন্ট এমনকি জাভাস্ক্রিপ্টের কোনও কার্যকর করতে শুরু করার আগেই সার্ভারে কার্যকর করা হয়। জাভাস্ক্রিপ্টের সাথে ইন্টারেক্ট করতে পারে এমন প্রতিক্রিয়ায় কোনও পিএইচপি কোড বাকী নেই।

কিছু পিএইচপি কোড কল করতে, ক্লায়েন্টকে সার্ভারে একটি নতুন এইচটিটিপি অনুরোধ পাঠাতে হবে। এটি তিনটি সম্ভাব্য পদ্ধতির একটি ব্যবহার করে ঘটতে পারে:

  1. একটি লিঙ্ক, যার ফলে ব্রাউজারটি একটি নতুন পৃষ্ঠা লোড করে।
  2. একটি ফর্ম জমা, যা সার্ভারে ডেটা জমা দেয় এবং একটি নতুন পৃষ্ঠা লোড করে।
  3. একটি এজেএক্স অনুরোধ, যা সার্ভারে নিয়মিত এইচটিটিপি অনুরোধ করার জন্য জাভাস্ক্রিপ্ট কৌশল (যেমন 1. এবং 2. উইল) তবে বর্তমান পৃষ্ঠাটি ছাড়াই।

বৃহত্তর বিশদে এই পদ্ধতিটির রূপরেখার একটি প্রশ্ন এখানে রয়েছে

আপনি জাভাস্ক্রিপ্ট ব্যবহার করে ব্রাউজারটিকে একটি নতুন পৃষ্ঠা খুলতে window.locationবা কোনও ফর্ম জমা দিয়ে, সম্ভাবনার অনুকরণ 1 এবং 2 তৈরি করতে করতে পারেন।


1
আপনি যদি দ্বিতীয় পৃষ্ঠাগুলিও খুলতে window.openবা আইফ্রেমে একটি পৃষ্ঠা লোড করতে পারেন।
jcubic

যোগাযোগ পদ্ধতির তালিকায় এটি ওয়েবসকেটগুলি যুক্ত করার উপযুক্ত হতে পারে।
কুইন্টিন

ড্রপ ডাউন মানগুলি jquery এর মাধ্যমে আপডেট হওয়ার কথা যদি হয়। যখন ব্যবহারকারী পদক্ষেপ 2 করেন A অথবা এটি পিএইচপি-তে দৃশ্যমান হবে না কারণ এটি জকিউয়ের মাধ্যমে ডোমে যুক্ত হয়েছিল? @ ডেসেজ
ফ্যাব্রিকিও

@ ফ্যাব্রিকিও একটি এইচটিপি অনুরোধ <form>তথ্য থেকে তৈরি করা হবে এবং সার্ভারে প্রেরণ করা হবে। আপনি জাভাস্ক্রিপ্ট ব্যবহার করে ফর্মগুলিতে আলাদা আলাদা ডেটা রাখার জন্য হেরফের করতে পারেন। হ্যাঁ, ডেটা জমা দেওয়ার সময় এটি যদি সঠিকভাবে ফর্মের অংশ হয় তবে ফলাফলটি এইচটিটিপি অনুরোধের অংশ হবে; এটি আসল এইচটিএমএলতে ছিল বা জাভাস্ক্রিপ্টের মাধ্যমে পরে যুক্ত হয়েছে তা বিবেচ্য নয়।
প্রতারণা করুন

163

জাভাস্ক্রিপ্ট কোডে পিএইচপি কোড কেন কাজ করে না তা নির্ধারণের জন্য আমাদের বুঝতে হবে ক্লায়েন্টের পাশ এবং সার্ভারের পাশের ভাষাগুলি কী এবং তারা কীভাবে কাজ করে।

সার্ভার-সাইড ল্যাঙ্গুয়েজ (পিএইচপি ইত্যাদি) : তারা ডাটাবেসগুলি থেকে রেকর্ডগুলি পুনরুদ্ধার করে, রাষ্ট্রবিহীন এইচটিটিপি সংযোগের উপরে রাষ্ট্র বজায় রাখে এবং সুরক্ষার প্রয়োজন এমন অনেকগুলি কাজ করে do তারা সার্ভারে থাকে, এই প্রোগ্রামগুলিতে তাদের উত্স কোডটি কখনই ব্যবহারকারীর সামনে থাকে না।

উইকিপিডিয়া_এইচটিটিপি থেকে চিত্র: //en.wikedia.org/wiki/File: স্কীম_ডিনামিক_পেজ_েন.এসভিজি চিত্র অনুগ্রহকারী

সুতরাং আপনি সহজেই দেখতে পারেন যে সার্ভারের সাইডের ভাষাগুলি এইচটিটিপি অনুরোধগুলি পরিচালনা করে এবং সেগুলি প্রক্রিয়া করে, এবং যেমন @ ডিজেজ বলেছেন, পিএইচপি সার্ভারে কার্যকর হয় এবং কিছু এইচটিএমএল আউটপুট করে এবং সম্ভবত জাভাস্ক্রিপ্ট কোড, যা ক্লায়েন্টের প্রতিক্রিয়া হিসাবে প্রেরণ করা হয়, যেখানে এইচটিএমএল ব্যাখ্যা করা হয় এবং জাভাস্ক্রিপ্ট কার্যকর করা হয়।

অন্যদিকে, ক্লায়েন্ট সাইড ল্যাঙ্গুয়েজগুলি (জাভাস্ক্রিপ্টের মতো) ব্রাউজারে থাকে এবং ব্রাউজারে চালিত হয়। ক্লায়েন্ট-সাইড স্ক্রিপ্টিং সাধারণত ওয়েবে কম্পিউটার প্রোগ্রামগুলির ক্লাসকে বোঝায় যা ক্লায়েন্ট-সাইড কার্যকর করা হয়, ব্যবহারকারীর ওয়েব ব্রাউজার দ্বারা, সার্ভার-সাইডের পরিবর্তে

জাভাস্ক্রিপ্ট ব্যবহারকারীর কাছে দৃশ্যমান এবং সহজেই সংশোধন করা যায়, তাই সুরক্ষার জন্য আমাদের জাভাস্ক্রিপ্টের উপর নির্ভর করতে হবে না।

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

গ্রাফিকাল উপস্থাপনা

চিত্র উত্স

সুতরাং এখন যদি আমি পিএইচপি প্রয়োজন হয় আমি কি করতে পারি? এটি আপনার কীভাবে করা দরকার তা নির্ভর করে: হয় পৃষ্ঠাটি পুনরায় লোড করে বা একটি এজেএক্স কল ব্যবহার করে।

  1. আপনি পৃষ্ঠাটি পুনরায় লোড করে এবং এইচটিটিপি অনুরোধ প্রেরণ করে এটি করতে পারেন
  2. আপনি জাভাস্ক্রিপ্ট দিয়ে একটি এজেএক্স কল করতে পারেন - এটি পৃষ্ঠা পুনরায় লোড করার প্রয়োজন হয় না

ভাল পড়ুন:

  1. উইকিপিডিয়া: সার্ভার-সাইড স্ক্রিপ্টিং
  2. উইকিপিডিয়া: ক্লায়েন্ট-সাইড স্ক্রিপ্টিং
  3. মাদারা উচিহ: ক্লায়েন্ট সাইড এবং সার্ভার সাইড প্রোগ্রামিংয়ের মধ্যে পার্থক্য

30

আপনার জাভাস্ক্রিপ্ট সার্ভারে নয়, ক্লায়েন্টের উপর কার্যকর করা হবে। এই যে মানেfoo সার্ভারের দিক থেকে মূল্যায়ন করা হয়নি এবং তাই এর মানটি সার্ভারের কোনও ফাইলে লেখা যায় না।

এই প্রক্রিয়াটি সম্পর্কে চিন্তা করার সর্বোত্তম উপায়টি হ'ল আপনি গতিশীল কোনও পাঠ্য ফাইল তৈরি করছেন। আপনি যে পাঠ্যটি তৈরি করছেন তা ব্রাউজারের ব্যাখ্যা করার পরে কেবল সম্পাদনযোগ্য কোড হয়ে যায়। আপনি যা রাখবেন কেবল তার মধ্যে<?php ট্যাগগুলির যা রাখেন কেবল তা সার্ভারে মূল্যায়ন করা হয়।

যাইহোক, এইচটিএমএল বা জাভাস্ক্রিপ্টে পিএইচপি লজিকের এলোমেলো টুকরো এম্বেড করার অভ্যাসটি গুরুতরভাবে সংশ্লেষিত কোডের দিকে নিয়ে যেতে পারে। আমি বেদনাদায়ক অভিজ্ঞতা থেকে কথা বলতে।


3
আপনার উত্তর এখানে উল্লেখযোগ্য কারণ এটি / একটি ইন্টারপেটারের উল্লেখ করে। তবে জাভাস্ক্রিপ্টটি সংকলন করে একটি সার্ভার পরিবেশে চালানো যেতে পারে এবং এটি সার্ভার দ্বারাও ইন্টারপেট করা যেতে পারে।
ব্রেট ক্যাসওয়েল

3

ওয়েব অ্যাপ্লিকেশনটিতে প্রতিটি কাজ অনুরোধ এবং প্রতিক্রিয়ার একটি পদ্ধতিতে কার্যকর করা হয়।

ক্লায়েন্ট সাইড প্রোগ্রামিংটি এইচটিএমএল কোড সহ জাভা স্ক্রিপ্ট এবং এর ফ্রেমওয়ার্ক সহ রয়েছে, লাইব্রেরিগুলি ইন্টারনেট এক্সপ্লোরার, মজিলা, ক্রোম ব্রাউজারগুলিতে কার্যকর করে। জাভা দৃশ্যে সার্ভার সাইড প্রোগ্রামিং সার্ভলেটগুলি টমক্যাট, ওয়েব-লজিক, জে বস, ওয়েবস্পিয়ার সেভারগুলিতে কার্যকর করে

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