Beginners To Experts


The site is under development.

PHP Interview Questions

Answer:

        <?php
        // The 'include' statement includes a file, but if the file is not found, PHP will only issue a warning.
        include('file.php'); // If file.php is not found, the script continues execution.

        // The 'require' statement includes a file, but if the file is not found, PHP will stop the script and show a fatal error.
        require('file.php'); // If file.php is not found, the script stops.
        ?>
      

Answer:

        <?php
        // Defining a simple PHP function
        function greet($name) {
            return "Hello, " . $name . "!";
        }

        echo greet('John'); // Outputs: Hello, John!
        ?>
      

Answer:

        <?php
        // Superglobals are built-in global arrays in PHP. Some examples:
        // $_GET: Retrieves data from URL query parameters.
        // $_POST: Retrieves data from form submissions.
        // $_SESSION: Stores session variables.
        // $_COOKIE: Stores data to be retrieved on subsequent requests.

        // Example of using $_GET to retrieve data from a query string
        echo "Hello, " . $_GET['name']; // If the URL is ?name=John, it will display "Hello, John"
        ?>
      

Answer:

        <?php
        // The $_SESSION superglobal is used to store session variables. These variables are available across different pages during a user's session.

        // Start a session
        session_start();

        // Set a session variable
        $_SESSION['user'] = 'John Doe';

        // Access the session variable
        echo $_SESSION['user']; // Outputs: John Doe
        ?>
      

Answer:

        <?php
        // PHP has several error handling mechanisms:
        // 1. Using try-catch blocks for exceptions.
        // 2. Using error_reporting() to control which errors are displayed.

        // Example of using a try-catch block to handle exceptions
        try {
            $result = 10 / 0; // Division by zero
        } catch (Exception $e) {
            echo 'Caught exception: ' . $e->getMessage();
        }
        ?>
      

Answer:

        <?php
        // == compares values, while === compares both value and type.
        $a = 5; $b = '5';
        var_dump($a == $b); // true, because values are the same
        var_dump($a === $b); // false, because types are different
        ?>
      

Answer:

        <?php
        // The $_FILES superglobal is used to handle file uploads. Example:

        if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['file'])) {
            // Store the uploaded file in a specific directory
            move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']);
        }
        ?>
      

Answer:

        <?php
        // Arrays can be indexed or associative
        $indexedArray = [1, 2, 3];
        $associativeArray = ['key1' => 'value1', 'key2' => 'value2'];

        print_r($indexedArray); // Outputs: Array ( [0] => 1 [1] => 2 [2] => 3 )
        print_r($associativeArray); // Outputs: Array ( [key1] => value1 [key2] => value2 )
        ?>
      

Answer:

        <?php
        // The header() function is used to send raw HTTP headers to the browser.
        // It can be used to redirect users or set content type.

        // Example: Redirect user to another page
        header('Location: http://www.example.com');
        exit;
        ?>
      

Answer:

        <?php
        // Using $_GET for data passed in the URL or $_POST for data passed from a form
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            $name = $_POST['name']; // Retrieve 'name' from a POST form
            echo "Hello, " . $name;
        }
        ?>
      

Answer:

        <?php
        // isset() checks if a variable is set and is not NULL
        $var1 = 'Hello';
        var_dump(isset($var1)); // true

        // empty() checks if a variable is empty (e.g., '', 0, NULL)
        $var2 = '';
        var_dump(empty($var2)); // true
        ?>
      

Answer:

        <?php
        // The foreach loop is used to iterate over arrays.
        $arr = ['apple', 'banana', 'cherry'];
        foreach ($arr as $fruit) {
            echo $fruit . "<br>"; // Outputs: apple, banana, cherry
        }
        ?>
      

Answer:

        <?php
        // Using mysqli_connect() to connect to the database
        $conn = mysqli_connect('localhost', 'username', 'password', 'database_name');

        // Check connection
        if (!$conn) {
            die("Connection failed: " . mysqli_connect_error());
        }
        echo "Connected successfully";
        mysqli_close($conn);
        ?>
      

Answer:

        <?php
        // Define a constant using the define() function
        define('PI', 3.14);

        echo PI; // Outputs: 3.14
        ?>
      

Answer:

        <?php
        // The exit() function is used to terminate the current script.
        echo "This will be displayed.";
        exit();
        echo "This will not be displayed."; // This line will not execute
        ?>
      

Answer:

        <?php
        // You can use the header() function to send raw HTTP headers to the browser.
        header('Location: http://www.example.com'); // Redirect to another page
        exit;
        ?>
      

Answer:

        <?php
        // The $_SERVER superglobal contains information about the server environment and HTTP headers.
        echo $_SERVER['SERVER_NAME']; // Outputs the server's hostname
        echo $_SERVER['REQUEST_METHOD']; // Outputs the request method (e.g., GET, POST)
        ?>
      

Answer:

        <?php
        // You can validate form inputs using PHP before processing the form.
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            if (empty($_POST['name'])) {
                echo "Name is required";
            } else {
                // Process form
            }
        }
        ?>
      

Answer:

        <?php
        // str_replace() is used to replace occurrences of a substring within a string.
        $str = "Hello World";
        $newStr = str_replace("World", "PHP", $str);
        echo $newStr; // Outputs: Hello PHP
        ?>
      

Answer:

        <?php
        // You can use $_GET or $_POST to send data to another page.
        // Example using GET:
        header('Location: next_page.php?name=John');
        exit;

        // Example using POST:
        echo '<form method="POST" action="next_page.php">';
        echo '<input type="text" name="name" value="John">';
        echo '</form>';
        ?>
      

Answer:

        <?php
        // The $_GET superglobal is used to collect form data after submitting a form using the GET method.
        // It is also used to pass variables through URL parameters.

        if (isset($_GET['name'])) {
            echo 'Hello, ' . $_GET['name'];
        }
        ?>
      

Answer:

        <?php
        // The $_POST superglobal is used to collect form data after submitting a form using the POST method.
        // It is typically used for sensitive data like passwords.

        if (isset($_POST['username'])) {
            echo 'Hello, ' . $_POST['username'];
        }
        ?>
      

Answer:

        <?php
        // include: Includes and evaluates a specified file. If the file is not found, it gives a warning but continues execution.
        include('file.php');
        
        // require: Includes and evaluates a specified file. If the file is not found, it gives a fatal error and stops the execution.
        require('file.php');
        ?>
      

Answer:

        <?php
        // PHP supports the following types of loops:
        
        // while loop: Executes as long as the condition is true.
        $i = 0;
        while ($i < 5) {
            echo $i;
            $i++;
        }
        
        // for loop: Executes for a set number of iterations.
        for ($i = 0; $i < 5; $i++) {
            echo $i;
        }
        
        // foreach loop: Used for iterating over arrays.
        $arr = [1, 2, 3];
        foreach ($arr as $value) {
            echo $value;
        }
        ?>
      

Answer:

        <?php
        // Start the session
        session_start();
        
        // Store session data
        $_SESSION['user'] = 'John';
        
        // Access session data
        echo $_SESSION['user']; // Outputs: John
        ?>
      

Answer:

        <?php
        // array_push() is used to add one or more elements to the end of an array.
        $arr = [1, 2, 3];
        array_push($arr, 4, 5);
        print_r($arr); // Outputs: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
        ?>
      

Answer:

        <?php
        // `==` compares values only, without checking the type.
        var_dump(5 == '5'); // true

        // `===` compares both value and type.
        var_dump(5 === '5'); // false
        ?>
      

Answer:

        <?php
        // Use try-catch to handle exceptions
        try {
            throw new Exception('An error occurred');
        } catch (Exception $e) {
            echo 'Error: ' . $e->getMessage();
        }

        // Use error_reporting() to set the level of error reporting
        error_reporting(E_ALL); // Report all errors
        ?>
      

<?php
  // The explode() function is used to split a string by a delimiter into an array.
  $str = 'apple,banana,orange';
  $arr = explode(',', $str);
  print_r($arr); // Outputs: Array ( [0] => apple [1] => banana [2] => orange )
?>
      

<?php
  // Use htmlspecialchars() to sanitize user input
  $input = '<script>alert("hack")</script>';
  $sanitized = htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
  echo $sanitized; // Outputs: <script>alert("hack")</script>
?>
      

<?php
  // To start a session, use the session_start() function.
  session_start();
  $_SESSION['username'] = 'JohnDoe';
?>
      

<?php
  // To destroy a session, use session_destroy() and unset all session variables.
  session_start();
  session_unset();
  session_destroy();
?>
      

<?php
  // Use the file_exists() function to check if a file exists.
  $file = 'example.txt';
  if (file_exists($file)) {
      echo 'The file exists.';
  } else {
      echo 'The file does not exist.';
  }
?>
      

<?php
  // Use the $_FILES superglobal to upload files.
  if (isset($_FILES['file'])) {
      $file_name = $_FILES['file']['name'];
      move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $file_name);
      echo 'File uploaded successfully.';
  }
?>
      

<?php
  // Use the mail() function to send an email.
  $to = 'recipient@example.com';
  $subject = 'Test Email';
  $message = 'Hello, this is a test email.';
  $headers = 'From: sender@example.com';
  mail($to, $subject, $message, $headers);
?>
      

<?php
  // Use the mysqli_connect() function to connect to a MySQL database.
  $conn = mysqli_connect('localhost', 'username', 'password', 'database_name');
  if (!$conn) {
      die('Connection failed: ' . mysqli_connect_error());
  }
  echo 'Connected successfully';
?>
      

<form method="post" action="process_form.php">
  Name: <input type="text" name="name">
  <input type="submit" value="Submit">
</form>
      

<?php
  // Use $_POST or $_GET to retrieve form data.
  $name = $_POST['name'];
  echo 'Hello, ' . $name;
?>
      

<?php
  // The require statement includes and evaluates the specified file.
  require 'header.php';
  echo 'Page content here';
?>
      

<?php
  // include: includes a file but doesn't stop execution if the file is not found.
  // require: includes a file but stops execution if the file is not found.
  include 'header.php'; // Will not stop if file is missing
  require 'footer.php'; // Will stop if file is missing
?>
      

<?php
  // You can handle errors using try-catch blocks or set_error_handler().
  try {
      // Code that may throw an exception
      throw new Exception('An error occurred.');
  } catch (Exception $e) {
      echo 'Caught exception: ' . $e->getMessage();
  }
?>
      

<?php
  // Use mysqli_query() to perform database queries.
  $conn = mysqli_connect('localhost', 'username', 'password', 'database_name');
  $result = mysqli_query($conn, "SELECT * FROM users");
  while ($row = mysqli_fetch_assoc($result)) {
      echo $row['name'];
  }
?>
      

<?php
  // Use prepared statements to prevent SQL injection.
  $conn = mysqli_connect('localhost', 'username', 'password', 'database_name');
  $stmt = $conn->prepare("SELECT * FROM users WHERE email = ?");
  $stmt->bind_param("s", $email);
  $email = $_POST['email'];
  $stmt->execute();
?>
      

<?php
  // Use the setcookie() function to create a cookie.
  setcookie("user", "John", time() + 3600, "/"); // Expires in 1 hour
  echo "Cookie set.";
?>
      

<?php
  // Use $_COOKIE to retrieve the cookie value.
  if (isset($_COOKIE['user'])) {
      echo 'Hello ' . $_COOKIE['user'];
  } else {
      echo 'Cookie is not set.';
  }
?>
      

<?php
  // To delete a cookie, set the expiration time to the past.
  setcookie("user", "", time() - 3600, "/");
  echo "Cookie deleted.";
?>
      

<?php
  // Use the $_FILES superglobal to upload an image file.
  if (isset($_FILES['image'])) {
      $target_directory = "uploads/";
      $target_file = $target_directory . basename($_FILES['image']['name']);
      move_uploaded_file($_FILES['image']['tmp_name'], $target_file);
      echo "File uploaded successfully.";
  }
?>
      

<?php
  // "==" checks for value equality (type conversion happens).
  // "===" checks for both value and type equality.
  var_dump(1 == "1");  // true
  var_dump(1 === "1"); // false
?>
      

<?php
  // Declare and use an array in PHP.
  $fruits = array("Apple", "Banana", "Cherry");
  echo $fruits[0];  // Output: Apple
?>
      

<?php
  // Use count() to get the length of an array.
  $fruits = array("Apple", "Banana", "Cherry");
  echo count($fruits);  // Output: 3
?>
      

<?php
  // Define a function in PHP.
  function greet($name) {
      return "Hello, " . $name;
  }
  echo greet("John");  // Output: Hello, John
?>
      

