Superglobals એ બિલ્ટ-ઇન PHP ચલો છે જે સ્વચાલિત રીતે દરેક scope માં ઉપલબ્ધ છે — તેઓ request ડેટા, સર્વર માહિતી, sessions, અને વધુ ધરાવે છે. તેઓ PHP સ્ક્રિપ્ટ્સને આવતા HTTP request માહિતી ઍક્સેસ કરવાનો રસ્તો છે.
મુખ્ય superglobals
તેઓ દરેક જગ્યાએ ઉપલબ્ધ છે (global keyword ની જરૂર નથી), સામાન્ય ચલોથી અલીક જે તેમના function માટે scoped છે.
// query parameters and form data
$id = $_GET['id'] ?? null; // ?? provides a default if missing
$username = $_POST['username'] ?? '';
// request info
$method = $_SERVER['REQUEST_METHOD']; // "GET", "POST"
$uri = $_SERVER['REQUEST_URI'];
$ip = $_SERVER['REMOTE_ADDR'];
// ❌ DANGEROUS — using raw input directly enables attacks
$query = "SELECT * FROM users WHERE id = " . $_GET['id']; // SQL INJECTION!
echo $_GET['name']; // XSS!
// ✅ ALWAYS validate, sanitize, and escape user input
$id = (int) $_GET['id']; // cast/validate
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?"); // parameterized query
echo htmlspecialchars($_GET['name']); // escape for output (prevent XSS)
$_GET, $_POST, $_COOKIE, $_REQUEST માંથીનો ડેટા અવિશ્વસનીય વપરાશકર્તા ઇનપુટ છે — તેનો સીધો ઉપયોગ SQL injection, XSS, અને અન્ય હુમલાને સક્ષમ કરે છે. હંમેશા validate કરો, ડેટાબેસ માટે parameterized queries વાપરો, અને output escape કરો.
Superglobals PHP વેબ ડેવલપમેન્ટ માટે મૌલિક છે — તેઓ સ્ક્રિપ્ટ્સ HTTP request ડેટા (query strings, form submissions, cookies, sessions, અપલોડ કરેલી ફાઇલો, સર્વર માહિતી) પ્રાપ્ત કરવાનો રસ્તો છે, તેથી તેમને સમજવું કોઈપણ વપરાશકર્તા ઇનપુટ હ્যાન્ડલ કરવા માટે આવશ્યક રોજીંદી જ્ઞાન છે.
જાણવું કે દરેક superglobal ($_GET, $_POST, $_SERVER, $_SESSION, વગેરે) શું ધરાવે છે અને request ડેટા કેવી રીતે ઍક્સેસ કરવો તે કોઈપણ PHP એપ્લિકેશન બનાવવા માટે જરૂરી છે.
પરંતુ સૌથી મહત્વનો બિંદુ સુરક્ષા છે: $_GET/$_POST/$_COOKIE/$_REQUEST માંથીનો ડેટા અવિશ્વસનીય વપરાશકર્તા ઇનપુટ છે, અને તેનો સીધો ઉપયોગ સૌથી સામાન્ય અને ખતરનાક વેબ વલનરેબિલિટીના મૂળ કારણ છે (SQL injection, XSS).
યે સમજવું કે superglobal request ડેટા હંમેશા validate હોવો જોઈએ, સુરક્ષિત રીતે ઉપયોગ કરવો જોઈએ (ડેટાબેસ માટે parameterized queries), અને output પર escape હોવો જોઈએ તે મહત્વપૂર્ણ, સુરક્ષા-આવશ્યક જ્ઞાન છે — કારણ કે superglobals વપરાશકર્તા ઇનપુટ માટે એન્ટ્રી પોઇન્ટ છે, તેમને ખોટી રીતે હ્યાન્ડલ કરવું તે જગ્યા છે જ્યાં ઘણા ગંભીર PHP સુરક્ષા ભંગ ઉદ્ભવે છે, તેમને સુરક્ષિત રીતે હ્યાન્ડલ કરવું દરેક PHP ડેવલપર માટે મૂળભૂત જવાબદારી છે. (Laravel જેવા આધુનિક frameworks superglobals ને વધુ સુરક્ષિત request abstractions માં wrap કરે છે, પરંતુ ઇનપુટ પર કદી વિશ્વાસ કર્યો નહીં તે અંતર્નિહિત સિદ્ધાંત રહે છે.)