PHP Interview Question 5

21.What is Cross-Site Scripting (XSS)?

XSS happens when a website shows user input directly without cleaning it, so malicious JavaScript code can run inside the browser of other users.

👉 In short:

  • User enters text ✅ → fine.
  • Hacker enters <script> code ❌ → bad.


Vulnerable Example (Unsafe Code)

<?php
// Imagine this comes from a form (GET/POST)
$name = $_GET['name'];
?>

<!DOCTYPE html>
<html>
<head><title>XSS Demo</title></head>
<body>
    <h2>Hello, <?php echo $name; ?>!</h2>
</body>
</html>


Normal Input

If you visit:

http://localhost/xss.php?name=John

Output:

Hello, John!


Malicious Input

If a hacker visits:

http://localhost/xss.php?name=<script>alert('Hacked!');</script>

Output in browser:

Hello, <script>alert('Hacked!');</script>

⚠️ Instead of showing text, the browser runs the JavaScript →

👉 Popup appears: "Hacked!"

That’s XSS attack.


Safe Example (Preventing XSS)

We must escape user input using htmlspecialchars().

<?php
$name = htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8');
?>

<!DOCTYPE html>
<html>
<head><title>XSS Safe Demo</title></head>
<body>
    <h2>Hello, <?php echo $name; ?>!</h2>
</body>
</html>

Now if hacker tries:

http://localhost/xss.php?name=<script>alert('Hacked!');</script>

Output on page:

Hello, <script>alert('Hacked!');</script>

✅ It just shows text, no popup, no execution. Safe!


22.What is cURL?

  • cURL = “Client URL”
  • Used to send HTTP requests from PHP
  • Supports:
  • GET, POST, PUT, DELETE, etc.
  • File uploads 
  • Sending JSON
  • Handling response headers

23.Steps to Use cURL in PHP

Here’s the typical flow:

1. Initialize cURL

2. Set cURL options

3. Execute the request

4. Check for errors

5. Close cURL


Example 1 – Simple GET Request

Let’s fetch a webpage.

PHP Code:

<?php
// 1. Initialize
$ch = curl_init();

// 2. Set options
curl_setopt($ch, CURLOPT_URL, "https://jsonplaceholder.typicode.com/posts/1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 3. Execute
$response = curl_exec($ch);

// 4. Check for errors
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
} else {
    echo $response;
}

// 5. Close
curl_close($ch);

 

Example 2 – POST Request with Data

Suppose you want to send data to an API.

<?php
 
$data = [
    "title" => "Hello World",
    "body" => "This is a test.",
    "userId" => 1
];
 
// 1. Initialize
$ch = curl_init();
 
// 2. Set options
curl_setopt($ch, CURLOPT_URL, "https://jsonplaceholder.typicode.com/posts");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 
// 3. Execute
$response = curl_exec($ch);
 
// 4. Check for errors
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
} else {
    echo $response;
}
 
// 5. Close
curl_close($ch);

 

Example 3 – Sending JSON with POST

Many modern APIs expect JSON.

<?php
 
$data = [
    "title" => "Hello World",
    "body" => "This is JSON data.",
    "userId" => 1
];
 
// Encode JSON
$jsonData = json_encode($data);
 
// 1. Initialize
$ch = curl_init();
 
// 2. Set options
curl_setopt($ch, CURLOPT_URL, "https://jsonplaceholder.typicode.com/posts");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 
// Send JSON headers
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Content-Length: ' . strlen($jsonData)
]);
 
// 3. Execute
$response = curl_exec($ch);
 
// 4. Check for errors
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
} else {
    echo $response;
}
 
// 5. Close
curl_close($ch);


Example 4 – Custom Request (PUT)

<?php
 
$data = json_encode([
    "title" => "Updated title",
    "body" => "Updated body",
    "userId" => 1
]);
 
$ch = curl_init();
 
curl_setopt($ch, CURLOPT_URL, "https://jsonplaceholder.typicode.com/posts/1");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data)
]);
 
$response = curl_exec($ch);
 
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
} else {
    echo $response;
}
 
curl_close($ch);

24.What is Autoload in PHP?

Autoloading lets PHP load class files automatically when you use them, instead of writing lots of require statements.

 

Normally, you’d do this:

require 'classes/User.php';
require 'classes/Product.php';

✅ This is manual loading.


Autoloading means:

PHP automatically loads the class file when you use the class.

✅ So you don’t write dozens of require or include!


Example:

<?php
// File: classes/User.php
 
class User {
    public function sayHello() {
        echo "Hello!";
    }
}


Without autoloading:

require 'classes/User.php';
 
$user = new User();
$user->sayHello();

✅ Works… but you must remember the require line.


With autoloading:

Register an autoloader function:

spl_autoload_register(function ($class) {
    require __DIR__ . '/classes/' . $class . '.php';
});
Now you can simply:
$user = new User();
$user->sayHello();

No require needed. PHP loads the file automatically.


Whereisstuff is simple learing platform for beginer to advance level to improve there skills in technologies.we will provide all material free of cost.you can write a code in runkit workspace and we provide some extrac features also, you agree to have read and accepted our terms of use, cookie and privacy policy.
© Copyright 2024 www.whereisstuff.com. All rights reserved. Developed by whereisstuff Tech.