<?php
  // isset() checks if a variable is set and is not null.
  $name = "John";
  if (isset($name)) {
      echo 'Variable is set';
  }
?>
      

<?php
  // Use file_exists() to check if a file exists.
  if (file_exists("file.txt")) {
      echo "File exists.";
  } else {
      echo "File does not exist.";
  }
?>
      

<?php
  // die() terminates the current script.
  echo "Before die.";
  die("Terminating the script");
  echo "After die."; // This will not be executed.
?>
      

<?php
  // Use header() to redirect a user to another page.
  header("Location: http://www.example.com");
  exit;
?>
      

<?php
  // Check file type and size before uploading to secure the file upload process.
  $allowed_types = ['image/jpeg', 'image/png'];
  if (in_array($_FILES['image']['type'], $allowed_types)) {
      move_uploaded_file($_FILES['image']['tmp_name'], 'uploads/' . $_FILES['image']['name']);
      echo 'File uploaded successfully.';
  } else {
      echo 'Invalid file type.';
  }
?>
      

<?php
  // strtolower() converts a string to lowercase.
  $string = "HELLO WORLD";
  echo strtolower($string);  // Output: hello world
?>
      

<?php
  // Define a constant using define().
  define("SITE_NAME", "MyWebsite");
  echo SITE_NAME;  // Output: MyWebsite
?>
      

<?php
  // include() includes and evaluates a specified file.
  include("header.php"); // If the file is missing, the script continues.
  
  // require() includes and evaluates a specified file. 
  // If the file is missing, it causes a fatal error and stops the script.
  require("footer.php");
?>
      

<?php
  // Start a session and store session data.
  session_start();
  $_SESSION["username"] = "JohnDoe";
  echo $_SESSION["username"];  // Output: JohnDoe
  
  // Destroy a session.
  session_destroy();
?>
      

<?php
  // "==" checks for equality in value, allowing type conversion.
  $a = 5;
  $b = "5";
  var_dump($a == $b);  // Output: bool(true) because the values are the same after type conversion.

  // "===" checks for both value and type equality, without type conversion.
  var_dump($a === $b);  // Output: bool(false) because the types are different (int vs string).
?>
      

<?php
  // Error handling in PHP can be done using "try" and "catch".
  try {
      // Code that may cause an exception
      $result = 10 / 0;
  } catch (Exception $e) {
      echo "Caught exception: " . $e->getMessage();
  }

  // You can also set a custom error handler using set_error_handler().
  set_error_handler(function($errno, $errstr) {
      echo "Error: [$errno] $errstr";
  });
?>
      

<?php
  // An associative array in PHP is an array where each element is associated with a key.
  $user = [
      "name" => "John",
      "age" => 30,
      "email" => "john@example.com"
  ];
  
  echo $user["name"];  // Output: John
  echo $user["age"];   // Output: 30
?>
      

<?php
  // The "header()" function is used to send raw HTTP headers to the client.
  // It is typically used to redirect the user to another page.
  
  // Example: Redirecting to another page
  header("Location: https://www.example.com");
  exit();  // Stop further execution after the redirect.
?>
      

<?php
  // The "foreach" loop is used to iterate over arrays in PHP.
  $fruits = ["apple", "banana", "cherry"];
  
  foreach ($fruits as $fruit) {
      echo $fruit . "<br>";
  }
  // Output:
  // apple
  // banana
  // cherry
?>
      

<form method="post" action="process_form.php">
  Name: <input type="text" name="name"><br>
  Age: <input type="text" name="age"><br>
  <input type="submit" value="Submit">
</form>


<?php
  if ($_SERVER["REQUEST_METHOD"] == "POST") {
      $name = $_POST["name"];
      $age = $_POST["age"];
      echo "Name: " . $name . "<br>";
      echo "Age: " . $age;
  }
?>
      

<?php
  // "mysqli_connect()" is used to establish a connection to a MySQL database.
  $conn = mysqli_connect("localhost", "root", "", "my_database");

  if (!$conn) {
      die("Connection failed: " . mysqli_connect_error());
  }
  
  echo "Connected successfully";
?>
      

<?php
  // "array_push()" is used to add one or more elements to the end of an array.
  $arr = ["apple", "banana"];
  array_push($arr, "cherry", "date");
  
  print_r($arr);
  // Output: Array ( [0] => apple [1] => banana [2] => cherry [3] => date )
?>
      

<?php
  // "include" will include the file even if it's missing, and it will give a warning.
  include("non_existing_file.php");
  
  // "require" will stop the script execution if the file is missing.
  require("missing_file.php");
?>
      

<?php
  // "date()" is used to format the current date and time.
  echo date("Y-m-d H:i:s");  // Output: 2023-06-21 15:30:45
  echo date("l, F j, Y");    // Output: Monday, June 21, 2023
?>
      

<?php
  // A session is used to store user-specific information across multiple pages.
  // It allows data to persist across page requests.

  session_start();  // Start the session
  $_SESSION["username"] = "JohnDoe";  // Store data in the session
  
  echo $_SESSION["username"];  // Output: JohnDoe
?>
      

<?php
  // "isset()" checks whether a variable is set and is not null.
  $name = "John";

  if (isset($name)) {
      echo "Name is set";  // Output: Name is set
  } else {
      echo "Name is not set";
  }
  
  unset($name);  // Remove the variable

  if (!isset($name)) {
      echo "Name is not set";  // Output: Name is not set
  }
?>
      

<?php
  // "str_replace()" is used to replace all occurrences of a substring with a new substring.
  $string = "Hello, world!";
  $newString = str_replace("world", "PHP", $string);
  
  echo $newString;  // Output: Hello, PHP!
?>
      

<?php
  // "require_once" includes a file and ensures that it is included only once.
  // If the file is missing, "require_once" will stop the script execution.
  
  // "include_once" also ensures a file is included only once, but it will not stop script execution if the file is missing.
  
  // Example:
  require_once('file.php');  // Will stop execution if file.php is missing
  include_once('file.php');  // Will not stop execution if file.php is missing
?>
      

<?php
  // The "mail()" function is used to send an email.
  $to = "example@example.com";
  $subject = "Test email";
  $message = "This is a test email.";
  $headers = "From: webmaster@example.com";
  
  if(mail($to, $subject, $message, $headers)) {
      echo "Email sent successfully";
  } else {
      echo "Failed to send email";
  }
?>
      

<?php
  // "mysqli_fetch_assoc()" fetches a result row as an associative array.
  $conn = mysqli_connect("localhost", "root", "", "my_database");
  $result = mysqli_query($conn, "SELECT * FROM users");

  while ($row = mysqli_fetch_assoc($result)) {
      echo $row["username"];  // Output the "username" column for each row
  }
?>
      

<form method="post" enctype="multipart/form-data">
  Select image to upload:
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="Upload Image" name="submit">
</form>

<?php
  if ($_SERVER["REQUEST_METHOD"] == "POST") {
      $target_dir = "uploads/";
      $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
      move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file);
  }
?>
      

<?php
  // You can use the "header()" function to redirect a user to another page.
  header("Location: https://www.example.com");
  exit();
?>
      

<?php
  // Use the "try-catch" block to handle exceptions in PHP.
  try {
      throw new Exception("An error occurred");
  } catch (Exception $e) {
      echo "Error: " . $e->getMessage();
  }
  
  // You can also use the "error_reporting()" function to control error reporting.
  error_reporting(E_ALL);  // Report all errors
?>
      

<?php
  // Superglobals are built-in global arrays in PHP that provide access to data.
  // Examples include $_GET, $_POST, $_SESSION, $_COOKIE, $_FILES, $_SERVER, $_ENV, and $_REQUEST.
  
  // Example using $_POST to access form data:
  if ($_SERVER["REQUEST_METHOD"] == "POST") {
      echo $_POST["name"];
  }
?>
      

<?php
  // "isset()" checks if a variable is set and is not NULL.
  $name = "John";
  if (isset($name)) {
      echo "Name is set";  // Output: Name is set
  }

  // "empty()" checks if a variable is empty ("" or 0 or NULL).
  $value = "";
  if (empty($value)) {
      echo "Value is empty";  // Output: Value is empty
  }
?>
      

<?php
  // "==" compares values, but ignores data types.
  $a = "10";
  $b = 10;
  if ($a == $b) {
      echo "Values are equal";  // Output: Values are equal
  }

  // "===" compares both values and data types.
  if ($a === $b) {
      echo "Values and types are equal";  // No output, since types are different (string vs integer)
  } else {
      echo "Values or types are not equal";  // Output: Values or types are not equal
  }
?>
      

<?php
  // To prevent SQL injection, always use prepared statements and parameterized queries.
  $conn = mysqli_connect("localhost", "root", "", "my_database");
  $stmt = $conn->prepare("SELECT * FROM users WHERE username = ?");
  $stmt->bind_param("s", $username);
  
  $username = $_POST['username'];
  $stmt->execute();
  $result = $stmt->get_result();
  
  while ($row = $result->fetch_assoc()) {
      echo $row['username'];
  }
?>
      

<?php
  // "array_map()" applies a given callback function to each element of an array.
  $numbers = [1, 2, 3, 4, 5];
  $squaredNumbers = array_map(function($num) {
      return $num * $num;
  }, $numbers);
  
  print_r($squaredNumbers);  // Output: [1, 4, 9, 16, 25]
?>
      

<?php
  // Cookies are set using the "setcookie()" function.
  setcookie("user", "John", time() + 3600, "/");  // Cookie will expire in 1 hour
  
  // Access cookie value:
  if (isset($_COOKIE["user"])) {
      echo "Hello, " . $_COOKIE["user"];
  } else {
      echo "Cookie not set!";
  }
?>
      

<?php
  // "fopen()" is used to open a file, and "fwrite()" writes data to a file.
  $file = fopen("test.txt", "w");
  fwrite($file, "Hello, world!");
  fclose($file);
  
  // Reading the file:
  $file = fopen("test.txt", "r");
  $content = fread($file, filesize("test.txt"));
  fclose($file);
?>
      

<?php
  // Sessions are used to store data across multiple pages.
  session_start();  // Start the session

  // Storing data in session:
  $_SESSION["username"] = "John";

  // Accessing session data:
  echo "Hello, " . $_SESSION["username"];

  // Destroying the session:
  session_destroy();
?>
      

<?php
  // Use the "header()" function to redirect.
  header("Location: http://www.example.com");
  exit;  // Always call exit after header to ensure no further code is executed.
?>
      

<?php
  // Use "include" or "require" to include external PHP files.
  include("header.php");  // Includes the header file.
  
  // Use "require" if the file is essential for execution.
  require("config.php");  // If config.php is missing, the script stops executing.
?>
      

<?php
  // Use "rand()" to generate a random number within a specified range.
  $randomNumber = rand(1, 100);  // Generates a random number between 1 and 100.
  echo $randomNumber;
  
  // Alternatively, use "mt_rand()" for better performance in generating random numbers.
  $randomNumberBetter = mt_rand(1, 100);
  echo $randomNumberBetter;
?>
      

<?php
  // Use "rand()" to generate a random number within a specified range.
  $randomNumber = rand(1, 100);  // Generates a random number between 1 and 100.
  echo $randomNumber;
  
  // Alternatively, use "mt_rand()" for better performance in generating random numbers.
  $randomNumberBetter = mt_rand(1, 100);
  echo $randomNumberBetter;
?>
      

<?php
  // "isset()" checks if a variable is set and is not NULL.
  $var = "Hello";
  if (isset($var)) {
    echo "Variable is set.";
  }
  
  // "empty()" checks if a variable is empty ("" or 0 or NULL).
  $var = "";
  if (empty($var)) {
    echo "Variable is empty.";
  }
?>
      

<?php
  // Use "try-catch" blocks to handle exceptions.
  try {
    // Code that may throw an exception.
    if (!file_exists("nonexistentfile.txt")) {
      throw new Exception("File not found.");
    }
  } catch (Exception $e) {
    echo "Error: " . $e->getMessage();
  }

  // Use "error_reporting()" to specify the level of error reporting.
  error_reporting(E_ALL);  // Report all errors.
?>
      

<?php
  // Defining a class in PHP.
  class Car {
    // Class properties
    public $color;
    public $model;
    
    // Class method
    public function drive() {
      echo "The car is driving.";
    }
  }

  // Creating an object of the class
  $myCar = new Car();
  $myCar->color = "Red";
  $myCar->model = "Toyota";
  $myCar->drive();  // Output: The car is driving.
?>
      

