So I was trying to buy a domain 1 day, and it ended up forcing me into a chat with them, this is how it went:
Quote:Conversation with namecheap support
Hi! If you have an account, please
for a more tailored and personal service. Alternatively, please provide your
Avatar
One of our Customer Support agents will be with you soon. Stay tuned!
23 Sep 2023, 8:12 PM
Avatar
Jayalaxmi Ravikumar
joined the chat
23 Sep 2023, 8:13 PM
secureservers.top
23 Sep 2023, 8:13 PM
Hello, this is Jayalaxmi here! Thank you for contacting our Domain's Live Chat Support!
Avatar
Could you elaborate on the question, related to the domain please?
23 Sep 2023, 8:13 PM
Was trying to buy secureservers.top, ran credit and timed out. Went in to see if it would re-buy but pulls up live chat
23 Sep 2023, 8:13 PM
Avatar
Namecheap responsibly tries to prevent abusive domain registrations and reduce Internet fraud. Some of the domains contain specific word combinations (keywords) that may be used for illegal activity or trademark infringement.
23 Sep 2023, 8:15 PM
Oh says it contains restricted phrases in the info pane.
23 Sep 2023, 8:15 PM
Unfortunately, our system has detected that your chosen domain contains one of the keywords that are automatically banned, and therefore, it has blocked its registration.
We can whitelist the domain in question for you manually if the corresponding department investigates the case and proves that it is legit. Once it is done, you'll be able to proceed with submitting its registration further.
Avatar
I understand that not all uses of domains with these keywords have abusive purposes. Still, to check the possibility of whitelisting the domain, I will need you to answer two questions.
Firstly, could you please share for what purposes you use its website or any other services connected with the domain?
23 Sep 2023, 8:15 PM
It's mostly going to be for testing SSL connections between a few servers I own. Thought it was cleverly close.
23 Sep 2023, 8:16 PM
Avatar
Secondly, could you please confirm that you understand the following?
- If the case is proven to be a trademark infringement or if it's used for illicit activities, you run the risk of losing the domain with no possibility of a refund.
It’s a standard procedure for all the domains ...
23 Sep 2023, 8:18 PM
Understood
23 Sep 2023, 8:18 PM
Avatar
Please allow me 7 - 8 minutes to check the details for you.
23 Sep 2023, 8:20 PM
Alright
23 Sep 2023, 8:21 PM
Avatar
Do you have any documents related to the purpose the domain will be used?
23 Sep 2023, 8:28 PM
Avatar
nfortunately, I have not gotten replies from you for some time. Are we still connected?
23 Sep 2023, 8:33 PM
Yes I am.
23 Sep 2023, 8:40 PM
Avatar
?Could you please specify if you have any documents
23 Sep 2023, 8:42 PM
I don't know what I could show you. Apache installed on a server files? or i'm not sure, 1 second I'm looking for something, the thing is I don't have the domain so nothing is connected to it yet
23 Sep 2023, 8:44 PM
Avatar
Sure, take your time.
23 Sep 2023, 8:47 PM
like the last domain i bought was specifically for nginx reverse proxy in house. Now I'm looking to enter from outside through a server specifically vpn. Domain is just easier to remember and connect through
Please allow me sometime.
23 Sep 2023, 8:49 PM
xxx.xxx.xx.xx this ip will be linking to xxx.xxx. It's just for secure connections intermingled. I haven't built it yet because I need a second domain to assign the server.
23 Sep 2023, 8:50 PM
Avatar
Unfortunately, the domain name cannot be registered with Namecheap. Please accept our apologies for the inconvenience.
What is the restricted phrase?
23 Sep 2023, 8:58 PM
Avatar
Unfortunately, your question refers to our internal flow and policies. Such information is confidential and I cannot share it. You may send an alternative domain name so that I check if it does not contain restricted combinations.
23 Sep 2023, 8:58 PM
Avatar
Please let me know if I can assist you with anything else.
23 Sep 2023, 8:59 PM
I'll go elsewhere
Make me explain myself and act like it's not adequate enough
23 Sep 2023, 9:01 PM
Avatar
Please let me transfer our chat session to another support representative for further assistance with your question.
23 Sep 2023, 9:02 PM
Avatar
Anna Pysarenko
joined the chat
23 Sep 2023, 9:03 PM
Jayalaxmi Ravikumar left the chat
23 Sep 2023, 9:03 PM
Avatar
Greetings! My name is Anna, will be happy to assist you further. Please allow me 5-10 minutes to look through your previous conversation, review the necessary details, and look into your request
23 Sep 2023, 9:03 PM
ok
Our system has detected a restricted word within your domain, and we cannot whitelist this domain name
Avatar
If you want to check more information, please contact our Legal&Abuse team directly via email at [email protected]
23 Sep 2023, 9:09 PM
Avatar
Are we still connected?
23 Sep 2023, 9:17 PM
Avatar
Anytime! Should you need any further assistance - just let me know
23 Sep 2023, 9:17 PM
It's not like you could assist me, just want my project ideas or something. Very strange.
TL / DR : Namecheap asking me weird questions just to buy a domain. Then inevitably deny me access to the domain. Want me to explain what it will be used for, also wanting me to send documents referencing what it will be used for. Went straight to godaddy had 0 issue, and even bought 3 years so I don't have that hassle at least for a little while.
Side note for everyone: I've been "renting" domains for 10+ years from them. No issues what so ever. Never had a domain 'banned' or whatever he was saying could happen. EVER. No reason they should be harrassing me. I have a simple gaming forum, and a home server I want to work around.
MAKE SURE TO CLICK CHEAPEST RENEWALS. That's where they get a lot of people. Sign on price is cheap but renewal is ridiculous.
Then click Domain level (Top Level Domains is preferred for me)
I use godaddy now for .top domains. Cheapest to renew right now. But according to that list there are cheaper out there. So may try some others from it. Site has changed a bit since I used it.
Posted by: xSicKxBot - 12-09-2025, 08:24 AM - Forum: Python
- No Replies
[Tut] Finviz Screening for Magic Formula Investing (High ROC, Low P/E)
Learn how to apply Joel Greenblatt’s legendary ‘Magic Formula’ investing strategy without paying for expensive software.
I’ll break down the core math behind buying good companies at cheap prices (High Return on Capital + High Earnings Yield) and give you a step-by-step tutorial on setting up a custom scan in Finviz.
Watch to see exactly how to filter the market to find the best potential value stocks for your portfolio right now:
A multi-step form is one of the best ways to replace a long form to make the customer feel easy. Example: a student enrolment form will usually be very long. If it is partitioned into multi-steps with section-wise sub forms, it encourages enduser to proceed forward. And importantly the merit is that it will increase your signup rate.
In this React tutorial, a registration form is partitioned into 4 steps. Those are to collect general, contact, personal, and authentication details from the users. Each step loads a sub-form with corresponding sections. Each subform is a separate component with proper structure and easy maintainability.
Rendering multi-step registration form
This RegisterForm is created as a parent React Form component. It loads all the sub-components created for rendering a multi-step form with validation and a progress bar.
It requires the following custom React component created for this example.
GeneralInfo – to collect basic information, first and last names.
ContactInfo – to collect phone or WhatsApp numbers.
PersonalInfo – to collect a person’s date of birth and gender.
ConfirmInfo – is a last step to register confidential information and confirm registration.
All information is stored in the formData by using the corresponding handleChange hook.
Additionally, this JSX has a Toast container to display success or error responses on the user-entered data.
There is a step navigation interface that helps to move along the registration steps. The step navigation helps to verify the data before clicking confirmation.
Form progress bar with numbered in-progress state of registration
When a multi-step form interface is used, the progress bar and prev-next navigation controls are very important usability.
This example provides both of these controls which will be useful to learn how to make this for other similar cases.
The progress bar contains circled, numbered nodes represent each step. This node is a container that denotes the title and the step number. It checks the useState for the current step and highlights the node accordingly.
The conditional statements load the CSS className ‘active’ dynamically when loading the progress bar to the UI.
All the completed steps are highlighted by a filled background and shows clarity on the current state.
React Form components collecting types of user information
We have seen all 4 sub-form components created for this React example. Those component purposes are described in the explanation of the parent React container.
Each form component accepts the formData, handleChange, nextStep references. The parent component has the scope of reading all the sub-form field data. It supplies the data with the corresponding handleChange hook to each step.
The main RegisterForm JSX contains conditional statements to check the current step. Then, it load the corresponding sub form components based on the in-progressing step managed in a React useState.
Step 4 – Collecting user consent and confidential information
src/components/FormSteps/Confirmation.jsx
import { useState } from "react";
import { toast } from "react-toastify";
import "react-toastify/dist/ReactToastify.css";
import axios from "axios";
import SERVER_SIDE_API_ROOT from "../../config";
const Confirmation = ({ formData, handleChange, prevStep, setFormData, setStep }) => { const [errors, setErrors] = useState({}); const handleSubmit = async (e) => { e.preventDefault(); const newErrors = {}; if (!formData.username) newErrors.username = "Username is required"; if (!formData.password) newErrors.password = "Password is required"; else if (formData.password.length < 6) newErrors.password = "Password must be at least 6 characters"; if (!formData.terms) newErrors.terms = "You must agree to the terms"; setErrors(newErrors); if (Object.keys(newErrors).length > 0) return; try { const res = await axios.post(`${SERVER_SIDE_API_ROOT}/multi-step-form.php`, formData); if (res.data.success) { toast.success(res.data.message || "User registered successfully!"); setFormData({ first_name: "", last_name: "", email: "", phone: "", dob: "", gender: "", username: "", password: "", terms: false, }); setStep(1); setErrors({}); } else { toast.error(res.data.message || "Registration failed!"); } } catch (err) { console.error(err); toast.error("Error while saving user data."); } }; const renderError = (field) => errors[field] ? <div className="ribbon-alert">{errors[field]}</div> : null;
return ( <div className="page"> <div className="title">Confirm</div> <div className="field"> <div className="label">Username</div> <input type="text" name="username" value={formData.username} onChange={handleChange} className={errors.username ? "is-invalid" : ""} /> {renderError("username")} </div> <div className="field"> <div className="label">Password</div> <input type="password" name="password" value={formData.password} onChange={handleChange} className={errors.password ? "is-invalid" : ""} /> {renderError("password")} </div> <div className="field-terms"> <label> <input type="checkbox" name="terms" checked={formData.terms} onChange={handleChange} />{" "} I agree with the terms. </label> {renderError("terms")} </div> <div className="field btns"> <button type="button" onClick={prevStep}>Back</button> <button type="submit" onClick={handleSubmit}>Register</button> </div> </div>
);
};
export default Confirmation;
PHP endpoint processing multi-step form data
It is a usual PHP file which not need to describe if you are already familiar with how the PHP user registration works. It reads the form data posted by the front-end multi-step React form.
With this form data, it builds the database insert query to save the user-entered information to the backend.
This example has the server-side validation for a few fields. If the validation process catches any problem with the submitted data, then it composes an error response to the React frontend.
Mainly, it validates email format and password-strength (minimally by its length). Password strength checking has no limitations. Based on the application sensitivity we are free to add as much validation as possible which is good for a security point of view.
Note: The SQL script for the user database is in the downloadable source code attached with this tutorial in multi-step-form-validation-api/users.sql.
The below steps help to set up this example to run in your environment.
Download the source code into your React project directory.
Copy the multi-step-form-validation-api into your PHP root.
Create a database multistep_form_validation_db and import the user.sql
Configure database details with db.php
Configure the PHP endpoint URL in React in src/config.js
Run npm install and then, npm run dev.
Copy the dev server URL and run it to render the React Multi-step form.
Conclusion:
So, we have seen a simple React example to understand how to create and manage the state of a multi-step form. By splitting the mail and sub form components we had a structural code base that is more feasible for enhancements.
The navigation between steps gives a scope for verification before confirm the signup. And the progress bar indicates the state in progress at a quick glance.
Definitely, the PHP validation and database processing can have add-on features to make the backend more solid. If you have a requirement to create a multi-step form in React, share your specifications in the comments.
Written by Vincy, a web developer with 15+ years of experience and a Masters degree in Computer Science. She specializes in building modern, lightweight websites using PHP, JavaScript, React, and related technologies. Phppot helps you in mastering web development through over a decade of publishing quality tutorials.
[Tut] ChatGPT 5.1 vs Gemini Banana Pro – Which Creates the Best Fake Monet?
I just finished this video comparing which AI model is better in building a Monet clone image:
This is the first image generated by ChatGPT 5.1:
This one nails the sunny summer vibe with those bright colors, but it’s honestly way too orange and saturated to pass for a real Monet. The generic ‘ART’ and ‘CAFFE’ signs look kind of fake, like something you’d find on a jigsaw puzzle rather than in a museum. It’s a pretty picture, but it feels more like modern home decor than a 19th-century masterpiece.
This is the second image generated by Google Gemini Banana Pro:
This one is much closer to the real deal, capturing that classic hazy look and the specific blue shadows that Monet actually used. It falls apart a bit when you zoom in on the weird, gibberish text and the blurry faces, which are dead giveaways for AI. Still, if you squint, this one definitely wins for feeling the most like an actual historical painting.
The React TanStack table is a great tool for displaying an elegant view of data table. It provides enriched features to build list with impressive user experience.
This tutorial uses Server-side data fetching and rendering, searching and sorting features.
A shopping cart product table is created in the backend. It has basic details to be listed in a tabular form. The React app connects to the PHP API to connect this database to fetch the rows.
If you are going to run this example in your environment, follow the below steps to set up. It has all the build required for the React TanStack data table rendering.
Download and extract the React project bundle.
Go to the React project directory by cd react-data-table-server-side-pagination-sorting-search
Run npm install to create node_modules.
Copy /api/react-product-table-api/ to your PHP root and configure in React JSX.
Create database db_shopping_cart and import sql/database.sql
Then, start the dev server by using npm run dev.
How to initiate React TanStack data table?
This is to initiate React TabStack library using useReactTable. It adds the raw data reference to the TanStack library row column object to render data.
This is the place to configure the server-side API URL to connect to the database for displaying dynamic grid. It sets the data array for the TanStack initiation.
This example has a single endpoint that receives all the search, sort and pagination inputs. The following React useCallback() passes these parameters to the API.
The React callback hook sets the raw data for the TanStack’s getCoreRowModel block to build a table row instance.
Below PHP script shows how to process a request from the allowed React origin. This PHP service prepares the SELECT query based on the search keyword, current page and sorting column & order passed from the React frontend.
react-product-table-api/products.php
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json");
require_once "db.php"; $page = $_GET['page'] ?? 1;
$limit = $_GET['limit'] ?? 5;
$search = $_GET['search'] ?? '';
$sortBy = $_GET['sortBy'] ?? 'id';
$order = $_GET['order'] ?? 'asc';
$offset = ($page - 1) * $limit; $allowedSort = ['id', 'title', 'price', 'category'];
$allowedOrder = ['asc', 'desc']; if (!in_array($sortBy, $allowedSort)) $sortBy = 'id';
if (!in_array(strtolower($order), $allowedOrder)) $order = 'asc'; $sql = "SELECT * FROM products WHERE title LIKE ? ORDER BY $sortBy $order LIMIT ?, ?";
$stmt = $conn->prepare($sql);
$searchParam = "%$search%";
$stmt->bind_param("sii", $searchParam, $offset, $limit);
$stmt->execute();
$result = $stmt->get_result(); $data = [];
while ($row = $result->fetch_assoc()) { $data[] = $row;
} $countSql = "SELECT COUNT(*) AS total FROM products WHERE title LIKE ?";
$countStmt = $conn->prepare($countSql);
$countStmt->bind_param("s", $searchParam);
$countStmt->execute();
$countResult = $countStmt->get_result()->fetch_assoc(); echo json_encode([ "products" => $data, "total" => $countResult["total"]
]);
?>
Conclusion
This example built a front end React data table with search, sort and pagination features. The TanStack table library provides more features apart these three features. For example, it has column ordering, row selection, resizing and more. But, we covered the prime features of this library that are need in majority of the frontend tables.
Written by Vincy, a web developer with 15+ years of experience and a Masters degree in Computer Science. She specializes in building modern, lightweight websites using PHP, JavaScript, React, and related technologies. Phppot helps you in mastering web development through over a decade of publishing quality tutorials.
EmailJS is a cloud service that supports to enable the frontend to send email without any backend. All we need is to create an EmailJS account and configure it to the frontend application.
This tutorial shows the step-by-step procedure to learn how to enable email sending in a React application using EmialJS.
2. Choose service provider via Add New Service -> Select Service
It supports various services like Gmail, Yahoo and etc. It also have settings to configure custom SMTP server with this online solution.
3. Design mail template by Email Templates -> Create New Template -> Select Template
There are various built-in templates in the EmailJS dashboard. I selected the “Contact Us” template for this example.
Template edit interface has the option to change the design and the content. It allows to add dynamic variables as part of the mail content.
When calling the EmailJS service, the request will have values to replace this variables. This feature will help to send a personalized email content.
Copy the Template ID once created an email template.
4. Get EmailJS API Public Key
Added Service ID, Template ID the EmailJS Public Key is also need to initiate the library class from the frontend React App.
Navigate via Account using the left menu to open the API keys section. Copy Public Key from the EmailJS dashboard.
Initiate EmailJS library to React App
Create a React app and install the EmailJS library to it using this command.
npm install emailjs-com
This example code contains this library installed. So, just run npm install to bring the dependancies into your node_modules.
Then, import the emailjs-com to the React JSX and initiate the EmailJS service as shown below. This script shows how the emailjs instance is used in the form handle submit.
This example provides component for the email sending form fields. The fields UI code is moved to a separate file and made as a component. It is imported into the parent container in the EmailForm component.
It renders Name, Email and Message fields. Each fields is validated with a handleChange hook.
React JSX to load EmailJS and EmailFormFields Component
This JSX defines the handleChange and handleSubmithooks for validation and mail sending respectively.
The form container includes the <EmailFormFields />, Submit button and a <ToastContainer />.
After sending email via emailjs, the handleSubmit action resets the form and make it ready for the next submit.
When submitting the form, the handleSubmit function sends the formData with the API keys and IDs. Configure your EmailJS keys and IDs to this React script to make this example to send email.
Note: Form data is in an associate array format, where the array keys matches the email template variables. For example, if the email template body in the EmailJS dashboard contains Hi {{name}}, then the form data will have the key-value as name: submitted-name to replace the variable.
The receive email signature and the mail body design will be as configured in the EmailJS dashboard. The following diagram shows the received email output.
Conclusion
Thus, we have created a frontend in React for sending email without any backend set up. I hope, you find EmailJS very simple to integrate into an application. And its registration process is very simple. And, the features to customize the email body is very useful to have a thematic email template for different applications.
Written by Vincy, a web developer with 15+ years of experience and a Masters degree in Computer Science. She specializes in building modern, lightweight websites using PHP, JavaScript, React, and related technologies. Phppot helps you in mastering web development through over a decade of publishing quality tutorials.
Posted by: xSicKxBot - 12-07-2025, 06:46 AM - Forum: Python
- No Replies
[Tut] Best Free Books for Distributed Systems PhD Students (Must Read!)
Distributed systems form the backbone of modern large-scale computing, from cloud platforms to distributed databases and large clusters.
As a PhD student, you need resources that go beyond the basics, combining strong theoretical foundations with practical insights. And ideally, they should be freely accessible.
The following five books are all legally available online at no cost and are well-suited to accompany you through graduate-level research in distributed systems.
Distributed Systems (4th Edition) — Maarten van Steen & Andrew S. Tanenbaum
This modern classic offers a broad and rigorous introduction to distributed systems, covering architectures, communication, naming, coordination, replication, fault tolerance, and security. The 4th edition updates many examples to reflect today’s large-scale systems and is widely used in advanced undergraduate and graduate courses. A personalized digital copy is available for free from the authors’ website.
Distributed Systems for Fun and Profit — Mikito Takada
Short, opinionated, and surprisingly deep, this book is great when you want to quickly grasp the core concepts behind real-world distributed systems. It walks through consistency models, time and ordering, replication strategies, and the design of systems like Dynamo and Bigtable, always with an eye toward what matters in practice. Its informal style makes it perfect as a first pass or as a companion to more formal texts.
The Datacenter as a Computer: Designing Warehouse-Scale Machines (3rd Edition) — Luiz André Barroso, Urs Hölzle, Parthasarathy Ranganathan
If you’re doing a PhD, you’ll likely care about how your algorithms and systems behave at data-center scale. This open-access book treats an entire datacenter as a single “warehouse-scale computer” and explains how to design, operate, and optimize such systems. It’s particularly valuable for understanding the hardware, energy, and reliability constraints behind large distributed services such as those run by major cloud providers.
Operating Systems: Three Easy Pieces — Remzi H. Arpaci-Dusseau & Andrea C. Arpaci-Dusseau
While technically an operating-systems book, OSTEP is essential background for anyone doing serious work in distributed systems. Its deep treatment of concurrency, synchronization, and persistence provides the building blocks that distributed algorithms and storage systems rely on. The clear structure, numerous exercises, and freely available PDFs make it ideal for self-study alongside more specialized distributed-systems material.
These lecture notes form a full-fledged graduate-level textbook on distributed algorithms, focusing on rigorous models and proofs. Topics include locality, symmetry breaking, graph problems, and complexity in distributed settings, making it an excellent bridge between theory and the systems-oriented books above. If your PhD work touches consensus, graph algorithms on networks, or lower bounds in distributed computing, this text is a highly relevant free resource.
The JWT authentication is a secure way of implementing a web login process without session management. This tutorial is for implementing React JWT authentication with PHP. It has the following steps to understand the process easily.
Additionally, this example code provides a user registration code to create new user to the database. With the registration and login code you are getting a base for your websites authentication module from this tutorial.
React login form submits the registered username and password.
PHP backend script validates the login details with the database.
PHP login success case generates JWT signed encoded user profile data.
React frontend receives the JWT token and stores to localStorage.
React validates the existence of the token with the ProtectedRoutes component.
If the ProtectedRoutes failed to find the JWT token, it denies the access.
React User Registration
This registration code helps to create data for your login process. Also, with registration this authentication example will be a more complete version to deploy in your application.
This example has a registration form with very few fields. React builds the formData state when the user enters the data. On submit, it passes the entered data to the PHP page register-action.php. It stores the user login name, email and the password to the database.
In the below JSX script, the formData, success/error state variables are managed. The handleSubmit hook handles the client-side form validation. This hook posts the data to the server once the validation returns true.
Part of RegisterForm.jsx with React states and hooks
import axios from "axios";
import { useNavigate } from "react-router-dom";
import SERVER_SIDE_API_ROOT from "../config";
import "../styles/style.css";
const RegisterForm = () => { const [formData, setFormData] = useState({ username: "", email: "", password: "", confirmPassword: "", }); const [errorMessage, setErrorMessage] = useState(""); const [successMessage, setSuccessMessage] = useState(""); const navigate = useNavigate(); const handleSubmit = async (e) => { e.preventDefault(); const { username, email, password, confirmPassword } = formData; if (!username || !email || !password || !confirmPassword) { setErrorMessage("Please fill in all fields"); setSuccessMessage(""); return; } const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(email)) { setErrorMessage("Please enter a valid email address"); return; } if (password.length < 6) { setErrorMessage("Password must be at least 6 characters"); return; } if (password !== confirmPassword) { setErrorMessage("Passwords do not match"); setSuccessMessage(""); return; } try { const res = await axios.post( `${SERVER_SIDE_API_ROOT}/registration-action.php`, { username, email, password }, { headers: { "Content-Type": "application/json" } } ); console.log("Server response:", res.data); if (res.data.status === "success") { setSuccessMessage(res.data.message); setErrorMessage(""); setFormData({ username: "", email: "", password: "", confirmPassword: "", }); setTimeout(() => { navigate("/login"); }, 2000); } else { setErrorMessage(res.data.message || "Registration failed"); setSuccessMessage(""); } } catch (err) { console.error("Axios Error:", err); setErrorMessage("Server error or CORS issue"); setSuccessMessage(""); }
};
PHP backend handles the registration request and stores the entered password in an encrypted form. It validates the user email uniqueness. If the entered email is already in the database, then this code rejects the user’s insertion.
If the user submits the correct username and password, the client receives success response from the server. The response will contain a JWT signed user profile data array.
In the client-side, the jwt-decode is used to decode the JWT response. The jwt-decode is the JavaScript library which can read and decode the JWT encoded string.
Run the following command to install this library into the application repository.
npm install jwt-decode [OR] yarn add jwt-decode
In the below script, if the response status is success it sets the JWT authentication token to a JavaScript localStorage. Then, it redirects to the dashboard. The dashboard is a protected page that can be accessed if a user is JWT-authenticated.
In PHP the firebase/php-jwt library is installed by using this composer command. Once the logged-in details matched, this library is used to generate the JWT token with the profile array.
Protected Route Component that validates JWT token to permit
This component validates if the localStorage has the JWT token. If not, then it will stop the user from accessing a requested page. Instead, it redirects to the login page.
The React main App component imports the ProtectedRoutes to bring the validation process at the top layer. This ProtectedRoutes wrapper around the Dashboard will help to permit only a JWT-authenticated user to the dashboard.
This React dashboard script gets the user details from the decoded JWT token. Then, those details are rendered to the UI as shown below.
A simple header is created for this dashboard view with a logout option. On clicking logout, it clears the localStorage and redirects to the login page.
With this login authentication base, you can have a good start to create a React JWT login. The user registration involves PHP and MySQL connection to generate backend data for this login. It can be enhanced by adding server-side JWT validation to improve the security. The concept of securing application pages with protected routes helps to reuse the wrapper for more components.
Written by Vincy, a web developer with 15+ years of experience and a Masters degree in Computer Science. She specializes in building modern, lightweight websites using PHP, JavaScript, React, and related technologies. Phppot helps you in mastering web development through over a decade of publishing quality tutorials.
Posted by: xSicKxBot - 12-07-2025, 05:14 AM - Forum: Lounge
- No Replies
News - Fallout Creator Rejoins Obsidian, Has A New Squirrel Friend
Fallout creator Tim Cain has returned to Obsidian, but what is he working on? He's not allowed to say, and says you shouldn't even try to guess. Cain also shared an update about his personal life and a new friendship with a squirrel.
In a YouTube video, Cain said he recently relocated from Seattle to southern California, and one of the first things that happened was a squirrel ran up to him with no fear. "She just sat there and looked at me, and I shrugged and I'm like, 'What do you want from me? I don't know you.'" Cain fed the critter some walnuts and continues to feed the creature every day when he leaves and comes back home.
This is how Cain started the video, before getting into his return to Obsidian. He said he's now back at the studio, in-person and full-time. While he has returned to Obsidian, you'll also see his name appear in the credits of an upcoming unspecified game that he did contract work for before coming back to Obsidian, he said.