ফর্ম এর শুরুতে ইনপুট ফিল্ড এর জন্য একটি প্রাথমিক ভ্যালু সেট করার জন্য value attribute ব্যবহার করা হয়
উদাহরণ
<form action="">
First name:<br>
<input type="text" name="firstname" value="John">
<br>
Last name:<br>
<input type="text" name="lastname">
</form>
ফলাফল
কেবল পঠনযোগ্যঅ্যাট্রিবিউট (Readonly attribute)
ইনপুট ফিল্ডের ভ্যালু শুধু পরতে পারবে কিন্তু কোন প্রকার পরিবর্তন করতে পারবে না এই readonly attribute দ্বারা
উদাহরণ
<form action="">
First name:<br>
<input type="text" name="firstname" value="John" readonly>
<br>
Last name:<br>
<input type="text" name="lastname">
</form>
এই attribute এর জন্য কোন মান লাগবে না শুধু লিখতে হবে readonly=”readonly”
ফলাফল
নিষ্ক্রিয়করণঅ্যাট্রিবিউট (Disabled attribute)
ইনপুট ফিল্ডের কোন ডাটা এডিট করা যাবে না,বাবহার করা যাবে না, ক্লিক করা যাবে না এবং সাবমিট করা যাবে না এই রকম disable করে রাখার জন্য এই disable attribute ব্যবহার করা হয়
উদাহরণ
<form action="">
First name:<br>
<input type="text" name="firstname" value="John" disabled>
<br>
Last name:<br>
<input type="text" name="lastname">
</form>
এই attribute এর কোন মানের দরকার পরে না (disabled=”disabled”)
ফলাফল
আকারঅ্যাট্রিবিউট (Size attribute)
ইনপুট ফিল্ডের এর character এর আকার size attribute দ্বারা করা হয়
উদাহরণ
<form action="">
First name:<br>
<input type="text" name="firstname" value="John" size="40">
<br>
Last name:<br>
<input type="text" name="lastname">
</form>
ফলাফল
সর্বচ্চোআকারঅ্যাট্রিবিউট (Maxlength attribute)
ম্যাক্সিমাম কতটি ক্যারেক্টার হতে পারে এর জন্য আমরা maxlength attribute ব্যবহার করব।
উদাহরণ
<form action="">
First name:<br>
<input type="text" name="firstname" maxlength="10">
<br>
Last name:<br>
<input type="text" name="lastname">
</form>
ফলাফল
Maxlength দ্বারা নির্দিষ্ট character এর বেশি কোন ওয়ার্ড সাপোর্ট করে না। এই attribute কোন ফিডব্যাক প্রদান করে না। যদি ইউজার কে আমরা alert করতে চাই তাহলে আমাদের javascript বাবকার করতে হবে
ইনপুট নিষেধাজ্ঞা অব্যর্থ হয় না। javascript এর মাধ্যমে অবৈধ ভাবে ইনপুট করার অনেক উপায় আছে। নিরাপত্তার জন্য নিষেধাজ্ঞার পাশাপাশি রিসিভার (সার্ভার) দ্বারা চেক করা আবশ্যক.
কোন ইনপুট ফিল্ড আপনা থেকেই পরিপূর্ণ করবে কিনা এর জন্য autocomplete অন বা অফ ব্যবহার করা হয়। যদি তা অন করা থাকে তাহলে ব্রাউজার ইনপুট ফিল্ডের কোন ভ্যালু insert করার আগে আগেই অটোমেটিক পুরণ হয়ে যাবে যদি আগে এই ভ্যালুটি ইনপুট করা হয়ে থাকে। ফর্মের এর ক্ষেত্রে autocomplete অন রাখা সম্ভব নির্দিষ্ট কিছু ইনপুট ফিল্ডের এর জন্য তা অফ করে রাখা যাবে। autocomplete attribute ফর্মের এর ক্ষেত্রে কাজ করে এবং ইনপুট ফিল্ড এর ভিন্ন ভিন্ন ধরন যেমন text, search, url, tel, email, password, date picker, range, এবং color এই সব ক্ষেত্রে কাজ করে।
উদাহরণ
<form action="action_page.php" autocomplete="on">
First name:<input type="text" name="fname">
কোন ইনপুট ফিল্ড পেজ লোড হওয়ার সাথে সাথে ওই ঘরে কার্সর আনার জন্য এই attribute ব্যবহার করা হয়
উদাহরণ
First name:<input type="text" name="fname" autofocus>
ফলাফল
এইখানে firstname এর ঘরে কার্সর দেখা যাবে।
ফর্ম attribute
একাধিক ফর্মের input ফিল্ড কে একটি কমন ফর্ম এর ID দিয়ে চিহ্নিত করার জন্য এই attribute ব্যবহার করা হয়
উদাহরণ
যদিও ফর্ম এর বাইরে একটি ইনপুট ফিল্ড ব্যবহার করা হচ্ছে কিন্তু তারপরও এটি ফর্মের একটি অংশ
<form action="action_page.php" id="form1">
First name: <input type="text" name="fname">
<input type="submit" value="Submit">
</form>
Last name: <input type="text" name="lname" form="form1">
ফলাফল
The "Last name" field below is outside the form element, but still part of the form.
Last name:
Formaction attribute
Form action attribute একটি ফর্ম এর ফাইল এর URL চিহ্ন করে যেখানে যেয়ে ইনপুট ডাটা সাবমিট হবে। এই attribute দুটি টাইপ এ ব্যবহার করা হয় type=”submit”, type=”image”
উদাহরণ
ভিন্ন ভিন্ন action এ দুইটি বাটন দ্বারা দেখানো হল
<form action="action_page.php">
First name: <input type="text" name="fname">
Last name: <input type="text" name="lname">
<input type="submit" value="Submit">
<input type="submit" formaction="demo_admin.asp"
value="Submit as admin">
</form>
ফলাফল
Formenctype attribute
যখন সার্ভার এ ফর্ম ডাটা সাবমিট করা হবে তখন তা কিভাবে encode করা হবে এর জন্য আমরা এই attribute ব্যবহার করব পোস্ট মেথড এর ক্ষেত্রে । type=”submit” & type=”image” এই দুই ধরেনের ক্ষেত্রে এই attribute ব্যবহার করা হয়।
উদাহরন
প্রথম সাবমিট বাটন ডিফল্ট encoded এবং দ্বিতীয় সাবমিট বাঁটন multipart/form-data হিসেবে encode করা হয়েছে
<form action="demo_post_enctype.asp" method="post">
First name: <input type="text" name="fname">
<input type="submit" value="Submit">
<input type="submit" formenctype="multipart/form-data"
value="Submit as Multipart/form-data">
</form>
ফলাফল
Formmethod attribute
ফর্ম ডাটা url এ পাঠানোর ক্ষেত্রে HTTP মেথড বোঝার জন্য এই attribute ব্যবহার করা হয় । type=”submit” & type=”image” এই দুই ধরেনের ক্ষেত্রে এই attribute ব্যবহার করা হয়।
উদাহরণ
দ্বিতীয় বাটন টি HTTP এই মেথড এর
<form action="action_page.php" method="get">
First name: <input type="text" name="fname">
Input উপাদান কে সাবমিট করার পর তা অবৈধ ঘোষণা করার ক্ষেত্রে এই বুলিয়ান attribute ব্যবহার করা হয়। type=”submit” এই ধরেনের ক্ষেত্রে এই attribute ব্যবহার করা হয়।
উদাহরণ
দুইটি সাবমিট বাটন একটি validate ছাড়া অন্যটি validate সহ
<input type="submit" formnovalidate value="Submit without validation">
</form>
ফলাফল
Formtarget attribute
ফর্ম সাবমিট করার পর কোথায় আমরা এর প্রতিক্রিয়া দেখতে চাই তা আমরা এই attribute এর মাধ্যমে করতে পারি। type=”submit” & type=”image” এই দুই ধরেনের ক্ষেত্রে এই attribute ব্যবহার করা হয়।
উদাহরণ
ভিন্ন ভিন্ন টার্গেট এর জন্য দুইটি বাটন ব্যবহার করা হল
<form action="action_page.php">
First name: <input type="text" name="fname">
Last name: <input type="text" name="lname">
<input type="submit" value="Submit as normal">
<input type="submit" formtarget="_blank"
value="Submit to a new window">
</form>
ফলাফল
উচ্চতাএবংপ্রস্থঅ্যাট্রিবিউট Height and width attribute
ইনপুট ফিল্ডের আকার নির্ধারণ করার জন্য এই attribute ব্যবহার করা হয়। type=”image” ধরেনের ক্ষেত্রে এই attribute ব্যবহার করা হয়।
উদাহরণ
Width এবং height সহ একটি ইমেজ যুক্ত বাটন দেখানো হল
ন্যূনতম, সর্বোচ্চঅ্যাট্রিবিউট (Min, max attribute)
একটি ইনপুট ফিল্ড এর মিনিমাম এবং ম্যাক্সিমাম ডাটা ইনপুট করার ক্ষেত্রে এই attribute গুলো ব্যবহার করা হয় ভিন্ন ভিন্ন ধরনের ইনপুট ব্যবহার করা যায় number, range, date, datetime, datetime-local, month, time এবং week।
উদাহরন
মিনিমাম এবং ম্যাক্সিমাম ভ্যালু সহ একটি উদাহরণ
Enter a date before 1980-01-01:
<input type="date" name="bday" max="1979-12-31">
Enter a date after 2000-01-01:
<input type="date" name="bday" min="2000-01-02">
Quantity (between 1 and 5):
<input type="number" name="quantity" min="1" max="5">
ফলাফল
একাধিকঅ্যাট্রিবিউট (Multiple attribute)
ইনপুট ফিল্ডে একাধিক ডাটা সাবমিট করার ক্ষেত্রে এই বুলিয়ান attribute ব্যবহার করা হয়।দুই ধরনের ইনপুটে কাজ করা যায় ইমেইল, ফাইল।
Regular expression এই ধরনের ডাটা ইনপুট করার ক্ষেত্রে আমরা এই attribute ব্যবহার করব। এতে ফরম্যাট দেওয়া থাকে সেই অনুপাতে ডাটা ইনপুট দিতে হয়। এই টাইপ গুলো হল text, search, url, tel, email এবং password।
উদাহরণ
এই ইনপুট ফিল্ড এ ৩ টা লেটার ইনপুট করা যাবে যেখানে কোন নাম্বার বা special character থাকবে না
Country code: <input type="text" name="country_code" pattern="[A-Za-z]{3}" title="Three letter country code">
ফলাফল
স্থানধারকঅ্যাট্রিবিউট (Placeholder attribute)
ইনপুট ফিল্ড এ কোন কিছু ইনপুট করার আগে হালকা ভাবে কোন লেখা ডিসপ্লে করার জন্য এই attribute ব্যবহার করা হয়। এই টাইপ গুলো হল text, search, url, tel, email এবং password।
কোন ইউজার যেন কোন নির্দিষ্ট ইনপুট ফিল্ড ফাকা না রেখে ফর্ম সাবমিট করে সেই জন্য আমরা এই attribute ব্যবহার করব। এই টাইপ গুলো হল text, search, url, tel, email, password, date pickers, numbers, checkbox, radio, file.।
ASP.NET টিউটোরিয়াল :[পর্বঃ ৬]:: ASP.NET Web Forms দিয়ে একসাথে ফর্মের অনেক কোডের নিয়ন্ত্রণ
লেখকঃ মোস্তাফিজুর ফিরোজ ।
গত পর্বে আমরা শিখেছিলাম ASP.NET Web Forms দিয়ে এইচটিএমএল ফর্ম ট্যাগের ব্যবহার । আজ আমরা শিখবো একসাথে ফর্মের অনেক কোডের নিয়ন্ত্রণ । এজন্য আগে আপনাকে ViewState এর নিয়ন্ত্রণ সম্পর্কে জানতে হবে ।
ViewState এর নিয়ন্ত্রণ
যখন একটি ফর্ম classic ASP আকারে নিবেদন করা হয় তখন ফর্মের সকল মান চলে যায় । ধরুন আপনি একটি ফর্মের সাথে অনেক তথ্য যোগ করে পাঠালেন আর এরর রিপোর্ট আসলো । তাহলে বুঝতেই পারছেন আপনার কেমন মেজাজ গরম হবে । আপনার মেজাজ গরম না হলেও আমার কিন্তু খুব মেজাজ গরম হবে । তাই আবার ব্যাক করে এসে দেখলেন আবার সব ফর্ম পূরণ করা লাগছে । তাহলে বুঝতে হবে এই সাইট আপনার ViewState পুরাপুরি নিয়ন্ত্রণ করতে পারেনি ।
আবার অনেক সাইটে দেখবেন এমন এরর রিপোর্ট দেখালেও ব্যাক করলে ফর্মে আপনার পূরণ করা সকল তথ্য দেখতে পারবেন । এটা কে করলো? তাইতো । খুব খুশি তাই নাহ? এটা ঐ পেজের ASP .NET ধারণ করে রেখেছে । তার মানে ঐ পেজের ViewState পুরাপুরি নিয়ন্ত্রণ করতে সক্ষম হয়েছে । ঐ পেজে একটা <form runat="server"> ট্যাগ হিডেন করা আছে যা আপনার সকল তথ্য সংরক্ষণ করে রেখেছে । তাহলে আসুন দেখি ঐ পেজের সোর্স কোড কেমন হয়ঃ
ViewState এর নিয়ন্ত্রণ হলো ASP.NET Web Forms এর ডিফল্ট সেটিংস । আপনি যদি এটাকে নিয়ন্ত্রণ না করতে চান তাহলে .aspx পেজের উপরে একটি <%@ Page EnableViewState="false" %> অথবা EnableViewState="false" এই ট্যাগ যোগ করতে পারেন ।
তাহলে দেখেন পুরাতন পদ্ধতিতে কোডগুলো কেমন দেখায়ঃ
<html>
<body>
<form action="demo_classicasp.aspx" method="post">
Your name: <input type="text" name="fname" size="20">
<input type="submit" value="Submit">
</form>
<%
dim fname
fname=Request.Form("fname")
If fname<>"" Then
Response.Write("Hello " & fname & "!")
End If
%>
</body>
</html>
এটা হল পুরাতন পদ্ধতি যাতে আপনি যখন সাবমিট করবেন তখন এর ভিতরকার কোডগুলো অন্তর্নিহিত থাকবে ।
তাহলে এইবার নতুন পদ্ধতিটা দেখে নেই যে কেমন হবে কোডটাঃ
<script runat="server">
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="Hello " & txt1.Text & "!"
End Sub
</script>
আপনি এই নতুন পুরাতন দুই পদ্ধতিতেই একটি ফর্মের সকল কোড নিয়ন্ত্রণ করতে পারবেন । যেটা আপনার সুবিধা হবে সেটাই প্র্যাকটিস করবেন । তাহলে আজ এটাই শিখতে থাকুন ভালো করে ।
ইনপুট ফিল্ড এর টাইপ করা ডাটা যদি ইউজার সাবমিট বাটন ক্লিক করার পর দেখতে চায় আমরা কিছু পিএইচপি কোড যুক্ত করব ইনপুট ফিল্ড এর মধ্যে (name, email, and website)। কমেন্ট টেক্সট এরিয়া এর মধ্যে আমরা পিএইচপি কোড যুক্ত করব <textarea> and </textarea> এই ট্যাগ এর ভিতরে। এই চারটি ফিল্ড এর জন্য রাখা হয়েছে $name, $email, $website, and $comment এই variables গুলোকে ব্যবহার করা হয়েছে। আমাদের এরপর লক্ষ্য রাখতে হবে যে রেডিও বাটন চেক করা হয়েছে কিনা। এই চারটি ফিল্ড ব্যবহার করে আমরা যদি কোড এর দিকে লক্ষ্য করি
ইউজার এর কাছ থেকে বিভিন্ন ধরনের তথ্য সংগ্রহ করতে ফর্ম (form) ব্যাবহার করা হয়। এই তথ্যগুলো পিএইচপি প্রোগ্রামের মাধ্যমে ডাটাবেজে স্টোর করা হয়। পিএইচপি তে দুটি সুপার গ্লুবাল ভেরিয়েবল আছে যা ফর্ম থেকে বিভিন্ন উপাত্ত বা ইউজার এর ইনপুট তুলে আনতে ব্যাবহৃত হয়। এই দুইটি ভেরিয়েবল হল $_GET এবং $_POST।
নিচের উদাহরণে একটি সিম্পল এইচটিএমএল ফর্ম দেওয়া হয়েছে যেখানে ২ টি ইনপুট ফিল্ড এবং একটি সাবমিট বাটন রয়েছে।
যখন ইউজার এই ফর্মের ডাটা ফিল্ড গুলো পূর্ণ করে সাবমিট বাটনে ক্লিক করবে তখন উক্ত ডাটা গূলো “welcome.php” ফাইলে চলে যাবে। এখানে যেহেতু মেথড “post” ব্যাবহার করা হয়েছে তাই ডাটা গুলো HTTP POST মেথডের মাধ্যমে সেন্ড হবে।
সাবমিট করা ডাটা গুলো খুব সহজে নিচের মত করে “welcome.php” ফাইলে প্রদর্শন করা যাবে।
<html>
<body>
Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>
</body>
</html>
এই কোডটির আউটপূট হবে নিচের মতঃ
Welcome John
Your email address is john.doe@example.com
একই ভাবে HTTP GET মেথডে ব্যাবহার করেও কাজটি করা যাবে।
উদাহরনঃ
<html>
<body>
Welcome <?php echo $_GET["name"]; ?><br>
Your email address is: <?php echo $_GET["email"]; ?>
</body>
</html>
গেট বনাম পোষ্ট (GET vs. POST)
GET এবং POST উভয়েইএকটি অ্যারে নির্মাণ করে (যেমনঃ array( key => value, key2 => value2, key3 => value3, ...))। এখানে key,key1,key2 হল ফর্ম কন্ট্রোল গুলোর নামে এবং value,value1,value2 হল ইউজারের ইনপুট ডাটা।
GET এবং POST উভয়েই $ _GET এবং $ _POST হিসাবে গণ্য হয়। এইগুলো হল সুপার গ্লুবালস অর্থাৎ এইগুলো সবসময় সব ফাংশন এবং সব ক্লাস থেকে এক্সেস করা যাবে।
ফর্মের ডাটা GET মেথড ব্যাবহার করে সেন্ড করলে সকল ডাটা ব্রাউজার এড্রেসবারে URL এ প্রদর্শিত হয়। অন্য দিকে ফর্মের ডাটা POST মেথড ব্যাবহার করে সেন্ড করলে ডাটা ব্রাউজার এড্রেসবারে URL এ প্রদর্শিত হয় না।
কখন GET ব্যবহার করতে হবে? (When to use GET?)
GET এর মাধ্যমে পাঠানো ডাটা সবাই দেখতে পায়। GET এর মাধ্যমে খুব বেশি ডাটা পাঠানো যায় না ,সর্বোচ্চ 2000 characters পাঠানো যায়। সেনসিটিভ ডাটা যেমন passwords সেন্ড করার জন্য কখনো GET ব্যাবহার করা উচিত নয়।
কখন POST ব্যবহার করতে হবে? (When to use POST?)
POST এর মাধ্যমে পাঠানো ডাটা অন্যরা দেখতে পায় না এবং এইখানে যত ইচ্ছা তথ্য পাঠানো যায়। এছাড়াও POST এর মাধ্যমে সার্ভারে ফাইল আপলোড করা যায় যেটা GET এর মাধ্যমে করা সম্ভব না।
ফর্ম ব্যবহার করে ডাটাকে আমরা পোস্ট করে থাকি। কিন্তু অনেক সময় ইউজার কোন ফিল্ড কে খালি রেখে অথবা কোন কিছু পুরণ না করে পোস্ট করতে পারে এই ক্ষেত্রে তাকে এই এররটা ইউজার কে দেখিয়ে দেওয়ার জন্য আমরা পিএইচপি তে কিছু কোড ব্যবহার করব। এখন আমরা একটি উদাহরণ দেখব যেখানে এইচটিএমএল ব্যবহার করে একটি ফর্ম ব্যবহার করা হয়েছে তাতে ফিল্ড খালি রেখে পোস্ট করলে পরবর্তীতে তাকে যেই ফিল্ড গুলো সে পূর্ণ করে নি সেখানে এরর মেসেজ দেখাবে। কোড গুলো নিম্মরুপ
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
/*ডাটা পোস্ট করা হবে*/
Name: <input type="text" name="name"> /*একটি নামের ফিল্ড*/
<span class="error">* <?php echo $nameErr;?></span>
/*যদি ফাকা রেখে সাবমিট করা হয় তাহলে পিএইচপি এর মাধ্যমে
এররর মেসেজ দেখাবে এই span id এর ভিতরে*/
<br><br>
E-mail:
<input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
Website:
<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
/*যদি ফাকা রেখে সাবমিট করা হয়
তাহলে পিএইচপি এর মাধ্যমে এররর
মেসেজ দেখাবে এই span id এর ভিতরে*/
<br><br>
<label>Comment: <textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<span class="error">* <?php echo $genderErr;?></span>
/*যদি ফাকা রেখে সাবমিট করা হয় তাহলে পিএইচপি
এর মাধ্যমে এররর মেসেজ দেখাবে এই span id এর ভিতরে*/
<br><br>
<input type="submit" name="submit" value="Submit">
/*সমস্ত ডাটাগুলো লেখার পর পোস্ট বাটন এ ক্লিক করলে
ডাটাগুলো পিএইচপি পরবে তার জন্য আমরা এখন কোড লিখব*/
</form>
ফাংশন
< ?php
// ফাকা ডাটা বা variable গুলো চিহ্নিত করার জন্য।
if ($_SERVER["REQUEST_METHOD"] == "POST")
/*যদি পোস্ট নামের বাটন এ ক্লিক করা হয়ে থাকে তাহলে
পরবর্তী ভিতরের অংশ কাজ করবে।*/
{
if (empty($_POST["name"]))
/*চেক করবে এই ফিল্ডের এর ডাটা ইউজার ইনপুট করেছিল
কিনা যদি না করে থাকে তাহলে span id এর ভিতরে
এইচটিএমএল পার্ট এর ভিতরে যেখানে আমরা লিখেছিলাম সেইখানে ডিসপ্লে করবে*/
{
$nameErr = "Name is required";
/*এই টেক্সট টি নাম ফিল্ড ফাকা থাকলে তার পাসে দেখাবে*/
}
else {
$name = test_input($_POST["name"]);
/*অথবা যদি পোস্ট করে থাকে তাহলে এই কোড
এর মাধ্যমে পিএইচপি দতা টা পরবে*/
}
if (empty($_POST["email"]))
/*চেক করবে এই ফিল্ডের এর ডাটা ইউজার ইনপুট করেছিল কিনা যদি না করে
থাকে তাহলে span id এর ভিতরে এইচটিএমএল পার্ট এর ভিতরে যেখানে
আমরা লিখেছিলাম সেইখানে ডিসপ্লে করবে*/
{
$emailErr = "Email is required";
}
else
{
$email = test_input($_POST["email"]);
}
if (empty($_POST["website"]))
/*চেক করবে এই ফিল্ডের এর ডাটা ইউজার ইনপুট করেছিল কিনা
যদি না করে থাকে তাহলে span id এর ভিতরে এইচটিএমএল পার্ট
এর ভিতরে যেখানে আমরা লিখেছিলাম সেইখানে ডিসপ্লে করবে*/
{
$website = "";
}
else
{
$website = test_input($_POST["website"]);
}
if (empty($_POST["comment"]))
/*চেক করবে এই ফিল্ডের এর ডাটা ইউজার ইনপুট করেছিল কিনা
যদি না করে থাকে তাহলে span id এর ভিতরে এইচটিএমএল পার্ট
এর ভিতরে যেখানে আমরা লিখেছিলাম সেইখানে ডিসপ্লে করবে*/
{
$comment = "";
}
else {
$comment = test_input($_POST["comment"]);
}
if (empty($_POST["gender"]))
/*চেক করবে এই ফিল্ডের এর ডাটা ইউজার ইনপুট করেছিল কিনা
যদি না করে থাকে তাহলে span id এর ভিতরে এইচটিএমএল পার্ট
এর ভিতরে যেখানে আমরা লিখেছিলাম সেইখানে ডিসপ্লে করবে*/
{
$genderErr = "Gender is required";
}
else {
$gender = test_input($_POST["gender"]);
}
}
?>
PHP Form Validation Example
* required field.
Machine Learning, Big Data, Data Science, Analytics, Cloud, Security, AI, Robotics, Database, BI, Development: Software, Web, Mobile