<?php
  // Create a new PDO instance to connect to the database.
  $pdo = new PDO("mysql:host=localhost;dbname=test", "username", "password");

  // Prepare and execute a SELECT query.
  $stmt = $pdo->prepare("SELECT * FROM users");
  $stmt->execute();
  $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

  // Prepare and execute an INSERT query.
  $stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
  $stmt->execute(["John Doe", "john@example.com"]);
?>
      

<?php
  // "include" will include the file and continue the script even if the file is not found.
  include("header.php");

  // "require" is similar to "include" but will stop the script if the file is not found.
  require("config.php");
?>
      

<?php
  // Validate if the "name" field is not empty.
  if (empty($_POST["name"])) {
    echo "Name is required.";
  } else {
    echo "Hello, " . $_POST["name"];
  }

  // Validate email format.
  if (filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) {
    echo "Valid email.";
  } else {
    echo "Invalid email.";
  }
?>
      

<form method="post" enctype="multipart/form-data">
  Choose a file to upload: <input type="file" name="fileToUpload">
  <input type="submit" value="Upload">
</form>

<?php
  if (isset($_FILES["fileToUpload"])) {
    $targetFile = "uploads/" . basename($_FILES["fileToUpload"]["name"]);
    move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile);
    echo "File has been uploaded.";
  }
?>
      

<?php
  // Use the "mail()" function to send an email.
  $to = "someone@example.com";
  $subject = "Test Email";
  $message = "Hello, this is a test email.";
  $headers = "From: webmaster@example.com";
  
  mail($to, $subject, $message, $headers);
?>
      

<?php
  // The "header()" function is used to send raw HTTP headers to the client.
  // It can be used for redirection or to specify content types.
  header("Location: http://www.example.com");  // Redirect to another page.
  exit;  // Ensure no further code is executed after redirection.
?>
      

<?php
  // Create a connection to the MySQL database using MySQLi.
  $conn = new mysqli("localhost", "username", "password", "database");

  // Check if the connection is successful.
  if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
  }
  echo "Connected successfully";
?>
      

<?php
  // MySQLi vs PDO:
  // - MySQLi is specific to MySQL databases, while PDO can be used with various database systems.
  // - MySQLi supports both procedural and object-oriented programming styles, while PDO only supports OOP.
  // - PDO has named placeholders, which makes it more flexible and secure for SQL queries, whereas MySQLi uses positional placeholders.

  // Use MySQLi if you're working with MySQL databases and need to support legacy procedural code.
  // Use PDO when you need support for multiple database types, better error handling, and the ability to work with named placeholders.
?>
      

<?php
  // Traits are a mechanism for code reuse in single inheritance languages like PHP. Unlike classes, they cannot be instantiated.
  // A trait allows you to define methods that can be used in multiple classes.
  
  trait Logger {
    public function log($message) {
      echo "Log: $message";
    }
  }
  
  class MyClass {
    use Logger;
  }
  
  // This way, MyClass can use the log method from Logger without inheriting from it.
  
  // Unlike classes, traits cannot be instantiated, and they do not have constructors or destructors.
?>
      

<?php
  // Secure session handling in PHP:
  session_start();
  
  // Use session_regenerate_id() to prevent session fixation attacks.
  session_regenerate_id();
  
  // Store session data securely.
  $_SESSION['user'] = $user;
  
  // Set secure session cookies.
  ini_set('session.cookie_secure', 1); // Only send cookies over HTTPS.
  ini_set('session.cookie_httponly', 1); // Prevent JavaScript access to session cookies.
  
  // Regenerate session ID on every request.
  session_regenerate_id(true);
  
  // Always validate user input before storing it in sessions.
?>
      

<?php
  // include: Includes the file, but the script continues if the file is not found (warning).
  include('file.php');
  
  // require: Similar to include, but stops the script if the file is not found (fatal error).
  require('file.php');
  
  // include_once: Ensures the file is included only once, even if it's called multiple times.
  include_once('file.php');
  
  // require_once: Similar to include_once but will stop the script if the file is not found.
  require_once('file.php');
  
  // Generally, prefer "require_once" to avoid issues with duplicate inclusions.
?>
      

<?php
  // Preventing SQL injection:
  // 1. Use prepared statements with bound parameters (PDO or MySQLi).
  
  // Example using PDO:
  $stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
  $stmt->bindParam(':username', $username, PDO::PARAM_STR);
  $stmt->execute();
  
  // 2. Escape user inputs using MySQLi (not as secure as prepared statements).
  $username = mysqli_real_escape_string($conn, $_POST['username']);
  
  // Always use prepared statements over escaping input to prevent SQL injection attacks.
?>
      

<?php
  // Secure file uploads:
  // 1. Check the file's MIME type and extension to ensure it's allowed.
  $allowedTypes = ['image/jpeg', 'image/png', 'application/pdf'];
  $fileType = $_FILES['file']['type'];
  
  if (!in_array($fileType, $allowedTypes)) {
    die("Invalid file type.");
  }
  
  // 2. Check file size.
  if ($_FILES['file']['size'] > 500000) {  // Limit file size to 500 KB.
    die("File is too large.");
  }
  
  // 3. Rename the file to avoid conflicts and potential security issues.
  $newFileName = uniqid() . '_' . $_FILES['file']['name'];
  
  // 4. Store the file in a secure location with proper permissions.
  move_uploaded_file($_FILES['file']['tmp_name'], "uploads/" . $newFileName);
?>
      

<?php
  // "spl_autoload_register()" registers an autoloader function that automatically loads class files when a class is referenced.
  // This allows you to avoid the need to manually require class files, making your code cleaner and more maintainable.

  // Example:
  spl_autoload_register(function($class) {
    include 'classes/' . $class . '.class.php';
  });

  // Now, PHP will automatically include the necessary class file when a class is instantiated.
  $obj = new MyClass(); // This will trigger the autoloader and include 'classes/MyClass.class.php'.
?>
      

<?php
  // Exception handling in PHP is done using try-catch blocks.
  
  try {
    // Code that may throw an exception.
    $num = 10 / 0;
  } catch (Exception $e) {
    // Handle the exception.
    echo "Error: " . $e->getMessage();
  }
  
  // If an exception is thrown, the code in the catch block will execute.
  // Exception classes extend the base Exception class in PHP.
?>
      

<?php
  // Composer is a dependency manager for PHP, allowing you to manage libraries and packages.
  
  // Advantages:
  // - Handles dependencies automatically (downloading and installing libraries).
  // - Enables easy autoloading of classes.
  // - Allows for version control of libraries.
  // - Simplifies updates and ensures compatibility with your PHP version.

  // Example usage:
  // Composer install: Installs the required dependencies listed in composer.json.
  // Composer update: Updates the dependencies to their latest versions.
?>
      

<?php
  // MVC (Model-View-Controller) is a design pattern that separates application logic into three components:
  // - Model: Represents the data and business logic.
  // - View: Displays the data to the user.
  // - Controller: Handles user input and updates the model.

  // Example of implementing MVC:
  // 1. Define a Model class to handle data and database operations.
  // 2. Create a View file to display data to the user.
  // 3. Implement a Controller class to process user input and update the Model and View.

  // The controller interacts with both the model and the view to handle user requests.
?>
      

<?php
  // Namespaces in PHP help to avoid name conflicts between classes, functions, or constants.
  // They group related code together and provide a way to avoid clashes between classes with the same name in different parts of an application.

  namespace MyApp\Database;
  
  class Connection {
    // Class implementation
  }

  // To use the class outside the namespace:
  use MyApp\Database\Connection;
  
  $db = new Connection();
?>
      

<?php
  // Dependency Injection (DI) is a design pattern where an object receives its dependencies from an external source, instead of creating them itself.
  // It helps decouple code, making it more modular and easier to test.

  class Database {
    public function __construct($connection) {
      $this->connection = $connection;
    }
  }

  // Example of dependency injection:
  $connection = new MySQLConnection();
  $db = new Database($connection);
  
  // DI improves maintainability, reduces code duplication, and simplifies unit testing.
?>
      

<?php
  // __construct() is a special method in PHP classes used as a constructor to initialize an object when it is created.
  
  class User {
    public function __construct($name) {
      $this->name = $name;
    }
  
    public function greet() {
      echo "Hello, $this->name!";
    }
  }
  
  // When creating a new instance of the class, the constructor is called.
  $user = new User("John");
  $user->greet(); // Outputs: Hello, John!
  
  // The constructor is invoked automatically when an object is instantiated.
?>
      

<?php
  // Securing a REST API in PHP involves:
  // 1. Authenticating users (e.g., using JWT, OAuth, or API keys).
  // 2. Validating and sanitizing input to prevent SQL injections and XSS.
  // 3. Using HTTPS to encrypt data in transit.
  // 4. Implementing rate limiting to prevent abuse.
  // 5. Providing proper access control (e.g., role-based access control).
  
  // Example of token-based authentication (using JWT):
  if ($_SERVER['HTTP_AUTHORIZATION']) {
    $token = $_SERVER['HTTP_AUTHORIZATION'];
    // Verify and decode the JWT token to authenticate the user.
  } else {
    echo "Authorization required.";
  }
?>
      

<?php
  // ORM allows for interacting with the database using objects instead of SQL queries.
  
  // Example using Doctrine ORM:
  // Define an entity class for the "users" table.
  /**
   * @Entity
   * @Table(name="users")
   */
  class User {
    /**
     * @Id
     * @Column(type="integer")
     * @GeneratedValue
     */
    private $id;
    
    /**
     * @Column(type="string")
     */
    private $name;
    
    // Getter and Setter methods here
  }
  
  // The ORM maps the database records to objects and allows you to perform CRUD operations.
  // You would use Doctrine to persist and retrieve objects from the database.
?>
      

<?php
  // Common security vulnerabilities in PHP include:
  // 1. SQL Injection: Prevent by using prepared statements with parameterized queries.
  // Example with PDO:
  $stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
  $stmt->execute([$username]);
  
  // 2. Cross-Site Scripting (XSS): Prevent by sanitizing user inputs and encoding output.
  // 3. Cross-Site Request Forgery (CSRF): Protect with anti-CSRF tokens.
  // 4. Remote Code Execution: Avoid eval() and other dangerous functions.
  // 5. Session Hijacking: Use secure cookies (e.g., session_start() with secure flag).

  // Always validate, sanitize, and escape user inputs and outputs.
?>
      

<?php
  // Session management in PHP is done using session_start(), $_SESSION, and session_destroy().
  
  // Starting a session:
  session_start();
  
  // Storing data in session:
  $_SESSION['user_id'] = $user_id;
  
  // Retrieving data from session:
  $user_id = $_SESSION['user_id'];
  
  // Destroying the session:
  session_destroy();
  
  // It's important to use secure session settings, like setting session.cookie_secure and session.cookie_httponly.
?>
      

<?php
  // Performance optimization techniques in PHP:
  // 1. Use opcode caching (e.g., OPcache) to cache compiled PHP code.
  // 2. Minimize database queries and optimize them (e.g., using indexing).
  // 3. Implement caching mechanisms like Memcached or Redis to store frequent queries or data.
  // 4. Use a Content Delivery Network (CDN) for static resources.
  // 5. Avoid using expensive operations like regular expressions and file I/O inside loops.
  // 6. Use asynchronous requests and AJAX for heavy tasks to improve user experience.
  // 7. Profile your code using tools like Xdebug or Blackfire to identify bottlenecks.
?>
      

<?php
  // File upload in PHP is done using the $_FILES superglobal.
  
  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_FILES['file'])) {
      $file = $_FILES['file'];
      $upload_dir = 'uploads/';
      $target_file = $upload_dir . basename($file['name']);
      
      // Check for errors
      if ($file['error'] == 0) {
        move_uploaded_file($file['tmp_name'], $target_file);
        echo "File uploaded successfully!";
      } else {
        echo "Error uploading file.";
      }
    }
  }
  
  // Always validate the file type and size to prevent security risks.
?>
      

<?php
  // Database migrations are typically handled using a migration tool like Phinx or Laravel's migration system.
  
  // Example using Phinx:
  // 1. Create a migration file:
  //   $ php vendor/bin/phinx create CreateUsersTable
  
  // 2. Define the migration steps:
  class CreateUsersTable extends Phinx\Migration\AbstractMigration {
    public function change() {
      $table = $this->table('users');
      $table->addColumn('name', 'string')
            ->addColumn('email', 'string')
            ->create();
    }
  }
  
  // 3. Run the migration:
  //   $ php vendor/bin/phinx migrate
  
  // Migrations help version control the database schema and ensure consistency across environments.
?>
      

