Registrierung aktivieren funktioniert nicht!

Divo1984

Erfahrenes Mitglied
Hallo,

ich habe mir ein kleines CMS gecodet was soweit gut ****t! Jetzt versuche ich mir ein kleines activate hinzuzufügen! Nur leider funktioniert das nicht so ganz!

Bei dererfolgreichen Registrierung, lasse ich den Timestamp in die DB als Freecode übertragen und klemme diesen mit an den Bestätigungslink.

Hier mal meine activate.php

PHP:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
include("header.php");

$freecode='freecode';

if($freecode == $freecode){
	$sql= "SELECT `id`, `free` FROM `user` WHERE `freecode` = '$freecode'";
	$abfrage = mysqli_query($verbindung, $sql);
	$row = mysqli_fetch_assoc($abfrage);
	

	
if ($row['free'] == 1) {
	echo"<center><font size=\"2\" face=\"Verdana\"><b>Dieser Link wurde schon angeklickt. Account ist bereits freigeschaltet.</center></font></b>";
}else{
	
	$sql = "UPDATE 'user' SET 'free' = 1 WHERE 'id' = '".$row['id']."'"; 
	echo"<center><font size=\"2\" face=\"Verdana\"><b>Sie sind nun freigeschaltet.</center></b></font>";
}
}

include("footer.php");

?>

Leider sagt mir mein Browser beim Aufruf folgendes:

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /var/www/web508/html/activate.php on line 10

Ich weiss leider nicht, was ich vergessen oder übersehen habe und hoffe ihr könnt mir helfen!
 
Zuletzt bearbeitet:
PHP:
	$sql= "SELECT `uname`, `free` FROM `user` WHERE `freecode` = '$freecode'";
	$abfrage = mysqli_query($verbindung, $sql);
	$row = mysqli_fetch_assoc($abfrage);

Vllt geht es ja so, vorausgesetzt die Spalten und die Tabelle existieren und du hast keine Schreibfehler drin, bzw die Variable $freecode hat einen Wert der in der TB steht.
 
Super vielen Dank, das Activate funktioniert jetzt aber leider das net:

PHP:
if ($row[1] == 1) {
    echo"<center><font size=\"2\" face=\"Verdana\"><b>Dieser Link wurde schon angeklickt. Account ist bereits freigeschaltet.</center></font></b>"

Ich bekomme immer die Ausgabe:

Sie sind nun freigeschaltet.

Obwohl das nur ausgegeben werden soll wenn die erste Abfrage net passt!
 
if ($row[free] == 1) {




$sql = "UPDATE user SET free = 1 WHERE uname = '".$row[uname]."'";


Obwohl das Schwachsinn ist, für soetwas arbeitet man mit IDs...
 
So klaro das ich dort uname verwendet habe war Schwachsinn, stimmt:-)

Aber trotzdem haut das net hin:-(

Habe den Code im ersten Post mal angepasst, so dass er aktuell ist! wer kann mir sagen warum ich beim aktualiesieren keine Fehlermeldung erhalte?
 
Schreib mal das an den Seitenanfang,
error_reporting(E_ALL);
ini_set('display_errors', 1);

Es kann sein das dein UPDATE immer noch nicht richtig geht weil dort auch die ` fehlen.
 
Dort erhalte ich diese 3 Notice Dinger:

Notice: Undefined variable: freecode in /var/www/web508/html/activate.php on line 6

Notice: Use of undefined constant free - assumed 'free' in /var/www/web508/html/activate.php on line 15

Notice: Use of undefined constant id - assumed 'id' in /var/www/web508/html/activate.php on line 19

Update geht net, sehe jedenfalls den Wert doch net in der DB!

Edit 01.38

Code angepasst! Die Noticedinger sind weg! Aber das Update geht net! Könnte das evtl. daran liegen das ich vergessen habe die DB in diesem Feld auf NOT NULL zu stellen?
 
Zuletzt bearbeitet:
So das mit der Aktivierung habe ich jetzt komplett umgecodet und jetzt geht es siehe:

PHP:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
include("header.php");

$freecode=$_GET['freecode'];

if($_GET['freecode'] == ''){
	echo"Es wurde kein gültiger Link geklickt!";
	}else{
	$sql= "SELECT id, free FROM user WHERE freecode = $freecode";
	$abfrage = mysqli_query($verbindung, $sql);
	$row = mysqli_fetch_assoc($abfrage);
	
	if ($row['free'] == 1) {
	echo"<center><font size=\"2\" face=\"Verdana\"><b>Dieser Link wurde schon angeklickt. Account ist bereits freigeschaltet.</center></font></b>";
}else{
	
	$sql = "UPDATE user SET free = 1 WHERE id = '".$row['id']."'";
	$abfrage = mysqli_query($verbindung, $sql);
	echo"<center><font size=\"2\" face=\"Verdana\"><b>Sie sind nun freigeschaltet.</center></b></font>";
}
}

include("footer.php");

?>

So nun will ich aber statt dem Timestamp nen Freecode erzeugen, kann mir wer helfen?
 
Naja der Freecode soll der Code sein, der statt dem Timestamp zum verifizieren des Accounts genutzt wird!

Ich will ja net einfach die email zum verifizieren hinten dran hängen!

Ich brauche also einen vom Script frei generierten Code mit 8-16 Zeichen der dann an die DB übergeben werden kann! Natürlich darf es jeden Code nur einmal geben!

Ich weiss das es net leicht ist, deshalb frage ich euch da ich erst beim lernen bin!
 
Zurück