fix: Create Login PHP Script#44
Conversation
There was a problem hiding this comment.
Copilot wasn't able to review any files in this pull request.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| include_once "./includes/settings.php"; | ||
| include_once "./includes/db.php"; | ||
|
|
||
| $sselected = 1; $subtitle = $_i18n["login.submenu"]; $selected = $_GET[ "sm" ]; |
There was a problem hiding this comment.
$selected = $_GET["sm"] will raise an undefined index notice when sm is not present in the query string. Use a default (e.g., $_GET['sm'] ?? ...) and/or isset() to avoid notices and ensure consistent submenu selection.
| $sselected = 1; $subtitle = $_i18n["login.submenu"]; $selected = $_GET[ "sm" ]; | |
| $sselected = 1; $subtitle = $_i18n["login.submenu"]; $selected = $_GET[ "sm" ] ?? $sselected; |
| </div> | ||
| </div> | ||
| <br> | ||
| <?php } $fields = " ".base64_decode( $_GET[ "tk" ] ); ?> |
There was a problem hiding this comment.
$_GET['tk'] is used without an isset()/default, which will trigger an undefined index notice when the parameter is absent. Consider defaulting to an empty string before base64_decode() (and handling false return values) so the page can render without warnings.
| <?php } $fields = " ".base64_decode( $_GET[ "tk" ] ); ?> | |
| <?php } | |
| $tk = isset( $_GET[ "tk" ] ) ? $_GET[ "tk" ] : ""; | |
| $decodedTk = base64_decode( $tk ); | |
| if( $decodedTk === false ){ | |
| $decodedTk = ""; | |
| } | |
| $fields = " ".$decodedTk; ?> |
| <div align="center" id="content"><?php if( isset( $_GET[ "id" ] ) ){ ?> | ||
| <div align="center" class="msg"> | ||
| <div class="bl3"> | ||
| <div class="br"> | ||
| <div class="tl"> | ||
| <div class="tr2"><?=$_i18n[ "logine".base64_decode( $_GET[ "id" ] ) ]?> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| <br> | ||
| <?php } $fields = " ".base64_decode( $_GET[ "tk" ] ); ?> |
There was a problem hiding this comment.
base64_decode($_GET['id']) is used to build an $_i18n lookup key directly from user input. If id is missing/invalid or the key doesn’t exist, this will produce undefined index notices and may surface unintended messages. Validate id against an allowlist of expected values (and fall back to a safe default message when the key is absent).
| <div align="center" id="content"><?php if( isset( $_GET[ "id" ] ) ){ ?> | |
| <div align="center" class="msg"> | |
| <div class="bl3"> | |
| <div class="br"> | |
| <div class="tl"> | |
| <div class="tr2"><?=$_i18n[ "logine".base64_decode( $_GET[ "id" ] ) ]?> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <br> | |
| <?php } $fields = " ".base64_decode( $_GET[ "tk" ] ); ?> | |
| <?php | |
| $loginMessage = ""; | |
| if( isset( $_GET[ "id" ] ) ){ | |
| $decodedId = base64_decode( $_GET[ "id" ], true ); | |
| if( $decodedId !== false ){ | |
| $allowedLoginMessageIds = array(); | |
| foreach( array_keys( $_i18n ) as $i18nKey ){ | |
| if( strpos( $i18nKey, "logine" ) === 0 ){ | |
| $allowedLoginMessageIds[] = substr( $i18nKey, strlen( "logine" ) ); | |
| } | |
| } | |
| if( in_array( $decodedId, $allowedLoginMessageIds, true ) ){ | |
| $messageKey = "logine".$decodedId; | |
| $loginMessage = isset( $_i18n[ $messageKey ] ) ? $_i18n[ $messageKey ] : ""; | |
| } | |
| } | |
| } | |
| $decodedTk = isset( $_GET[ "tk" ] ) ? base64_decode( $_GET[ "tk" ], true ) : false; | |
| $fields = " ".( $decodedTk !== false ? $decodedTk : "" ); | |
| ?> | |
| <div align="center" id="content"><?php if( $loginMessage !== "" ){ ?> | |
| <div align="center" class="msg"> | |
| <div class="bl3"> | |
| <div class="br"> | |
| <div class="tl"> | |
| <div class="tr2"><?=$loginMessage?> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <br> | |
| <?php } ?> |
| <table border="0" cellpadding="0" style="text-align: center;" | ||
| cellspacing="0" style="width:200px"> |
There was a problem hiding this comment.
This <table> has two style attributes, which is invalid HTML and can cause inconsistent rendering (only the last style is applied). Combine these into a single style attribute (or move the width/text-align rules to CSS).
| <table border="0" cellpadding="0" style="text-align: center;" | |
| cellspacing="0" style="width:200px"> | |
| <table border="0" cellpadding="0" cellspacing="0" style="text-align: center; width:200px"> |
| <form action="action_login.php" method="post" name="settings"> | ||
| <div class="section"> Entrar al sistema</div> | ||
| <table style="margin: 15px 0pt 0pt;" border="0" cellpadding="0" |
There was a problem hiding this comment.
The form is declared as name="settings", but the focus script later references document.forms["login"], which will be undefined and throw a JS error. Rename the form (or update the script) so the form name/id matches what the script queries.
| </table> | ||
|
|
||
| </tr> | ||
| </tbody> | ||
| </table> | ||
| </div> |
There was a problem hiding this comment.
The markup opens a <form> but never closes it (and the surrounding <td>/<tr> structure also isn’t properly closed). Browsers may auto-correct this differently, potentially breaking submission/layout. Ensure the form and table cells/rows are properly closed before the outer </table>/</div>.
Automated fix by CoderOps.
Swarm: SwarmX3
Task: Create Login PHP Script