<?php
  // Multi-tenancy in PHP can be implemented by using a separate database for each tenant
  // or a shared database with tenant-specific data.
  
  // Example of multi-tenancy with a shared database:
  // 1. Add a 'tenant_id' column to each table to distinguish records between tenants.
  
  class Tenant {
    public function getTenantDatabase($tenant_id) {
      // Return database connection based on tenant_id
      return new PDO('mysql:host=localhost;dbname=tenant_' . $tenant_id, 'user', 'password');
    }
  }
  
  // This allows you to dynamically connect to the correct database for each tenant.
?>
      

<?php
  // include() and require() are used to include and evaluate files.
  // The difference is in how they handle errors:
  
  // include() - generates a warning if the file cannot be included, and the script continues.
  include('file.php'); // If file.php is not found, script continues with a warning.
  
  // require() - generates a fatal error if the file cannot be included, and the script stops.
  require('file.php'); // If file.php is not found, script stops.
  
  // Use require() when the file is essential for the application to function properly.
?>
      

<?php
  // Caching can significantly improve PHP application performance by storing frequently accessed data.
  
  // Example of file-based caching using PHP:
  $cache_file = 'cache/data_cache.txt';
  $cache_lifetime = 3600; // 1 hour
  
  if (file_exists($cache_file) && time() - filemtime($cache_file) < $cache_lifetime) {
    // Load data from the cache file
    $data = file_get_contents($cache_file);
  } else {
    // Simulate fetching data (e.g., from a database)
    $data = 'Fresh data from database';
    
    // Save the new data to cache
    file_put_contents($cache_file, $data);
  }
  
  echo $data;
  
  // For more advanced caching, you can use Memcached or Redis.
?>
      

<?php
  // RBAC can be implemented by associating users with roles and then checking permissions.
  
  // Example using session:
  session_start();
  
  // Simulate user role
  $_SESSION['role'] = 'admin';
  
  // Role-based access check
  if ($_SESSION['role'] == 'admin') {
    echo "Welcome, Admin!";
  } else {
    echo "Access Denied.";
  }
  
  // In a real-world scenario, roles and permissions would be stored in a database.
?>
      

<?php
  // Asynchronous requests can be achieved using AJAX in PHP.
  // JavaScript is typically used to send asynchronous HTTP requests (AJAX) to PHP scripts.
  
  // Example using jQuery to make an AJAX request:
  $.ajax({
    url: 'your_php_script.php',
    type: 'POST',
    data: { 'action': 'getData' },
    success: function(response) {
      console.log(response);
    }
  });
  
  // In the PHP script, the data can be processed asynchronously without reloading the page.
?>
      

<?php
  // PHP uses try-catch blocks for exception handling.
  
  try {
    // Code that may throw an exception
    throw new Exception("An error occurred!");
  } catch (Exception $e) {
    // Handle the exception
    echo 'Caught exception: ',  $e->getMessage(), "\n";
  }
  
  // You can also create custom exceptions by extending the Exception class.
?>
      

<?php
  // A simple RESTful API in PHP can be implemented using the following steps:
  
  // 1. Set up routing (e.g., using $_GET['url']).
  // 2. Handle different HTTP methods (GET, POST, PUT, DELETE).
  // 3. Return JSON responses using header('Content-Type: application/json').
  
  if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    // Get data (e.g., from database)
    $data = ['message' => 'Hello, world!'];
    echo json_encode($data);
  }
  
  // You can use frameworks like Slim or Laravel for a more robust solution.
?>
      

<?php
  // To secure API keys, you should store them in a safe, non-public location such as environment variables or a configuration file outside the public web directory.
  
  // Example using an environment variable:
  putenv("API_KEY=your-api-key");
  $apiKey = getenv("API_KEY");
  
  // Avoid hardcoding API keys directly in your source code.
?>
      

<?php
  // To secure API keys, you should store them in a safe, non-public location such as environment variables or a configuration file outside the public web directory.
  
  // Example using an environment variable:
  putenv("API_KEY=your-api-key");
  $apiKey = getenv("API_KEY");
  
  // Avoid hardcoding API keys directly in your source code.
?>
      

<?php
  // PHP provides built-in error logging functions.
  // To log errors, you can use the error_log() function or external libraries like Monolog.
  
  // Example using error_log() function:
  error_log("An error occurred.", 3, "/path/to/error_log.txt");
  
  // Example using Monolog:
  use Monolog\Logger;
  use Monolog\Handler\StreamHandler;

  $log = new Logger('name');
  $log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));

  $log->warning('This is a warning message.');
  $log->error('This is an error message.');
?>
      

<?php
  // Dependency Injection (DI) is a design pattern where objects are passed to a class or function instead of being created within the class or function.
  
  // Example using constructor injection:
  class DatabaseConnection {
    private $host;
    private $username;
    
    public function __construct($host, $username) {
      $this->host = $host;
      $this->username = $username;
    }
  }

  class UserService {
    private $dbConnection;
    
    public function __construct(DatabaseConnection $dbConnection) {
      $this->dbConnection = $dbConnection;
    }
  }
  
  // Inject the dependency
  $dbConnection = new DatabaseConnection('localhost', 'root');
  $userService = new UserService($dbConnection);
?>
      

<?php
  // Payment gateways (like Stripe, PayPal, etc.) provide APIs for integrating payments into your application.
  
  // Example with Stripe:
  require 'vendor/autoload.php';
  
  \Stripe\Stripe::setApiKey('your-api-key');
  
  $paymentIntent = \Stripe\PaymentIntent::create([
    'amount' => 1000, // Amount in cents
    'currency' => 'usd',
  ]);
  
  echo json_encode(['clientSecret' => $paymentIntent->client_secret]);
  
  // Ensure that you follow the documentation for each payment gateway's integration process.
?>
      

<?php
  // PHP can implement web sockets using the Ratchet library or other WebSocket libraries.
  
  // Example using Ratchet (a PHP WebSocket library):
  require 'vendor/autoload.php';
  
  use Ratchet\MessageComponentInterface;
  use Ratchet\ConnectionInterface;
  
  class Chat implements MessageComponentInterface {
    public function onOpen(ConnectionInterface $conn) {
      echo "New connection: {$conn->resourceId}\n";
    }

    public function onClose(ConnectionInterface $conn) {
      echo "Connection closed: {$conn->resourceId}\n";
    }

    public function onMessage(ConnectionInterface $from, $msg) {
      $from->send("Message received: $msg");
    }

    public function onError(ConnectionInterface $conn, \Exception $e) {
      echo "Error: {$e->getMessage()}\n";
    }
  }

  // Run the server
  $app = new Ratchet\App('localhost', 8080);
  $app->route('/chat', new Chat, ['*']);
  $app->run();
  
  // This server will listen on port 8080 for WebSocket connections.
?>
      

<?php
  // Handling file uploads securely involves validating the file type, file size, and preventing code execution.
  
  if ($_FILES['file']['error'] == UPLOAD_ERR_OK) {
    $fileTmpPath = $_FILES['file']['tmp_name'];
    $fileName = $_FILES['file']['name'];
    $fileSize = $_FILES['file']['size'];
    $fileType = $_FILES['file']['type'];
    
    // Validate file type
    $allowedTypes = ['image/jpeg', 'image/png'];
    if (!in_array($fileType, $allowedTypes)) {
      die("Invalid file type.");
    }

    // Validate file size (max 2MB)
    if ($fileSize > 2 * 1024 * 1024) {
      die("File is too large.");
    }

    // Move the file to a secure directory
    move_uploaded_file($fileTmpPath, 'uploads/' . $fileName);
    echo "File uploaded successfully!";
  } else {
    echo "Error uploading file.";
  }
?>
      

<?php
  // Session management in PHP is done using the session_start(), $_SESSION, and session_destroy() functions.
  
  // Start a session
  session_start();
  
  // Store session data
  $_SESSION['user'] = 'JohnDoe';
  
  // Access session data
  echo $_SESSION['user']; // Outputs: JohnDoe
  
  // Destroy session
  session_destroy();
?>
      

<?php
  // Prevent SQL injection by using prepared statements and parameterized queries.
  
  // Example with PDO:
  $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
  $stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username');
  $stmt->bindParam(':username', $_POST['username'], PDO::PARAM_STR);
  $stmt->execute();
  
  // Using prepared statements ensures that user input is treated as data, not executable code.
?>
      

<?php
  // Pagination can be implemented by fetching a limited number of records per page.
  
  // Example:
  $itemsPerPage = 10;
  $currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;
  $offset = ($currentPage - 1) * $itemsPerPage;
  
  // Fetch data from the database
  $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
  $stmt = $pdo->prepare('SELECT * FROM items LIMIT :offset, :limit');
  $stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
  $stmt->bindValue(':limit', $itemsPerPage, PDO::PARAM_INT);
  $stmt->execute();
  $items = $stmt->fetchAll();
  
  // Generate pagination links
  echo '
    '; for ($i = 1; $i <= $totalPages; $i++) { echo '
  • ' . $i . '
  • '; } echo '
'; ?>

<?php
  // Caching can be implemented using tools like Memcached or Redis.
  
  // Example using Memcached:
  $memcache = new Memcached();
  $memcache->addServer('localhost', 11211);
  
  // Check if data is cached
  $data = $memcache->get('data_key');
  
  if (!$data) {
    // Data not cached, fetch it from the database
    $data = fetchDataFromDatabase();
    
    // Store data in cache for 60 seconds
    $memcache->set('data_key', $data, 60);
  }
  
  echo $data;
  
  // This approach reduces the need for repeated database queries.
?>
      

<?php
  // Asynchronous requests in PHP can be handled using AJAX or WebSockets.
  
  // Example using AJAX with jQuery:
  <script>
    $(document).ready(function() {
      $.ajax({
        url: 'process.php',
        type: 'GET',
        success: function(response) {
          console.log(response);
        }
      });
    });
  </script>
  
  // PHP script (process.php) can process the request asynchronously.
?>
      

<?php
  // Ensuring code quality in PHP can be done using code reviews, automated testing, and following coding standards.
  
  // Example using PHPUnit for unit testing:
  // Install PHPUnit via Composer: composer require --dev phpunit/phpunit
  
  use PHPUnit\Framework\TestCase;
  
  class MyClassTest extends TestCase {
    public function testMethod() {
      $obj = new MyClass();
      $this->assertEquals('expected', $obj->methodToTest());
    }
  }
  
  // Run tests using the command: vendor/bin/phpunit
  
  // Use PHP_CodeSniffer to enforce coding standards and automatically check the code for style issues.
?>
      

<?php
  // A RESTful API can be implemented using PHP's built-in functionalities or frameworks like Laravel, Slim, or Lumen.
  
  // Basic implementation using PHP:
  if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    // Example of a GET request
    $data = ['message' => 'Hello, world!'];
    header('Content-Type: application/json');
    echo json_encode($data);
  } elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Example of a POST request
    $inputData = json_decode(file_get_contents('php://input'), true);
    $response = ['message' => 'Data received', 'data' => $inputData];
    header('Content-Type: application/json');
    echo json_encode($response);
  }
  
  // Using a framework like Laravel simplifies routing and handling HTTP methods.
  // Example using Laravel's routes:
  Route::get('/api/hello', function () {
    return response()->json(['message' => 'Hello, world!']);
  });
  
  // Always ensure proper HTTP status codes and error handling for RESTful services.
?>
      

<?php
  // Implementing OAuth2 authentication can be done using libraries like `oauth2-server-php` or integrating with services like Google or Facebook.
  
  // Example using Google OAuth2:
  require_once 'vendor/autoload.php';
  
  $client = new Google_Client();
  $client->setClientId('your-client-id');
  $client->setClientSecret('your-client-secret');
  $client->setRedirectUri('your-redirect-uri');
  $client->addScope('email');
  
  // Redirect to Google OAuth2 page
  if (!isset($_GET['code'])) {
    header('Location: ' . $client->createAuthUrl());
    exit;
  } else {
    $token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
    $client->setAccessToken($token['access_token']);
    
    // Fetch user info
    $oauth2 = new Google_Service_Oauth2($client);
    $userInfo = $oauth2->userinfo->get();
    print_r($userInfo);
  }
  
  // Ensure to handle token refresh and session management when implementing OAuth2.
?>
      

<?php
  // File system operations should be carefully handled to prevent unauthorized access and vulnerabilities.
  
  // Use functions like is_readable(), is_writable(), and realpath() to check file access.
  
  // Example of secure file reading:
  $filePath = 'uploads/sensitive_file.txt';
  
  // Check if the file exists and is readable
  if (is_readable($filePath)) {
    $fileContent = file_get_contents($filePath);
    echo $fileContent;
  } else {
    echo "File is not accessible.";
  }
  
  // When writing files, ensure the file permissions are correct to avoid security issues.
  file_put_contents($filePath, 'new content');
