quakenet tutorial login/register
Alex
- php
0 Shadowcrow
Tutorial Quakenet
Hallo,
hat jemand von euch zufällig das oben genannte tutorial gemacht?
Ich steh da grad mega auf dem Schlauch, bin eigentlich das komplette Tutorial (auch schon einige Seiten davor) durchgegangen und habe jeden Schritt mitgemacht. Ich habe xampp laufen.
Ich habe nun einen ordner mit verschiedenen templates, sowie einen Ordner für die includes. Wenn ich jetzt die index.php aufrufe kommen zwei Erros (welche nicht verwunderlich sind) - variables.php sowie classes.php not found. Nehme ich den include raus, bleibt bei aufruf die index.php leer.
Im ganzen Tutorial konnte ich nichts über die zwei o.g. Dateien finden. Kann mir da wer helfen?
Gruß
Alex
'ǝɯɐu$ ıɥ
Tutorial Quakenet
Hallo,hat jemand von euch zufällig das oben genannte tutorial gemacht?
Nö
Ich steh da grad mega auf dem Schlauch, bin eigentlich das komplette Tutorial (auch schon einige Seiten davor) durchgegangen und habe jeden Schritt mitgemacht.
So, so
Ich habe nun einen ordner mit verschiedenen templates, sowie einen Ordner für die includes. Wenn ich jetzt die index.php aufrufe kommen zwei Erros (welche nicht verwunderlich sind) - variables.php sowie classes.php not found. Nehme ich den include raus, bleibt bei aufruf die index.php leer.
Im ganzen Tutorial konnte ich nichts über die zwei o.g. Dateien finden. Kann mir da wer helfen?
Falls du sie verwenden willst musst du sie anlegen (können auch erstmal leer sein), die variables.php stammt aus: http://tut.php-q.net/de/template.html, in die classes.php kommen deine Klassendefinitionen.
ʍopɐɥs
'ǝɯɐu$ ıɥ
Tutorial Quakenet
Hallo,hat jemand von euch zufällig das oben genannte tutorial gemacht?
Nö
Die findest du auch eher unter:
irc://irc.quakenet.org im IRC Channel #php oder #php.de
ssnɹƃ
ʍopɐɥs
Die findest du auch eher unter:
irc://irc.quakenet.org im IRC Channel #php oder #php.de
Habe ich aufgesucht, nur dort ist man nicht wirklich hilfsbereit... Daher stelle ich mal den Code rein. Ich hab das Tutorial nur bis Ende Registration gemacht. Die Registration klappt auch soweit, die showInfo() wird leider nicht ausgegeben nach erfolgreicher Registration. Desweiteren gibt es das Problem, dass jeder registrierter User 2 Einträge in der DB bekommt.
1 Alex alex@yahoo.de
2 Alex ac76416811c38622bb197d5e90e09966 alex@yahoo.de
Ich denke, dass sollte auch nicht sein. Jetzt anbei mal der Code, vielleicht kennt sich jemand mit diesem Tut aus, oder hat genügend Zeit den Code durch zu gehen und mir zu helfen. Sorry und Danke schonmal im Voraus...
index.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
include 'constants.php';
include 'functions.php'; // hier liegt die Funktion showInfo()
$db = @new MySQLi('X', 'x', 'x', 'x');
$ret = 1; // speichert den rückgabewert von include, standardwert 1
if (mysqli_connect_errno()) {
$ret = 'Konnte keine Verbindung zu Datenbank aufbauen, MySQL meldete: '.mysqli_connect_error();
} else {
// Laden der Include-Datei
include 'register.tpl';
include 'register.php';
include 'info.tpl';
}
// Laden des HTML-Kopfs
// [...]
?>
functions.php
<?php
/**
* Erzeugt ein Array für das Infomessage-Template.
*
* Diese Funktion erzeugt eine Array für unsere Templateengine die dann
* die Infomessage-Template-Datei "info.tpl" läd. Der Parameter gibt
* dabei die Nachricht an die angezeigt werden soll.
*
* @param msg Die Nachricht die angezeigt werden soll.
* @return Das Array für unsere Templateengine.
*/
function showInfo($msg) {
$ret = array();
$ret['filename'] = 'info.tpl';
$ret['data'] = array();
$ret['data']['msg'] = $msg;
return $ret;
}
?>
info.tpl
<?php
/* Daten
* - msg: Die Nachricht die angezeigt werden soll.
*/
?><p class="info">
<?php echo htmlspecialchars($data['msg']); ?>
</p>
So letzte relavante, aber zugleich größte Datei....
register.php
<?php
$ret = array();
$ret['filename'] = 'register.tpl';
$ret['data'] = array();
if ('POST' == $_SERVER['REQUEST_METHOD']) {
if (!isset($_POST['Username'], $_POST['Password'], $_POST['Email'],
$_POST['Antwort'], $_POST['formaction'])) {
return INVALID_FORM;
}
if (!is_array($_POST['Password']) OR count($_POST['Password']) != 2) {
return INVALID_FORM;
}
if ($_POST['Password'][0] != $_POST['Password'][1]) {
return 'Bitte geben sie das gleiche Password ein.';
}
if (($Username = trim($_POST['Username'])) == '' OR
($Password = trim($_POST['Password'][0])) == '' OR
($Email = trim($_POST['Email'])) == '' OR
($Antwort = trim($_POST['Antwort'])) == '') {
return EMPTY_FORM;
}
if ('123' != $Antwort) { // entsprechend anpassen
return 'Bitte geben sie die richtige Antwort an.';
}
if (!preg_match('~\A\S{3,30}\z~', $Username)) {
return 'Der Benutzername darf nur aus 3 bis 30 Zeichen bestehen und '.
'keine Leerzeichen enthalten.';
}
$sql = 'SELECT
ID
FROM
User
WHERE
Username = ?
LIMIT
1';
$stmt = $db->prepare($sql);
if (!$stmt) {
return $db->error;
}
$stmt->bind_param('s', $Username);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows) {
return 'Der Username wird bereits verwendet.';
}
$stmt->close();
$sql = 'INSERT INTO
User(Username, Email)
VALUES
(?, ?)';
$stmt = $db->prepare($sql);
if (!$stmt) {
return $db->error;
}
$stmt->bind_param('ss', $Username, $Email);
if (!$stmt->execute()) {
return $stmt->error;
}
if (!$stmt->execute()) {
return $stmt->error;
}
$UserID = $stmt->insert_id;
$sql = 'UPDATE
User
SET
Password = ?
WHERE
ID = ?';
$stmt = $db->prepare($sql);
if (!$stmt) {
return $db->error;
}
$Hash = md5(md5($UserID).$Password);
$stmt->bind_param('si', $Hash, $UserID);
if (!$stmt->execute()) {
return $stmt->error;
}
if (!$stmt->execute()) {
return $stmt->error;
}
return showInfo('Der Benutzer wurde hinzugefügt. Sie können sich nun anmelden.');
}
return $ret;
?>
Kann bitte irgendwer helfen? sollte sich eigentlich um einen kleinen Fehler handeln.
Gruß
Folgendes wurde gelöst:
Weiterhin ein Problem: