Form Data Handling এবং Validation

Form Handling এবং Data Validation - চেরিপাই (CherryPy) - Web Development

320

CherryPy তে ফর্ম ডেটা হ্যান্ডলিং এবং ভ্যালিডেশন করা বেশ সহজ। CherryPy ওয়েব অ্যাপ্লিকেশনগুলিতে ইউজার ইনপুট গ্রহণ করার জন্য ফর্ম ব্যবহার করা হয় এবং এই ইনপুটগুলো প্রক্রিয়াজাত করতে এবং সঠিকতা যাচাই (Validation) করার জন্য CherryPy বেশ কিছু টুলস এবং টেকনিক সরবরাহ করে।


ফর্ম ডেটা হ্যান্ডলিং (Form Data Handling)

CherryPy তে ফর্ম ডেটা হ্যান্ডলিং করতে cherrypy.request অবজেক্ট ব্যবহার করা হয়। ফর্ম থেকে ইনপুট পাঠানো হলে সেটি cherrypy.request.params এর মাধ্যমে অ্যাক্সেস করা যায়। এটি সাধারণত GET এবং POST রিকোয়েস্টের মাধ্যমে ডেটা গ্রহণ করতে ব্যবহৃত হয়।

উদাহরণ: ফর্ম ডেটা গ্রহণ

import cherrypy

class FormHandler:
    @cherrypy.expose
    def index(self):
        return '''
            <html>
                <body>
                    <form method="post" action="/submit">
                        <label for="name">নাম:</label>
                        <input type="text" name="name" id="name"><br><br>
                        <label for="email">ইমেইল:</label>
                        <input type="text" name="email" id="email"><br><br>
                        <input type="submit" value="জমা দিন">
                    </form>
                </body>
            </html>
        '''
    
    @cherrypy.expose
    def submit(self, name, email):
        return f"আপনার নাম: {name}, ইমেইল: {email}"

if __name__ == '__main__':
    cherrypy.quickstart(FormHandler())

এখানে, index মেথডটি একটি HTML ফর্ম তৈরি করে, যা submit মেথডে পাঠানো হয়। ব্যবহারকারী ফর্মে নাম এবং ইমেইল ইনপুট করবে এবং সাবমিট করার পর submit মেথডের মাধ্যমে ইনপুট ডেটা প্রক্রিয়াজাত করা হবে।


ফর্ম ডেটা ভ্যালিডেশন (Form Data Validation)

চেরিপাই ফর্ম ডেটা ভ্যালিডেশন করতে বেশ কিছু সহজ উপায় সরবরাহ করে, যার মাধ্যমে আপনি ইনপুট ডেটা সঠিক কিনা তা যাচাই করতে পারবেন।

উদাহরণ: ফর্ম ভ্যালিডেশন

import cherrypy

class FormHandler:
    @cherrypy.expose
    def index(self):
        return '''
            <html>
                <body>
                    <form method="post" action="/submit">
                        <label for="name">নাম:</label>
                        <input type="text" name="name" id="name"><br><br>
                        <label for="email">ইমেইল:</label>
                        <input type="text" name="email" id="email"><br><br>
                        <input type="submit" value="জমা দিন">
                    </form>
                </body>
            </html>
        '''
    
    @cherrypy.expose
    def submit(self, name, email):
        # ফর্ম ডেটা ভ্যালিডেশন
        if not name or not email:
            return "নাম এবং ইমেইল ফিল্ডগুলি অবশ্যই পূর্ণ করতে হবে।"
        
        if "@" not in email:
            return "ইমেইল ঠিকমতো লিখুন।"
        
        return f"আপনার নাম: {name}, ইমেইল: {email}"

if __name__ == '__main__':
    cherrypy.quickstart(FormHandler())

এখানে, submit মেথডে ভ্যালিডেশন কোড যোগ করা হয়েছে:

  • নাম এবং ইমেইল ফিল্ডগুলোর জন্য চেক করা হচ্ছে।
  • ইমেইল ফিল্ডে "@" সিম্বল আছে কি না তা যাচাই করা হচ্ছে।

ফর্ম ডেটা সেশন ম্যানেজমেন্ট

CherryPy তে সেশন ব্যবহার করে ফর্ম ডেটা সাময়িকভাবে সংরক্ষণ করা যেতে পারে। এটি ব্যবহারকারীর ডেটা প্রক্রিয়া করার জন্য এবং পরবর্তীতে আবার ব্যবহার করার জন্য সুবিধাজনক।

উদাহরণ: সেশন ব্যবহার করে ফর্ম ডেটা সংরক্ষণ

import cherrypy

class FormHandler:
    @cherrypy.expose
    def index(self):
        return '''
            <html>
                <body>
                    <form method="post" action="/submit">
                        <label for="name">নাম:</label>
                        <input type="text" name="name" id="name"><br><br>
                        <label for="email">ইমেইল:</label>
                        <input type="text" name="email" id="email"><br><br>
                        <input type="submit" value="জমা দিন">
                    </form>
                </body>
            </html>
        '''
    
    @cherrypy.expose
    def submit(self, name, email):
        cherrypy.session['name'] = name
        cherrypy.session['email'] = email
        return f"আপনার নাম: {name}, ইমেইল: {email}"

    @cherrypy.expose
    def show_session(self):
        if 'name' in cherrypy.session:
            return f"সেশন থেকে নাম: {cherrypy.session['name']}, ইমেইল: {cherrypy.session['email']}"
        return "কোনও সেশন তথ্য পাওয়া যায়নি।"

if __name__ == '__main__':
    cherrypy.config.update({'tools.sessions.on': True})
    cherrypy.quickstart(FormHandler())

এখানে, submit মেথডে ইনপুট ডেটা সেশন ভেরিয়েবল হিসেবে সংরক্ষিত হচ্ছে এবং show_session মেথডে সেশন থেকে ডেটা দেখানো হচ্ছে।


ফর্ম ডেটা পরিস্কার এবং নিরাপত্তা

CherryPy তে ইনপুট ডেটা নিরাপদ রাখতে এবং পরিস্কার (sanitize) করতে কিছু কৌশল গ্রহণ করা হয়, যেমন:

  • SQL Injection থেকে রক্ষা পেতে ডেটা স্যানিটাইজ করা।
  • XSS (Cross-Site Scripting) আক্রমণ থেকে রক্ষা পেতে ইনপুটগুলো যাচাই করা।

উদাহরণ: ইনপুট স্যানিটাইজেশন

import cherrypy
import re

class FormHandler:
    @cherrypy.expose
    def index(self):
        return '''
            <html>
                <body>
                    <form method="post" action="/submit">
                        <label for="name">নাম:</label>
                        <input type="text" name="name" id="name"><br><br>
                        <label for="email">ইমেইল:</label>
                        <input type="text" name="email" id="email"><br><br>
                        <input type="submit" value="জমা দিন">
                    </form>
                </body>
            </html>
        '''
    
    @cherrypy.expose
    def submit(self, name, email):
        # ইনপুট স্যানিটাইজেশন
        name = re.sub(r'[^\w\s]', '', name)  # নামের অপ্রয়োজনীয় চিহ্ন সরানো
        email = re.sub(r'[^\w@.]', '', email)  # ইমেইল থেকে অপ্রয়োজনীয় চিহ্ন সরানো
        
        return f"আপনার নাম: {name}, ইমেইল: {email}"

if __name__ == '__main__':
    cherrypy.quickstart(FormHandler())

এখানে, name এবং email ইনপুটে শুধুমাত্র নিরাপদ অক্ষর গ্রহণ করা হচ্ছে, অন্য কোন অপ্রয়োজনীয় চিহ্ন সরানো হচ্ছে।


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

Content added By
Promotion

Are you sure to start over?

Loading...