?>
      

<?php
  // To manage sessions across multiple PHP servers, you can use a centralized session storage like Redis or Memcached.
  
  // Example with Redis:
  session_set_save_handler(
    function() {
      return new Redis();
    },
    function() {
      $redis = new Redis();
      $redis->connect('localhost');
      return $redis;
    }
  );
  
  // This ensures that all servers use the same session data.
?>
      

<?php
  // PHP offers password_hash() for securely hashing passwords.
  
  // Example of password hashing:
  $password = 'userPassword123';
  $hashedPassword = password_hash($password, PASSWORD_DEFAULT);
  
  // Store the $hashedPassword in the database
  
  // Verifying the password during login:
  if (password_verify($password, $hashedPassword)) {
    echo 'Password is correct!';
  } else {
    echo 'Invalid password!';
  }
  
  // password_hash() uses a strong algorithm (BCRYPT) by default and automatically handles salt.
?>
      

<?php
  // To prevent SQL injection, always use prepared statements with bound parameters.
  
  // Example using PDO:
  $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'password');
  
  $stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username');
  $stmt->bindParam(':username', $username);
  
  $username = 'userInput';
  $stmt->execute();
  
  $results = $stmt->fetchAll();
  var_dump($results);
  
  // This ensures the user input is not directly inserted into the query.
?>
      

<?php
  // Role-based access control (RBAC) can be implemented by storing user roles in the database and checking them at appropriate points.
  
  // Example of checking user roles:
  $userRole = 'admin'; // Fetch this from the session or database
  
  if ($userRole === 'admin') {
    echo 'You have admin access!';
  } else {
    echo 'Access denied.';
  }
  
  // For complex access control, consider implementing a middleware approach or using a framework's built-in RBAC system.
?>
      

<?php
  // To implement secure file uploads, make sure to validate file types, check file size, and ensure the upload directory is secure.
  
  // Example of secure file upload:
  if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $file = $_FILES['upload'];
    
    // Check for allowed file types
    $allowedTypes = ['image/jpeg', 'image/png'];
    if (!in_array($file['type'], $allowedTypes)) {
      echo 'Invalid file type!';
      exit;
    }
    
    // Check for file size (max 2MB)
    if ($file['size'] > 2097152) {
      echo 'File size is too large!';
      exit;
    }
    
    // Move file to a safe directory
    $destination = 'uploads/' . basename($file['name']);
    move_uploaded_file($file['tmp_name'], $destination);
    echo 'File uploaded successfully!';
  }
?>
      

<?php
  // To handle exceptions and errors in PHP, use try-catch blocks and set custom error handlers.
  
  // Example using try-catch:
  try {
    $result = 10 / 0; // This will throw an exception
  } catch (Exception $e) {
    echo 'Caught exception: ', $e->getMessage();
  }
  
  // Setting a custom error handler:
  set_error_handler('customErrorHandler');
  
  function customErrorHandler($errno, $errstr, $errfile, $errline) {
    echo "Error occurred: [$errno] $errstr in $errfile on line $errline";
  }
?>
      

<?php
  // Caching database queries can be done by storing the results in a cache system (e.g., Memcached or Redis).
  
  // Example using Redis:
  $redis = new Redis();
  $redis->connect('localhost', 6379);
  
  $cacheKey = 'db_query_result';
  
  // Check if the result is cached
  $cachedResult = $redis->get($cacheKey);
  if ($cachedResult) {
    echo 'Using cached data: ' . $cachedResult;
  } else {
    // Query the database and cache the result
    $result = queryDatabase();
    $redis->set($cacheKey, $result, 3600); // Cache for 1 hour
    echo 'Database result: ' . $result;
  }
?>
      

<?php
  // You can implement custom logging using the PHP error_log() function or using a logging library like Monolog.
  
  // Example of logging to a file using error_log():
  $logMessage = 'This is a log message';
  error_log($logMessage, 3, '/var/log/custom_log.log');
  
  // Example using Monolog (a popular PHP logging library):
  // Install Monolog via Composer: composer require monolog/monolog
  
  use Monolog\Logger;
  use Monolog\Handler\StreamHandler;
  
  $log = new Logger('my_logger');
  $log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));
  
  // Add log entries
  $log->warning('This is a warning message');
  $log->error('This is an error message');
?>
      

<?php
  // To implement a RESTful API in PHP, you can follow the principles of REST, such as using HTTP methods (GET, POST, PUT, DELETE) and returning JSON responses.
  
  // Example of a simple RESTful API:
  header('Content-Type: application/json');
  
  if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    $response = ['message' => 'This is a GET request'];
    echo json_encode($response);
  } elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $inputData = json_decode(file_get_contents('php://input'), true);
    $response = ['message' => 'POST data received', 'data' => $inputData];
    echo json_encode($response);
  } else {
    $response = ['error' => 'Invalid method'];
    echo json_encode($response);
  }
?>
      

<?php
  // To prevent XSS attacks, ensure to sanitize user inputs and output data properly.
  
  // Example of sanitizing user input:
  $userInput = $_POST['user_input'];
  $sanitizedInput = htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');
  
  // Example of output encoding:
  echo '<p>' . $sanitizedInput . '</p>';
  
  // Always sanitize data before displaying it on a webpage to prevent malicious scripts.
?>
      

<?php
  // To handle sessions securely in PHP, use the built-in session management functions and apply security measures such as using secure session cookies.
  
  // Example of starting a session and setting session parameters:
  session_start();
  session_regenerate_id(true); // Regenerate session ID to prevent fixation
  
  // Set session cookie parameters securely:
  ini_set('session.cookie_secure', '1'); // Use secure cookies
  ini_set('session.cookie_httponly', '1'); // Prevent JavaScript access
  
  // Store user information in the session
  $_SESSION['user'] = 'JohnDoe';
  
  // Destroy the session securely upon logout
  session_unset();
  session_destroy();
?>
      

<?php
  // To implement OAuth authentication, you can use a library like OAuth2-server-php or rely on third-party providers (e.g., Google, Facebook).
  
  // Example using Google OAuth2:
  require_once 'vendor/autoload.php';
  
  $client = new Google_Client();
  $client->setClientId('YOUR_CLIENT_ID');
  $client->setClientSecret('YOUR_CLIENT_SECRET');
  $client->setRedirectUri('YOUR_REDIRECT_URI');
  
  // Set OAuth scope
  $client->addScope(Google_Service_Oauth2::USERINFO_EMAIL);
  
  // Authenticate the user
  if (isset($_GET['code'])) {
    $token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
    $client->setAccessToken($token['access_token']);
    
    $oauthService = new Google_Service_Oauth2($client);
    $userInfo = $oauthService->userinfo->get();
    echo 'Hello, ' . $userInfo->name;
  } else {
    // Generate authentication URL
    $authUrl = $client->createAuthUrl();
    echo 'Login with Google';
  }
?>
      

<?php
  // To handle file downloads securely, check the file type, size, and ensure the file is not directly accessible via URL.
  
  // Example of secure file download:
  $filePath = 'files/' . $_GET['file'];
  
  if (file_exists($filePath) && is_readable($filePath)) {
    // Set proper headers for download
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="' . basename($filePath) . '"');
    header('Content-Length: ' . filesize($filePath));
    
    // Read the file and send it to the browser
    readfile($filePath);
  } else {
    echo 'File not found or access denied!';
  }
?>
      

<?php
  // To send email using SMTP in PHP, use a library like PHPMailer or SwiftMailer.
  
  // Example using PHPMailer:
  use PHPMailer\PHPMailer\PHPMailer;
  use PHPMailer\PHPMailer\Exception;
  
  require 'vendor/autoload.php';
  
  $mail = new PHPMailer(true);
  
  try {
    $mail->isSMTP();
    $mail->Host = 'smtp.example.com';
    $mail->SMTPAuth = true;
    $mail->Username = 'your-email@example.com';
    $mail->Password = 'your-password';
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port = 587;
    
    $mail->setFrom('from-email@example.com', 'Mailer');
    $mail->addAddress('recipient@example.com', 'Joe User');
    
    $mail->Subject = 'Test email';
    $mail->Body    = 'This is a test email.';
    
    $mail->send();
    echo 'Message has been sent';
  } catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
  }
?>
      

<?php
  // To implement caching for PHP sessions, use a custom session handler like Redis or Memcached to store session data.
  
  // Example using Redis for session caching:
  session_set_save_handler(
    'open', 'close', 'read', 'write', 'destroy', 'gc'
  );
  
  function open($savePath, $sessionName) {
    $redis = new Redis();
    $redis->connect('localhost');
    return true;
  }
  
  function read($sessionId) {
    $redis = new Redis();
    $sessionData = $redis->get($sessionId);
    return $sessionData ?: '';
  }
  
  function write($sessionId, $data) {
    $redis = new Redis();
    $redis->set($sessionId, $data);
    return true;
  }
  
  session_start();
  $_SESSION['user'] = 'JohnDoe';
?>
      

<?php
  // To optimize database queries, consider indexing important columns, using SELECT queries wisely, and utilizing query caching.
  
  // Example of using indexes:
  $query = 'CREATE INDEX idx_username ON users(username)';
  $pdo->exec($query);
  
  // Use SELECT with only necessary columns:
  $stmt = $pdo->prepare('SELECT id, username FROM users');
  $stmt->execute();
  
  // Use query caching if supported:
  $stmt = $pdo->prepare('SELECT * FROM users');
  $stmt->setFetchMode(PDO::FETCH_ASSOC);
  $stmt->execute();
  $result = $stmt->fetchAll();
?>
      

<?php
  // To implement API rate limiting, use a caching system like Redis to store the number of requests a user can make within a specific time frame.
  
  // Example of rate limiting using Redis:
  $redis = new Redis();
  $redis->connect('localhost');
  
  $ip = $_SERVER['REMOTE_ADDR'];
  $rateLimitKey = 'rate_limit_' . $ip;
  
  $requests = $redis->get($rateLimitKey);
  
  if ($requests && $requests > 100) {
    // Limit exceeded
    header('HTTP/1.1 429 Too Many Requests');
    echo 'Rate limit exceeded. Try again later.';
    exit();
  }
  
  // Allow the request and increase the counter
  $redis->incr($rateLimitKey);
  $redis->expire($rateLimitKey, 3600); // Expire after 1 hour
?>
      

<?php
  // To implement logging in PHP, use the built-in error_log function or libraries like Monolog.
  
  // Example using error_log:
  $logMessage = 'User logged in at ' . date('Y-m-d H:i:s');
  error_log($logMessage, 3, 'logs/application.log'); // Log to a file
  
  // Example using Monolog:
  use Monolog\Logger;
  use Monolog\Handler\StreamHandler;
  
  $log = new Logger('my_logger');
  $log->pushHandler(new StreamHandler('logs/application.log', Logger::DEBUG));
  
  $log->info('User logged in', ['user_id' => 123]);
  $log->error('Error occurred', ['exception' => $exception]);
?>
      

<?php
  // To implement pagination in PHP, calculate the total number of pages based on the number of results and page size.
  
  // Example of pagination:
  $page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
  $perPage = 10;
  $offset = ($page - 1) * $perPage;
  
  $stmt = $pdo->prepare('SELECT * FROM articles LIMIT :offset, :limit');
  $stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
  $stmt->bindValue(':limit', $perPage, PDO::PARAM_INT);
  $stmt->execute();
  $articles = $stmt->fetchAll();
  
  // Calculate total number of pages
  $stmt = $pdo->query('SELECT COUNT(*) FROM articles');
  $totalRows = $stmt->fetchColumn();
  $totalPages = ceil($totalRows / $perPage);
  
  // Output pagination links
  for ($i = 1; $i <= $totalPages; $i++) {
    echo '' . $i . ' ';
  }
?>
      

<?php
  // To handle database transactions, use the beginTransaction, commit, and rollBack methods to ensure atomicity.
  
  // Example of database transaction:
  try {
    $pdo->beginTransaction();
    
    // Execute queries
    $pdo->exec('UPDATE users SET balance = balance - 100 WHERE id = 1');
    $pdo->exec('UPDATE users SET balance = balance + 100 WHERE id = 2');
    
    // Commit the transaction
    $pdo->commit();
  } catch (Exception $e) {
    // Rollback in case of error
    $pdo->rollBack();
    echo 'Failed: ' . $e->getMessage();
  }
?>
      

