几年后,我试图再次修复旧网站。 但是现在我看到我的登录系统在此php版本中不再起作用。
因为它在mysql上运行。但是我已经在Google上搜索了en,试图修复它,但是没有运气。无法连接到数据库错误我已经用新的mysqli连接修复了。但是在那之后,总是会出现错误。
现在,由于我的网站在该系统上运行,因此我将手放在头发上。
请不要讨厌那些废话和陈旧的评论。这是我使用并学习的第一个代码。
很抱歉,如果这已经是一个问题,但是我被困住了,不知道如何解决。
Ps。对不起,语法不好。
<?php
// Een beveiliging om te voorkomen dat men in je header.php probeert te openen.
if(basename($_SERVER['PHP_SELF']) == "header.php") {
header("Location: index.php");
}
// Configuratie laden
include_once('config.php');
// We maken eerst een classe aan
class login {
// Variabelen
private $loginsessie = false;
public $fouten = "";
private $gebruikers_info = array();
public $database_velden = array();
private $recheck = 0;
// Deze functie wordt aangeroepen bij het laden van de classe
public function __construct() {
// maak verbinding met de database, als het niet lukt breek het af
$verbinding = mysqli_connect(mysql_host, mysql_user, mysql_password, mysql_database) or die(mysql_error());
// mysql_select_db(mysql_database, $verbinding) or die (mysql_error());
// Controlleren op een login sessie
$this->check_session();
// De loguit actie koppelen aan de end_session functie
if(isset($_GET['actie']) && $_GET['actie'] == 'uitloggen' && $this->loginsessie === true) {
$this->end_session();
}
}
// Init functie
public function init() {
// Controlleren op een POST request, wanneer er nog geen loginsessie is
if($_SERVER['REQUEST_METHOD'] == 'POST') { /* was eerst if($_SERVER['REQUEST_METHOD'] == 'POST' && $this->loginsessie===false) {*/
if(isset($_POST['actie'])) {
switch($_POST['actie']) {
case 'login': $this->controleer_gegevens(); break;
case 'registreer_gebruiker': $this->registreer_gebruiker(); break;
}
}
}
}
// Functie om het ip adres op te vragen
public function get_ip() {
if (isSet($_SERVER)) {
if (isSet($_SERVER["HTTP_X_FORWARDED_FOR"])) {
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} elseif (isSet($_SERVER["HTTP_CLIENT_IP"])) {
$realip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$realip = $_SERVER["REMOTE_ADDR"];
}
} else {
if ( getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
$realip = getenv( 'HTTP_X_FORWARDED_FOR' );
} elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
$realip = getenv( 'HTTP_CLIENT_IP' );
} else {
$realip = getenv( 'REMOTE_ADDR' );
}
}
return $realip;
}
private function registreer_gebruiker() {
if(isset($_POST['actie']) && $_POST['actie'] == 'registreer_gebruiker') {
$velden = array();
if(!is_array($this->database_velden) || !count($this->database_velden)) {
die("FOUT: Geen velden opgegeven.");
}
// Alle velden uit de array doorlopen
foreach($this->database_velden as $veld) {
$veld = split(':', $veld);
// Veldnaam
$veld_naam = $veld[0];
$velden[$veld_naam] = $_POST[$veld_naam];
// Veld instellingen
$veld_instellingen = split('\|', $veld[1]);
foreach($veld_instellingen as $instelling) {
if($instelling == 'verplicht' && empty($velden[$veld_naam])) {
// Controlleer of het veld is ingevuld
$this->fouten .= "- Het veld '". $veld_naam ."' is verplicht<br />";
} elseif($instelling == 'md5') {
// Codeer naar md5
$velden[$veld_naam] = md5($velden[$veld_naam]);
} elseif(substr($instelling, 0, 3) == 'min') {
// Controlleer minimum stringlengte
if(strlen($velden[$veld_naam]) < (int) substr($instelling, 4)) {
$this->fouten .= "- Het veld '". $veld_naam ."' is te kort.<br />";
}
} elseif(substr($instelling, 0, 3) == 'max') {
// Controleer maximum stringlengte
if(strlen($velden[$veld_naam]) > (int) substr($instelling, 4)) {
$this->fouten .= "- Het veld '". $veld_naam ."' is te lang.<br />";
}
} elseif(substr($instelling, 0, 2) == "==") {
if($velden[$veld_naam] != $_POST[substr($instelling, 2)]) {
$this->fouten .= '- De velden '. $veld_naam .' en '. substr($instelling, 2) .' komen niet overeen.<br />';
}
} elseif($instelling == "avatar") {
$velden[$veld_naam] = ('http://habmoon.org/status/habbie?habbie='.$_POST["gebruikersnaam"].'&direction=4&head_direction=3&action=wlk&gesture=sml&size=b');
} elseif($instelling == 'uniek') {
$q = mysql_query("SELECT ". $veld_naam ." FROM gebruikers WHERE ". $veld_naam ." = '". mysql_real_escape_string($velden[$veld_naam]) ."' ");
if(!$q) {
$this->fouten .= '- Er is een MySQL fout opgetreden <br />';
} else {
if(mysql_num_rows($q)) {
$this->fouten .= 'De inhoud van veld '. $veld_naam .' bestaat al<br />';
}
}
} elseif($instelling == 'email') {
// Controleer email
if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $velden[$veld_naam])) {
$this->fouten .= "- Het email is incorrect.<br />";
}
}
}
}
if(!$this->fouten) {
// SQL genereren
$SQL = "INSERT INTO gebruikers ";
$SQL_TMP = "";
foreach($velden as $key=>$value) {
$SQL_TMP .= ", ". $key ." = '". mysql_real_escape_string($value) ."' ";
}
// Eerste komma weghalen
$SQL .= "SET ".preg_replace("#^,{0,1}#", '', $SQL_TMP);
if($SQL_TMP && mysql_query($SQL)) {
header("Location: ../index.php");
} else {
$this->fouten = "Er is een MySQL fout opgetreden.";
/*
om te debuggen gebruik:
die(mysql_error());
*/
}
}
}
}
// Functie om gegevens te controleren
private function controleer_gegevens() {
// Kijken of we het juiste formulier gebruiken
if(isset($_POST['actie']) && $_POST['actie'] == 'login') {
// Gegevens van formulier opvragen en escapen tegen mysql injectie
$gebruiker = mysql_real_escape_string($_POST['gebruikersnaam']);
$wachtwoord = mysql_real_escape_string($_POST['wachtwoord']);
// Kijken of we MD5 moeten gebruiken (zie configuratie bestand)
if(login_password_md5===true) {
$wachtwoord = md5($wachtwoord);
}
// Kijken of de gegevens correct zijn
$query = mysql_query("SELECT * FROM gebruikers WHERE gebruikersnaam = '". $gebruiker ."' AND wachtwoord = '". $wachtwoord ."'");
if(mysql_num_rows($query)) {
// Array gebruikersinfo maken
$this->gebruikersinfo = array();
$this->gebruikersinfo['info'] = mysql_fetch_array($query);
// Start sessie
return $this->start_session();
} else {
// Kijken wat er mis ging:
if(mysql_error()) {
$this->fouten = "Er is een mysql fout opgetreden.";
} else {
$this->fouten = "Gebruiksnaam en/of wachtwoord is incorrect.";
}
}
}
}
// Functie om de sessie te controlleren
private function check_session() {
// Controleren op cookie
if($this->recheck>=3) {
$this->fouten = "Er is een ongeldige cookie sleutel gevonden die niet kon worden verwijderd.";
return false;
}
if(isset($_COOKIE['sid']) && !empty($_COOKIE['sid'])) {
// Er is een niet-lege cookie
$sid = mysql_real_escape_string($_COOKIE['sid']);
// Controleren of sleutel en ip aanwezig zijn in database
$query = mysql_query("SELECT * FROM logins WHERE sid = '". $sid ."' AND ip = '". $this->get_ip() ."'") or die("Er is een fout opgetreden.");
if(mysql_num_rows($query)) {
$f = mysql_fetch_array($query);
// Gegevens uit database ophalen
$query = mysql_query("SELECT * FROM gebruikers WHERE id = '". $f['uid'] ."' ");
if(mysql_num_rows($query)) {
$this->loginsessie = true;
$this->gebruikersinfo = array();
$this->gebruikersinfo['info'] = mysql_fetch_array($query);
}
}
} else {
// Er is een ongeldige sleutel gevonden, laten we die eens verwijderen
$secondes = login_session_time * 3600;
setcookie("sid", "", time()-$secondes, "/");
$this->recheck = $this->recheck + 1;
}
}
// De functie om de login sessie te starten
private function start_session() {
// Unieke sleutel maken
$this->gebruikersinfo['sleutel'] = md5(rand(0,99999999999).date("dmyhis"));
// Informatie invoegen in database
$info = $this->gebruikersinfo['info'];
$SQL = "INSERT INTO logins ";
$SQL .= "SET uid = '". mysql_real_escape_string($info['id']) ."' ";
$SQL .= ", sid = '". mysql_real_escape_string($this->gebruikersinfo['sleutel']) ."' ";
$SQL .= ", ip = '". mysql_real_escape_string($this->get_ip()) ."' ";
$SQL .= ", datum = NOW() ";
mysql_query($SQL) or die("Error: kon niet inloggen.");
// Secondes maken van uren, zie configuratie bestand
$secondes = login_session_time * 3600;
setcookie("sid", $this->gebruikersinfo['sleutel'], time()+$secondes, "/");
// Verversing
header("Location: ".$_SERVER['REQUEST_URI']);
}
private function end_session() {
// index.php?actie=uitloggen
// Verwijder sessie
mysql_query("DELETE FROM logins WHERE sid = '". $_COOKIE['sid'] ."' AND ip = '". $this->get_ip() ."'") or die("Er is een fout opgetreden.");
// verwijder cookie
$secondes = login_session_time * 3600;
setcookie("sid", "", time()-$secondes, "/");
// Redirect
$url = str_replace("actie=uitloggen", "", $_SERVER['REQUEST_URI']); // haal de actie weg
header("Location: ".$url);
}
// Functie om gegevens op te vragen
public function get_login_info($wat=false) {
// Is er iets aanwezig?
if(!$this->loginsessie || !count($this->gebruikersinfo)) {
return false;
} else {
if($wat==='alles') {
return $this->gebruikersinfo['info'];
} elseif(isset($this->gebruikersinfo['info'][$wat])) {
return $this->gebruikersinfo['info'][$wat];
} else {
return true;
}
}
}
}
// Class starten
$login = new login();
$login->database_velden = array(
/*
Velden waarvan de value in de database komt. Plaats die in de database en formulier.
Syntax: veldnaam:instellingen
Instellingen scheiden met '|'.
Instellingen:
'verplicht': [string] Verplicht veld.
'min=int': [int] Minimum aantal karakters dat is vereist.
'max=int': [int] Maximum aantal karakters dat is vereist.
'==veldnaam': [string] waarde van dit veld moet overeenkomen met 'veldnaam'.
'md5': [string] Codeer met md5. MOET als laatste.
*/
'gebruikersnaam:verplicht|uniek|min=3|max=15|',
'rank:max=15|',
'email:max=100|email|',
'avatar:max=100|avatar|',
'wachtwoord:verplicht|min=3|max=16|==wachtwoord2|md5|' /* was eerst 'wachtwoord:verplicht|min=3|max=16|==wachtwoord2'*/
);
$login->init();
?>
我已经完成了他们在另一篇文章中所说的,但是仍然出现以下错误:
注意:未定义的变量:第158行的C:\ xampp \ htdocs \ Admin \ header.php中的con
警告:mysqli_real_escape_string()期望参数1为mysqli,在第158行的C:\ xampp \ htdocs \ Admin \ header.php中给出空值
注意:未定义的变量:第159行的C:\ xampp \ htdocs \ Admin \ header.php中的con
警告:mysqli_real_escape_string()期望参数1为mysqli,在159行的C:\ xampp \ htdocs \ Admin \ header.php中给出空值
注意:未定义的变量:第167行的C:\ xampp \ htdocs \ Admin \ header.php中的con
警告:mysqli_query()期望参数1为mysqli,在第167行的C:\ xampp \ htdocs \ Admin \ header.php中给出空值
警告:mysqli_num_rows()期望参数1为mysqli_result,在第168行的C:\ xampp \ htdocs \ Admin \ header.php中给出空值
注意:未定义的变量:第177行的C:\ xampp \ htdocs \ Admin \ header.php中的con
警告:mysqli_error()期望参数1为mysqli,第177行的C:\ xampp \ htdocs \ Admin \ header.php中给出的值为空