<?php
  // To secure file uploads, validate the file type, size, and ensure it is stored in a secure location.
  
  // Example of securing file uploads:
  $allowedTypes = ['image/jpeg', 'image/png'];
  $maxSize = 2 * 1024 * 1024; // 2 MB
  
  if ($_FILES['upload']['error'] === UPLOAD_ERR_OK) {
    $fileType = $_FILES['upload']['type'];
    $fileSize = $_FILES['upload']['size'];
    
    if (in_array($fileType, $allowedTypes) && $fileSize <= $maxSize) {
      $uploadDir = 'uploads/';
      $fileName = basename($_FILES['upload']['name']);
      move_uploaded_file($_FILES['upload']['tmp_name'], $uploadDir . $fileName);
      echo 'File uploaded successfully!';
    } else {
      echo 'Invalid file type or size.';
    }
  } else {
    echo 'File upload error.';
  }
?>
      

<?php
  // To implement a CMS, create a system to manage pages, categories, posts, and user permissions. This typically includes an admin panel for content creation.
  
  // Example structure:
  // 1. Create a database with tables like 'pages', 'posts', 'categories', 'users'.
  // 2. Create an admin panel to create/update content.
  // 3. Implement user permissions for content management.
  // 4. Use a templating engine like Twig for front-end rendering.
  
  // Example of a simple CMS structure:
  // 1. Display posts on the front end
  $stmt = $pdo->query('SELECT * FROM posts WHERE published = 1');
  $posts = $stmt->fetchAll();
  
  // 2. Admin page for creating posts
  if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $title = $_POST['title'];
    $content = $_POST['content'];
    
    $stmt = $pdo->prepare('INSERT INTO posts (title, content, published) VALUES (?, ?, ?)');
    $stmt->execute([$title, $content, 1]);
    
    echo 'Post created!';
  }
?>
      

<?php
  // To handle sessions securely in PHP, use secure session settings and always regenerate session IDs after login.
  
  // Example of secure session handling:
  session_start();
  
  // Set secure cookie parameters
  session_set_cookie_params([
    'lifetime' => 0, 
    'path' => '/', 
    'domain' => '', 
    'secure' => true, // Ensure cookie is only sent over HTTPS
    'httponly' => true, // Prevent JavaScript access to session cookie
    'samesite' => 'Strict', // Protect against CSRF attacks
  ]);
  
  // Regenerate session ID after login
  session_regenerate_id(true);
  
  // Store user information in session
  $_SESSION['user_id'] = $userId;
  $_SESSION['logged_in'] = true;
?>
      

<?php
  // To handle XSS attacks in PHP, sanitize user input and use output encoding to prevent injected scripts from executing.
  
  // Example of preventing XSS attacks:
  
  // Sanitize user input
  $userInput = htmlspecialchars($_POST['user_input'], ENT_QUOTES, 'UTF-8');
  
  // Output encoding to safely display content
  echo '<div>' . $userInput . '</div>';
  
  // Alternatively, use a library like HTMLPurifier to sanitize HTML content more thoroughly.
?>
      

<?php
  // To prevent SQL injection in PHP, always use prepared statements and parameterized queries.
  
  // Example of preventing SQL injection:
  $stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');
  $stmt->bindParam(':email', $_POST['email'], PDO::PARAM_STR);
  $stmt->execute();
  $user = $stmt->fetch();
  
  // Never directly insert user input into SQL queries.
?>
      

<?php
  // To send email in PHP, use the mail() function or a library like PHPMailer for more advanced features.
  
  // Example using mail():
  $to = 'recipient@example.com';
  $subject = 'Test email';
  $message = 'This is a test email.';
  $headers = 'From: sender@example.com';
  
  if (mail($to, $subject, $message, $headers)) {
    echo 'Email sent successfully!';
  } else {
    echo 'Failed to send email.';
  }
  
  // Example using PHPMailer:
  use PHPMailer\PHPMailer\PHPMailer;
  use PHPMailer\PHPMailer\Exception;
  
  require 'vendor/autoload.php';
  
  $mail = new PHPMailer(true);
  try {
    $mail->setFrom('sender@example.com', 'Sender Name');
    $mail->addAddress('recipient@example.com', 'Recipient Name');
    $mail->Subject = 'Test email';
    $mail->Body = 'This is a test email.';
    
    $mail->send();
    echo 'Email sent successfully!';
  } catch (Exception $e) {
    echo 'Failed to send email: ' . $mail->ErrorInfo;
  }
?>
      

<?php
  // To implement caching in PHP, use tools like Redis or Memcached for in-memory caching.
  
  // Example using Redis:
  $redis = new Redis();
  $redis->connect('localhost');
  
  // Set cache for a page
  $cacheKey = 'home_page';
  $cachedContent = $redis->get($cacheKey);
  
  if ($cachedContent === false) {
    // Generate page content dynamically
    $content = 'Page generated at ' . date('Y-m-d H:i:s');
    $redis->set($cacheKey, $content, 3600); // Cache for 1 hour
  } else {
    // Use cached content
    $content = $cachedContent;
  }
  
  echo $content;
?>
      

<?php
  // To implement OAuth authentication in PHP, use a library like `OAuth2` or `League OAuth2 Server`.
  
  // Example using the League OAuth2 Server:
  use League\OAuth2\Server\AuthorizationServer;
  use League\OAuth2\Server\Grant\AuthCodeGrant;
  
  $server = new AuthorizationServer();
  $grant = new AuthCodeGrant($authCodeRepository, $refreshTokenRepository);
  $server->enableGrantType($grant, new DateInterval('PT1H'));
  
  // Process the OAuth authorization request
  $server->respondToAccessTokenRequest($request, $response);
  
  // Handle authentication via redirect to OAuth provider
  header('Location: ' . $authorizationUrl);
  exit();
?>
      

<?php
  // To handle file uploads securely, validate the file type, limit the file size, and store files outside of the web root.
  
  if ($_FILES['file']['error'] == UPLOAD_ERR_OK) {
    $fileTmpPath = $_FILES['file']['tmp_name'];
    $fileName = $_FILES['file']['name'];
    $fileSize = $_FILES['file']['size'];
    $fileType = $_FILES['file']['type'];
    
    // Validate file type
    $allowedTypes = ['image/jpeg', 'image/png', 'application/pdf'];
    if (!in_array($fileType, $allowedTypes)) {
      die('Invalid file type.');
    }
    
    // Validate file size (e.g., max 5MB)
    if ($fileSize > 5242880) {
      die('File size exceeds the allowed limit.');
    }
    
    // Move the uploaded file to a secure location
    $uploadPath = '/path/to/uploads/' . $fileName;
    if (move_uploaded_file($fileTmpPath, $uploadPath)) {
      echo 'File uploaded successfully!';
    } else {
      echo 'Error uploading file.';
    }
  } else {
    echo 'Error uploading file: ' . $_FILES['file']['error'];
  }
?>
      

<?php
  // To handle errors and exceptions in PHP, you can use try-catch blocks for exceptions and set custom error handlers.
  
  // Example with try-catch block for exception handling
  try {
    if (!file_exists('important_file.txt')) {
      throw new Exception('File not found.');
    }
    // Continue with code if no exception is thrown
  } catch (Exception $e) {
    echo 'Error: ' . $e->getMessage();
  }
  
  // Example of setting a custom error handler
  set_error_handler(function($errno, $errstr, $errfile, $errline) {
    echo "Error [$errno]: $errstr in $errfile on line $errline";
  });
  
  // Trigger an error
  trigger_error('This is a custom error.');
?>
      

<?php
  // To implement JWT authentication in PHP, you can use a library like Firebase JWT.
  
  use \Firebase\JWT\JWT;
  
  // Example of generating a JWT
  $secretKey = 'your-secret-key';
  $issuedAt = time();
  $expirationTime = $issuedAt + 3600;  // jwt valid for 1 hour from the issued time
  $payload = array(
    'iat' => $issuedAt,
    'exp' => $expirationTime,
    'userId' => 1234
  );
  
  $jwt = JWT::encode($payload, $secretKey);
  
  echo 'Generated JWT: ' . $jwt;
  
  // Example of decoding and verifying a JWT
  try {
    $decoded = JWT::decode($jwt, $secretKey, array('HS256'));
    print_r($decoded);
  } catch (Exception $e) {
    echo 'Error: ' . $e->getMessage();
  }
?>
      

<?php
  // To implement a RESTful API in PHP, you can use the built-in PHP functions or use a framework like Slim or Laravel.
  
  // Example of a basic RESTful API:
  if ($_SERVER['REQUEST_METHOD'] == 'GET' && isset($_GET['id'])) {
    $id = $_GET['id'];
    echo json_encode(['id' => $id, 'name' => 'John Doe']);
  } elseif ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $data = json_decode(file_get_contents('php://input'), true);
    echo json_encode(['message' => 'User created', 'data' => $data]);
  } else {
    header('HTTP/1.1 405 Method Not Allowed');
    echo json_encode(['error' => 'Method not allowed']);
  }
  
  // Set response header for JSON
  header('Content-Type: application/json');
?>
      

<?php
  // To prevent CSRF attacks in PHP, use a CSRF token to verify that the request is coming from the same site.
  
  // Generate a CSRF token
  if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
  }
  
  // Include the CSRF token in forms
  echo '<input type="hidden" name="csrf_token" value="' . $_SESSION['csrf_token'] . '">';
  
  // Verify the CSRF token on form submission
  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($_POST['csrf_token'] != $_SESSION['csrf_token']) {
      die('CSRF token validation failed');
    }
    // Process form data
  }
?>
      

<?php
  // To securely store passwords, use PHP's password_hash() function to hash the password and password_verify() to check the hash.
  
  // Hash the password
  $password = 'user_password';
  $hashedPassword = password_hash($password, PASSWORD_BCRYPT);
  
  echo 'Hashed Password: ' . $hashedPassword;
  
  // Verify the password
  if (password_verify($password, $hashedPassword)) {
    echo 'Password is correct';
  } else {
    echo 'Password is incorrect';
  }
?>
      

<?php
  // Pagination example for large datasets
  
  // Set items per page
  $itemsPerPage = 10;
  
  // Get the current page number
  $page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
  
  // Calculate the starting point for the query
  $start = ($page - 1) * $itemsPerPage;
  
  // Fetch the data (assuming a database connection is available)
  $query = "SELECT * FROM users LIMIT $start, $itemsPerPage";
  $result = mysqli_query($connection, $query);
  
  // Output the results
  while ($row = mysqli_fetch_assoc($result)) {
    echo $row['name'] . '<br>';
  }
  
  // Calculate the total number of pages
  $totalQuery = "SELECT COUNT(*) FROM users";
  $totalResult = mysqli_query($connection, $totalQuery);
  $totalRows = mysqli_fetch_row($totalResult)[0];
  $totalPages = ceil($totalRows / $itemsPerPage);
  
  // Generate pagination links
  for ($i = 1; $i <= $totalPages; $i++) {
    echo '<a href="?page=' . $i . '">' . $i . '</a> ';
  }
?>
      

<?php
  // To prevent SQL injection, use prepared statements with parameterized queries.
  
  $connection = mysqli_connect('localhost', 'root', 'password', 'database');
  
  // Prepared statement
  $stmt = $connection->prepare('SELECT * FROM users WHERE email = ?');
  $stmt->bind_param('s', $email);
  
  // Set the parameter and execute
  $email = 'user@example.com';
  $stmt->execute();
  
  // Fetch results
  $result = $stmt->get_result();
  while ($row = $result->fetch_assoc()) {
    echo $row['name'];
  }
  
  $stmt->close();
?>
      

<?php
  // Slim framework example for creating a RESTful API.
  
  require 'vendor/autoload.php';
  
  $app = new \Slim\App();
  
  // Define GET route
  $app->get('/users/{id}', function ($request, $response, $args) {
    $id = $args['id'];
    return $response->withJson(['id' => $id, 'name' => 'John Doe']);
  });
  
  // Define POST route
  $app->post('/users', function ($request, $response) {
    $data = $request->getParsedBody();
    return $response->withJson(['message' => 'User created', 'data' => $data]);
  });
  
  $app->run();
?>
      

<?php
  // Session management in PHP
  
  // Start a session
  session_start();
  
  // Store user information in session variables
  $_SESSION['user_id'] = 1234;
  $_SESSION['user_name'] = 'John Doe';
  
  // Access session data
  echo 'User ID: ' . $_SESSION['user_id'];
  
  // Destroy session and remove all session variables
  session_destroy();
?>
      

<?php
  // Sending an email using PHP's mail() function
  
  $to = 'recipient@example.com';
  $subject = 'Test Email';
  $message = 'Hello, this is a test email.';
  $headers = 'From: sender@example.com' . "\r\n" .
             'Reply-To: sender@example.com' . "\r\n" .
             'X-Mailer: PHP/' . phpversion();
  
  if (mail($to, $subject, $message, $headers)) {
    echo 'Email sent successfully';
  } else {
    echo 'Failed to send email';
  }
?>
      

<?php
  // Creating a custom exception class in PHP
  
  class MyCustomException extends Exception {
    public function errorMessage() {
      return 'Error on line ' . $this->getLine() . ' in ' . $this->getFile() . ': ' . $this->getMessage();
    }
  }
  
  try {
    // Trigger an exception
    throw new MyCustomException('Something went wrong');
  } catch (MyCustomException $e) {
    echo $e->errorMessage();
  }
?>
      

<?php
  // Preventing file upload exploitation
  
  // Check if file was uploaded
  if ($_FILES['file']['error'] == UPLOAD_ERR_OK) {
    // Get file details
    $fileTmpPath = $_FILES['file']['tmp_name'];
    $fileName = $_FILES['file']['name'];
    $fileSize = $_FILES['file']['size'];
    $fileType = $_FILES['file']['type'];
    
    // Validate file extension (e.g., only allow images)
    $allowedExtensions = ['jpg', 'png', 'gif'];
    $fileExtension = pathinfo($fileName, PATHINFO_EXTENSION);
    
    if (!in_array($fileExtension, $allowedExtensions)) {
      echo 'Invalid file type';
    } else {
      // Move file to the server
      move_uploaded_file($fileTmpPath, 'uploads/' . $fileName);
      echo 'File uploaded successfully';
    }
  } else {
    echo 'Error uploading file';
  }
?>
      

<?php
  // User authentication example
  
  session_start();
  
  // Check if user is already logged in
  if (isset($_SESSION['user_id'])) {
    echo 'User is logged in';
  } else {
    // Validate login
    if (isset($_POST['username']) && isset($_POST['password'])) {
      $username = $_POST['username'];
      $password = $_POST['password'];
      
      // Retrieve user from database (example)
      $user = getUserFromDatabase($username);
      
      // Check password
      if (password_verify($password, $user['password'])) {
        $_SESSION['user_id'] = $user['id'];
        echo 'Login successful';
      } else {
        echo 'Invalid credentials';
      }
    }
  }
  
  // Example database query (function to retrieve user info)
  function getUserFromDatabase($username) {
    // Example database connection and query
    return ['id' => 1, 'username' => 'john_doe', 'password' => password_hash('password', PASSWORD_BCRYPT)];
  }
?>
      

<?php
  // Example of a simple form in PHP
  
  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name = $_POST['name'];
    echo 'Hello, ' . htmlspecialchars($name);
  }
  
  // Display the form
  echo '<form method="POST">';
  echo '<input type="text" name="name" placeholder="Enter your name">';
  echo '<button type="submit">Submit</button>';
  echo '</form>';
?>
      

<?php
  // Start the session
  session_start();
  
  // Set session variables
  $_SESSION['username'] = 'JohnDoe';
  $_SESSION['user_id'] = 1;
  
  // Retrieve session variables
  echo 'Hello, ' . $_SESSION['username'];
  
  // Destroy the session
  session_destroy();
?>
      

<?php
  // MySQL connection
  $conn = new mysqli('localhost', 'username', 'password', 'database');
  
  // Check connection
  if ($conn->connect_error) {
    die('Connection failed: ' . $conn->connect_error);
  }
  
  // SQL query
  $sql = 'SELECT id, username FROM users';
  $result = $conn->query($sql);
  
  // Fetch data
  if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
      echo 'id: ' . $row['id'] . ' - Username: ' . $row['username'] . '<br>';
    }
  } else {
    echo 'No records found';
  }
  
  $conn->close();
?>
      

<?php
  // Handle file upload
  
  if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['file'])) {
    $fileTmpPath = $_FILES['file']['tmp_name'];
    $fileName = $_FILES['file']['name'];
    
    // Move the file to the server
    if (move_uploaded_file($fileTmpPath, 'uploads/' . $fileName)) {
      echo 'File uploaded successfully';
    } else {
      echo 'Error uploading file';
    }
  }
?>
      

<?php
  // Form validation
  
  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name = $_POST['name'];
    
    if (empty($name)) {
      echo 'Name is required';
    } else {
      echo 'Hello, ' . htmlspecialchars($name);
    }
  }
  
  // Display the form
  echo '<form method="POST">';
  echo '<input type="text" name="name" placeholder="Enter your name">';
  echo '<button type="submit">Submit</button>';
  echo '</form>';
?>
      

<?php
  // Start the session
  session_start();
  
  // Check if user is already logged in
  if (isset($_SESSION['user_id'])) {
    echo 'You are logged in as ' . $_SESSION['username'];
  } else {
    // Validate login
    if (isset($_POST['username']) && isset($_POST['password'])) {
      // Check credentials
      if ($_POST['username'] == 'admin' && $_POST['password'] == 'password') {
        $_SESSION['user_id'] = 1;
        $_SESSION['username'] = 'admin';
        echo 'Login successful';
      } else {
        echo 'Invalid credentials';
      }
    }
    
    // Display login form
    echo '<form method="POST">';
    echo '<input type="text" name="username" placeholder="Username">';
    echo '<input type="password" name="password" placeholder="Password">';
    echo '<button type="submit">Login</button>';
    echo '</form>';
  }
?>
      

<?php
  // Securing PHP website
  
  // Use prepared statements for database queries to prevent SQL injection
  $stmt = $conn->prepare('SELECT id, username FROM users WHERE username = ?');
  $stmt->bind_param('s', $username);
  $stmt->execute();
  
  // Use password hashing for storing passwords
  $hashedPassword = password_hash('password', PASSWORD_BCRYPT);
  
  // Use HTTPS (ensure site is served over HTTPS)
  echo 'Ensure that your site is served over HTTPS to encrypt data in transit.';
  
  // Use CSRF protection (example: generate and validate CSRF tokens)
  if ($_POST['csrf_token'] == $_SESSION['csrf_token']) {
    echo 'CSRF token valid';
  } else {
    echo 'CSRF token invalid';
  }
?>
      

<?php
  // Error handling in PHP
  
  // Display errors
  ini_set('display_errors', 1);
  error_reporting(E_ALL);
  
  // Handle specific errors using try-catch
  try {
    // Some code that may throw an exception
    throw new Exception('Something went wrong');
  } catch (Exception $e) {
    echo 'Error: ' . $e->getMessage();
  }
  
  // Custom error handler
  function customError($errno, $errstr) {
    echo "Error: [$errno] $errstr";
  }
  set_error_handler('customError');
  
  // Trigger an error
  trigger_error('Custom error triggered');
?>
      

<?php
  // Manage file permissions in PHP
  
  // Set file permissions (e.g., 644 for readable and writable by owner, readable by others)
  chmod('path/to/file.txt', 0644);
  
  // Check file permissions
  if (is_readable('path/to/file.txt')) {
    echo 'File is readable';
  } else {
    echo 'File is not readable';
  }
  
  // Change file owner (make sure the script has sufficient permissions)
  chown('path/to/file.txt', 'new_owner');
?>
      

<?php
  // Set a cookie
  setcookie('user', 'JohnDoe', time() + (86400 * 30), '/'); // expires in 30 days
  
  // Check if the cookie is set
  if(isset($_COOKIE['user'])) {
    echo 'User: ' . $_COOKIE['user'];
  } else {
    echo 'Cookie is not set';
  }
?>
      

<?php
  // PDO connection to MySQL
  
  $dsn = 'mysql:host=localhost;dbname=database';
  $username = 'root';
  $password = '';
  
  try {
    $pdo = new PDO($dsn, $username, $password);
    // Set the PDO error mode to exception
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo 'Connected successfully';
  } catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
  }
?>
      

<?php
  // Redirect to another page
  header('Location: http://www.example.com');
  exit;
?>
      

<?php
  // Prepared statement to prevent SQL injection
  
  $stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username');
  $stmt->execute(['username' => 'JohnDoe']);
  $result = $stmt->fetchAll();
  
  foreach ($result as $row) {
    echo $row['username'] . '<br>';
  }
?>
      

<?php
  // Handling form data
  
  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name = $_POST['name'];
    echo 'Hello, ' . htmlspecialchars($name);
  }
  
  // Display the form
  echo '<form method="POST">';
  echo '<input type="text" name="name" placeholder="Enter your name">';
  echo '<button type="submit">Submit</button>';
  echo '</form>';
?>
      

<?php
  // Check if a file exists
  
  $file = 'path/to/file.txt';
  if (file_exists($file)) {
    echo 'File exists';
  } else {
    echo 'File does not exist';
  }
?>
      

<?php
  // Send an email
  
  $to = 'recipient@example.com';
  $subject = 'Test Email';
  $message = 'This is a test email';
  $headers = 'From: sender@example.com';
  
  if (mail($to, $subject, $message, $headers)) {
    echo 'Email sent successfully';
  } else {
    echo 'Email sending failed';
  }
?>
      

<?php
  // Handling file uploads
  
  if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['file'])) {
    $fileTmpPath = $_FILES['file']['tmp_name'];
    $fileName = $_FILES['file']['name'];
    $uploadDir = 'uploads/';
    $destination = $uploadDir . $fileName;
    
    if (move_uploaded_file($fileTmpPath, $destination)) {
      echo 'File uploaded successfully';
    } else {
      echo 'Error uploading file';
    }
  }
  
  echo '<form method="POST" enctype="multipart/form-data">';
  echo '<input type="file" name="file">';
  echo '<button type="submit">Upload</button>';
  echo '</form>';
?>
      

<?php
  // Start session
  session_start();
  
  // Set session variable
  $_SESSION['user'] = 'JohnDoe';
  
  // Retrieve session variable
  echo 'User: ' . $_SESSION['user'];
  
  // Destroy session
  session_destroy();
?>
      

<?php
  // Sanitize user input
  
  $userInput = $_POST['name'];
  $sanitizedInput = filter_var($userInput, FILTER_SANITIZE_STRING);
  
  echo 'Sanitized input: ' . $sanitizedInput;
?>
      

<?php
  // Custom error handler
  
  function customError($errno, $errstr) {
    echo "Error [$errno]: $errstr";
  }
  
  set_error_handler('customError');
  
  // Trigger an error
  echo 10 / 0; // Will trigger a warning
?>
      

<?php
  // PostgreSQL connection using PDO
  
  $dsn = 'pgsql:host=localhost;dbname=database';
  $username = 'user';
  $password = 'password';
  
  try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo 'Connected to PostgreSQL successfully';
  } catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
  }
?>
      

<?php
  // Send email with attachment using PHPMailer
  
  require 'PHPMailerAutoload.php';
  
  $mail = new PHPMailer;
  $mail->setFrom('from@example.com', 'Mailer');
  $mail->addAddress('recipient@example.com', 'Joe User');
  $mail->Subject = 'Here is your file';
  $mail->Body = 'Please find the attached file.';
  
  // Attach a file
  $mail->addAttachment('/path/to/file.zip');
  
  if($mail->send()) {
    echo 'Email sent';
  } else {
    echo 'Mailer Error: ' . $mail->ErrorInfo;
  }
?>
      

<?php
  // Generate a random number between 1 and 100
  $randomNumber = rand(1, 100);
  echo 'Random number: ' . $randomNumber;
?>
      

<?php
  // Simple login system
  
  $username = 'admin';
  $password = 'password123';
  
  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($_POST['username'] == $username && $_POST['password'] == $password) {
      echo 'Login successful';
    } else {
      echo 'Invalid credentials';
    }
  }
  
  echo '<form method="POST">';
  echo '<input type="text" name="username">';
  echo '<input type="password" name="password">';
  echo '<button type="submit">Login</button>';
  echo '</form>';
?>
      

<?php
  // Get the current date
  
  echo date('Y-m-d H:i:s'); // Output: 2025-05-11 15:23:01
?>
      

<?php
  // Get the current timestamp
  
  $timestamp = time();
  echo 'Current timestamp: ' . $timestamp;
?>
      

<?php
  // Add an element to the end of an array
  
  $arr = array(1, 2, 3);
  array_push($arr, 4);
  
  print_r($arr); // Output: [1, 2, 3, 4]
?>
      

<?php
  // Split a string into an array
  
  $str = 'apple,banana,cherry';
  $arr = explode(',', $str);
  
  print_r($arr); // Output: ['apple', 'banana', 'cherry']
?>
      

<?php
  // Join array elements into a string
  
  $arr = ['apple', 'banana', 'cherry'];
  $str = implode(',', $arr);
  
  echo $str; // Output: 'apple,banana,cherry'
?>
      

<?php
  // Check if a variable is set
  
  if (isset($var)) {
    echo 'Variable is set';
  } else {
    echo 'Variable is not set';
  }
?>
      

<?php
  // Regenerate session ID
  
  session_start();
  session_regenerate_id(true);
  
  echo 'Session ID regenerated';
?>
      

<?php
  // Send JSON response
  
  header('Content-Type: application/json');
  $response = array('status' => 'success', 'message' => 'Data received');
  echo json_encode($response);
?>
      

<?php
  // Prevent SQL injection using prepared statements
  
  $conn = new PDO('mysql:host=localhost;dbname=test', 'root', '');
  $stmt = $conn->prepare('SELECT * FROM users WHERE username = :username');
  $stmt->bindParam(':username', $username);
  $stmt->execute();
  $result = $stmt->fetch();
?>
      

<?php
  // Handle errors using try-catch
  
  try {
    $result = 10 / 0;
  } catch (Exception $e) {
    echo 'Error: ' . $e->getMessage();
  }
?>
      

<?php
  // Redirect to another page
  
  header('Location: https://www.example.com');
  exit;
?>
      

<?php
  // Handle file upload
  
  if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['file'])) {
    $fileTmpPath = $_FILES['file']['tmp_name'];
    $fileName = $_FILES['file']['name'];
    $uploadDir = 'uploads/';
    $destination = $uploadDir . $fileName;
    
    if (move_uploaded_file($fileTmpPath, $destination)) {
      echo 'File uploaded successfully';
    } else {
      echo 'Error uploading file';
    }
  }
  
  echo '<form method="POST" enctype="multipart/form-data">';
  echo '<input type="file" name="file">';
  echo '<button type="submit">Upload</button>';
  echo '</form>';
?>
      

<?php
  // Sort an array in ascending order
  
  $arr = array(3, 2, 5, 1, 4);
  sort($arr);
  
  print_r($arr); // Output: [1, 2, 3, 4, 5]
?>
      

<?php
  // Check if a variable is set
  
  $var = 'Hello';
  if (isset($var)) {
    echo 'Variable is set';
  } else {
    echo 'Variable is not set';
  }
?>
      

<?php
  // Check if a variable is empty
  
  $var = '';
  if (empty($var)) {
    echo 'Variable is empty';
  } else {
    echo 'Variable is not empty';
  }
?>
      

What is the difference between include() and require() in PHP?
<?php
// include() will emit a warning if the file is not found, but the script continues
include('optional.php');

// require() will emit a fatal error and stop the script if the file is not found
require('essential.php');
?>
      

How do you create a constant in PHP?
<?php
// define() is used to declare a constant value
define("SITE_NAME", "My Website");

// Use the constant
echo SITE_NAME;
?>
      

How can you redirect to another page in PHP?
<?php
// Use header() to redirect to another page
header("Location: http://example.com");
exit;
?>
      

What are magic constants in PHP?
<?php
// Magic constants like __LINE__ return current line number
echo "Line number: " . __LINE__;

// __FILE__ returns the full path and filename
echo "File path: " . __FILE__;
?>
      

How can you handle exceptions in PHP?
<?php
try {
  // Code that may throw an exception
  throw new Exception("Something went wrong!");
} catch (Exception $e) {
  // Handle the exception
  echo "Caught exception: " . $e->getMessage();
}
?>
      

What are traits in PHP?
<?php
trait Logger {
  public function log($msg) {
    echo "Log: $msg";
  }
}

class MyClass {
  use Logger;
}

$obj = new MyClass();
$obj->log("Using trait in PHP");
?>
      

How do you define an interface in PHP?
<?php
interface Animal {
  public function makeSound();
}

class Dog implements Animal {
  public function makeSound() {
    echo "Bark";
  }
}

$d = new Dog();
$d->makeSound();
?>
      

What is the use of final keyword in PHP?
<?php
class Base {
  final public function hello() {
    echo "Hello from Base";
  }
}

class Derived extends Base {
  // Cannot override final method hello()
}
?>
      

How to send JSON response in PHP?
<?php
$data = ["status" => "success", "message" => "Data saved"];
header('Content-Type: application/json');
echo json_encode($data);
?>
      

How do you upload files in PHP?
<?php
if ($_FILES["file"]["error"] == 0) {
  move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]);
  echo "File uploaded!";
}
?>
      

What is the use of the __construct() function in PHP?
<?php
class User {
  public function __construct() {
    echo "Constructor called!";
  }
}

$u = new User();
?>
      

How do you start a PHP session?
<?php
// Start the session
session_start();

// Set a session variable
$_SESSION["user"] = "Michael";

// Retrieve it
echo $_SESSION["user"];
?>
      

How do you start a PHP session?
<?php
// Start the session at the beginning of the script
session_start();
$_SESSION["username"] = "admin";
echo $_SESSION["username"];
?>
      

How to destroy a session in PHP?
<?php
session_start(); // Start session
session_unset(); // Unset all session variables
session_destroy(); // Destroy the session
?>
      

How to check if a session variable is set in PHP?
<?php
session_start();
if (isset($_SESSION["username"])) {
  echo "Username is: " . $_SESSION["username"];
}
?>
      

How to set a cookie in PHP?
<?php
// Set a cookie named "user" with value "John" that expires in 1 hour
setcookie("user", "John", time() + 3600, "/");
?>
      

How to retrieve a cookie in PHP?
<?php
// Access the cookie named "user"
if (isset($_COOKIE["user"])) {
  echo "User is: " . $_COOKIE["user"];
}
?>
      

How to delete a cookie in PHP?
<?php
// Set the cookie expiration time to past to delete it
setcookie("user", "", time() - 3600, "/");
?>
      

How to validate an email address in PHP?
<?php
$email = "test@example.com";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
  echo "Valid email address";
} else {
  echo "Invalid email address";
}
?>
      

How to validate an integer in PHP?
<?php
$number = "123";
if (filter_var($number, FILTER_VALIDATE_INT)) {
  echo "Valid integer";
} else {
  echo "Not a valid integer";
}
?>
      

How to filter an array in PHP?
<?php
$numbers = [1, 2, 3, 4, 5];
$even = array_filter($numbers, function($num) {
  return $num % 2 == 0;
});
print_r($even);
?>
      

How to sanitize a string in PHP?
<?php
$dirty = "<script>alert('XSS')</script>";
$clean = filter_var($dirty, FILTER_SANITIZE_STRING);
echo $clean;
?>
      

<?php
// fopen() opens a file and returns a file pointer
$file = fopen("newfile.txt", "w"); // 'w' mode means write
if ($file) {
  echo "File created successfully.";
  fclose($file); // Close the file
}
?>
      

<!--
GET sends data via the URL and is visible in the address bar.
POST sends data in the request body and is more secure for sensitive data.
-->
<form method="get">
  <input type="text" name="name">
</form>

<form method="post">
  <input type="text" name="name">
</form>
      

<form method="post" enctype="multipart/form-data">
  <input type="file" name="upload">
  <input type="submit" value="Upload">
</form>

<?php
// $_FILES is used to access uploaded file details
if (move_uploaded_file($_FILES["upload"]["tmp_name"], "uploads/" . $_FILES["upload"]["name"])) {
  echo "File uploaded successfully.";
} else {
  echo "File upload failed.";
}
?>
      

<?php
// A session stores user data across multiple pages
session_start(); // Start the session
$_SESSION["username"] = "John"; // Store data
echo $_SESSION["username"]; // Retrieve data
?>
      

<?php
// header() is used for redirection
header("Location: welcome.php");
exit; // Important to prevent further code execution
?>
      

<?php
// == compares values only
// === compares both value and data type
var_dump(5 == "5"); // true
var_dump(5 === "5"); // false (int vs string)
?>
      

<?php
// mail() sends emails from the server
$to = "user@example.com";
$subject = "Test Mail";
$body = "This is a test message.";
$headers = "From: admin@example.com";

if (mail($to, $subject, $body, $headers)) {
  echo "Mail sent.";
} else {
  echo "Mail failed.";
}
?>
      

<?php
// Use prepared statements with PDO
$db = new PDO("mysql:host=localhost;dbname=test", "root", "");
$stmt = $db->prepare("SELECT * FROM users WHERE username = ?");
$stmt->execute([$_POST["username"]]);
$result = $stmt->fetchAll();
?>
      

<?php
// Traits allow code reuse across classes
trait Logger {
  public function log($msg) {
    echo "Log: $msg";
  }
}

class App {
  use Logger;
}

$obj = new App();
$obj->log("Hello");
?>
      

<!--
Composer is a dependency manager for PHP.
It allows you to manage libraries and packages in your project.
Use composer.json to define dependencies.
-->

composer init
composer require phpmailer/phpmailer
      

<?php
// define() sets a constant value
define("SITE_NAME", "My Website");
echo SITE_NAME;
?>
      

<?php
abstract class Animal {
  abstract public function makeSound();
  public function move() {
    echo "Moving...";
  }
}

class Dog extends Animal {
  public function makeSound() {
    echo "Bark!";
  }
}

$dog = new Dog();
$dog->makeSound(); // Output: Bark!
?>
      

<?php
try {
  $pdo = new PDO("mysql:host=localhost;dbname=testdb", "root", "");
  echo "Connected!";
} catch (PDOException $e) {
  echo "Connection failed: " . $e->getMessage();
}
?>
      

<?php
// include will show a warning if the file is not found
include "file.php";

// require will show a fatal error and stop the script
require "file.php";
?>
      

<?php
// Set a cookie
setcookie("user", "John", time() + (86400 * 30), "/");

// Read a cookie
if (isset($_COOKIE["user"])) {
  echo "User is " . $_COOKIE["user"];
}
?>
      

<?php
class Car {
  public $brand;
  function setBrand($brand) {
    $this->brand = $brand;
  }
  function getBrand() {
    return $this->brand;
  }
}

$car1 = new Car();
$car1->setBrand("Toyota");
echo $car1->getBrand(); // Toyota
?>
      

<?php
class Person {
  public function __construct() {
    echo "Object created!";
  }
  public function __destruct() {
    echo "Object destroyed!";
  }
}

$p = new Person();
?>
      

<?php
try {
  throw new Exception("Error occurred");
} catch (Exception $e) {
  echo "Caught error: " . $e->getMessage();
}
?>
      

<?php
$fruits = ["apple", "banana", "cherry"];
foreach ($fruits as $fruit) {
  echo $fruit . "<br>";
}
?>
      

<?php
define("COLORS", ["red", "green", "blue"]);
echo COLORS[1]; // green
?>
      

<?php
$password = "secret123";
$hash = password_hash($password, PASSWORD_DEFAULT);
echo $hash;
?>
      

<?php
$email = "user@example.com";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
  echo "Valid email.";
} else {
  echo "Invalid email.";
}
?>
      

<?php
echo date("Y-m-d H:i:s");
?>
      

<?php
$items = [1, 2, 3, 4];
echo count($items); // Output: 4
?>
      

<?php
$name = "John";
if (isset($name)) {
  echo "Name is set.";
}
?>
      

<?php
$str = "HELLO";
echo strtolower($str); // Output: hello
?>
      

<?php
$name = "John";
if (isset($name)) {
  echo "Variable is set!";
}
?>
      

<?php
$number = "42";
$intValue = (int)$number;
echo $intValue;
?>
      

<?php
$data = ["name" => "Alice", "age" => 30];
$json = json_encode($data);
echo $json;
?>
      

<?php
$json = '{"name":"Alice","age":30}';
$data = json_decode($json, true);
echo $data["name"];
?>
      

<?php
trait Logger {
  public function log($msg) {
    echo "Log: $msg";
  }
}

class User {
  use Logger;
}

$u = new User();
$u->log("User created");
?>
      

<?php
$to = "example@example.com";
$subject = "Test";
$message = "Hello!";
$headers = "From: webmaster@example.com";

mail($to, $subject, $message, $headers);
?>
      

<?php
$a = 5;
$b = "5";

var_dump($a == $b);  // true (value match)
var_dump($a === $b); // false (type mismatch)
?>
      

<?php
session_start();
$_SESSION["user"] = "John";
echo $_SESSION["user"];
?>
      

<?php
session_start();
session_unset();
session_destroy();
?>
      

<?php
if (file_exists("test.txt")) {
  echo "File exists.";
} else {
  echo "File does not exist.";
}
?>
      

<?php
$handle = fopen("test.txt", "r");
while (!feof($handle)) {
  $line = fgets($handle);
  echo $line . "<br>";
}
fclose($handle);
?>