php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.10.2009, 23:58  
Neuer Benutzer
 
Registriert seit: 22.10.2009
Beiträge: 22
PHP-Kenntnisse:
Anfänger
sl0t befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Zugriff erst nach Freigabe

Hallo Leute,

ich bin schon seit einiger Zeit auf der Suche nach einer Lösung meines Problems, auf meiner Suche habe ich schon unzählige Seiten abgesucht und bis jetzt noch keine anständige Lösung gefunden.

Ich habe erst vor kurzem angefangen php zu lernen und muß sagen das php in Verbindung mit mysql unglaubliche Möglichkeiten bietet, meine ersten Schritte habe ich auf php-einfach.de gemacht.

Ich habe mir dank der vielen Tuturials im Netz ein Mitgliederbereich mit folgenden Seiten gebastelt:
  • register.php (zum registrieren)
  • register2.php (Datenbankverbindung zum eintragen der Benutzer in die Tabelle)
  • freischalt.php (zum freischalten der jeweiligen Benutzer)
  • login.php (zum einloggen)
  • login2.php (Sessionstart, Datenbankverbindung, abfrage und Weiterleitung zum internen Bereich)
  • geheimerbereich.php (geschützer Bereich)

Leider bekomme ich es nicht hin das ich den Benutzer erstmal freischalten muss bevor er Zugriff auf den internen Bereich hat. Jeder kann sich registrieren und einfach in den geschützen Bereich schauen.

In der Seite "register.php oder register2.php" sollte eine Funktion eingebaut werden, die nach dem klicken des Submit Buttons eine E-Mail an mich sendet mit den Daten aus dem Formular und einem Freischaltungslink.

ich habe mir gedacht das der Benutzer zwar in die tabelle eingetragen wird jedoch auf inaktiv gesetzt wird und erst nachdem ich auf den Link klicke, soll der user auf aktiv gesetzt werden.
Dazu habe ich in der Tabelle das Feld "aktiv" char(1) eingefügt.

Beispiel: register sendet Daten an register2 und legt den Benutzer an, gleichzeitig bekomme ich eine email mit dem Link zur freischalt.php. Wenn ich dort draufklicke, setze ich den Benutzer auf 1 (aktiv), solange ich nicht auf den Link klicke soll der Benutzer auf 0 bleiben bzw. inaktiv.

Mir würde es schon helfen wenn jemand einen Link posten kann der eben genau das Thema als Inhalt hat.

Ich suche schon seit Tagen nach einer Lösung, aber so intensiv wird das Thema login und email versand nirgends diskutiert.

ich hoffe das war einigermaßen verständlich erklärt, entschuldigt meine Schreibweise aber das Problem beschäftigt mich jetzt schon seit 3 Tagen je 12std ;/

ich denke Ihr wisst was Schlafmangel alles anrichten kann

grüße

ps. wenn Ihr andere Lösungswege diesbezüglich kennt würde ich mich auch über eine Quelle zum nachlesen freuen, wie gesagt bin noch Anfänger und der oben genannte Weg erschien mir logisch.
sl0t ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.10.2009, 00:50  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

Nun dein Ansatz mit dem Feld welches du "Aktiv" nennst in der Datenbank ist doch scohn der korrekte Weg. Zuerst möchte ich jedoch einmal feststellen, dass ich mit deinem Datentyp des Feldes (Char(1)) nicht ganz so zufrieden bin. Du solltest hier lieber Boolean (also im Endeffekt int(1)) benutzen.

Diesem Feld kannst du dann einfach einen Standardwert geben, so dass es bei dem Anlegen neuer Benutzer den Wert 0 enthält.

Ein link zum aktivieren sollte ja nicht weiter schwer sein. Du übergibst die ID des Datensatzes
z.B. freischalten.php?userid=4
und erstellst eine Abfrage der Art
Code:
UPDATE `table` SET `aktiv` = 1 WHERE `id` = $id
Im Loginbereich der Benutzer musst du nun halt nicht nach Passwort und Benutzername prüfen, sondern auch noch auf `aktiv`. Dazu kannst du ja einfach eine weitere WHERE Bedingung einführen
Code:
SELECT `id` FROM `table` WHERE `username` = 'x' AND `password` = 'y' AND `aktiv` = 1
Wo liegt dein konkretes Problem?
__________________
Frank ist offline  
Alt 23.10.2009, 01:55  
Neuer Benutzer
 
Registriert seit: 22.10.2009
Beiträge: 22
PHP-Kenntnisse:
Anfänger
sl0t befindet sich auf einem aufstrebenden Ast
Standard

erst einmal danke für die schnelle Antwort.

aktiv habe ich nun auf (int) gesetzt und das mit dem Standard Wert ist perfekt, danke schonmal

Bleibt nur noch ein Problem mit register.php

Mein Problem besteht in der Umsetzung mit dem Versand der E-Mail und die Erstellung und Weitergabe der ID.

Den logischen Weg habe ich begriffen, aber die Befehle habe ich entweder nicht verstanden oder nicht gefunden.

register.php ausschnitt:
PHP-Code:
if
(
isset(
$_POST["Submit"])

{
if(
$_POST["Submit"] != ''

   {
   
mail
   
($_POST["benutzername"], $_POST["passwort"], $empfaenger,
      
$betreff,
      
$mailtext,
      
$header);
   }
}

//mein Formular
<form action="registrieren2.php" method="post">
//felder mit benutzername, passwort, passwort wiederholen und email 
ohne den if Befehl klappt der html E-Mail versand wunderbar, allerdings nicht mit dem if Befehl.
Die E-Mail soll erst gesendet werden, wenn man auf Submit klickt, irgendwo in den Zeilen muss sich ein Fehler befinden.

wenn das Problem gelöst ist, wird das Formular weitergeleitet:
PHP-Code:
<form action="registrieren2.php" method="post"
in registrieren2.php wird dann der Benutzer in der Tabelle angelegt.
in der freischalt.php füge ich dann den Code ein:
PHP-Code:
UPDATE `meine tabelleSET `aktiv` = 1 WHERE `id` = $id 
aber wie bekomme ich die id in die E-Mail und wieso wird sie nicht abgeschickt?

wiegesagt ohne if (isset($_POST["Submit"]) kann ich E-Mails empfangen und auch absenden, aber halt direkt beim aufrufen des Formulars und nicht erst nach dem drauf klicken.

grüße
sl0t ist offline  
Alt 23.10.2009, 02:07  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

Hast du denn im Formular ein Feld welches ein name="Submit" besitzt?
PHP-Code:
<input type="submit" value="absenden" name="Submit" /> 
__________________
Frank ist offline  
Alt 23.10.2009, 02:16  
Neuer Benutzer
 
Registriert seit: 22.10.2009
Beiträge: 22
PHP-Kenntnisse:
Anfänger
sl0t befindet sich auf einem aufstrebenden Ast
Standard

Ja das Feld ist vorhanden, eigentlich habe ich alles hinbekommen, man kann sich registrieren, einloggen, ausloggen, der bereich ist mittels session gesichert usw. aber im Moment bin ich wegen Mangel an Kenntnis und zuviel input in den letzten Tagen mit dem oben genannten Problem überfordert.
sl0t ist offline  
Alt 23.10.2009, 02:25  
Neuer Benutzer
 
Registriert seit: 22.10.2009
Beiträge: 22
PHP-Kenntnisse:
Anfänger
sl0t befindet sich auf einem aufstrebenden Ast
Standard

hier mal den ganzen Code von register.php:
(Urls habe ich natürlich weggelassen)
PHP-Code:
<?php
$empfaenger 
"xxx";
$absender   "xxx";
$betreff    "Benutzer Freischaltung";
$mailtext '<html>
<head>
    <title>Benutzer Freischaltung</title>
</head>
<body>
<h1>Klick auf den Link zur Freischaltung</h1>
<p><a href="xxxfreischalt.php?benutzerid=$id">Link</a></p>
</body>
</html>
'
;
$antworten  "keineantwort@adresse.de";
$header  "MIME-Version: 1.0\n";
$header "Content-Type:text/html\n";
$header .= "From: $absender\n";
$header .= "Reply-To: $antworten\n";

if
(
isset(
$_POST["Submit"])

{
if(
$_POST["Submit"] != ''

   {
   
mail
   
($_POST["benutzername"], $_POST["passwort"], $empfaenger,
      
$betreff,
      
$mailtext,
      
$header);
   }
}
?>
sl0t ist offline  
Alt 23.10.2009, 02:26  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

Probier mal das submit feld umzubenennen. Ich hatte schon öfter das Problem, dass ein Submit namens Submit nicht akzeptiert wird. Nenne es Absenden oder sonst wie. Die abfrage auf isset sollte reichen, wenn nicht ergänze Sie durch empty(). Die Zweite if-Abfrage ist sinnlos.
PHP-Code:
if(isset($_POST["absenden"]) && !empty($_POST["absenden"])) {
    
// CODE

Du solltest generell mal etwas an deiner Codeformatierung arbeiten -> Einrückungsstil
__________________
Frank ist offline  
Alt 23.10.2009, 02:49  
Neuer Benutzer
 
Registriert seit: 22.10.2009
Beiträge: 22
PHP-Kenntnisse:
Anfänger
sl0t befindet sich auf einem aufstrebenden Ast
Standard

klappt leider weder mit umbenennen noch mit deiner if abfrage, emails kommen nicht an.

An der Codeformatierung werde ich noch arbeiten, wiegesagt habe mit php erst vor ca. 1 Woche angefangen

ps. bevor die Frage aufkommt: ja ich lade das Script zum testen auf meinem Webserver
sl0t ist offline  
Alt 23.10.2009, 03:57  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

Habe mir nochmal deinen Code angeschaut. Du nutzt falsche Parameter bei der mail()-Funktion mail

PHP-Code:
mail("sl0t@hotmail.com""Betreff der Email"$mailtext$header); 
__________________
Frank ist offline  
Alt 23.10.2009, 04:18  
Neuer Benutzer
 
Registriert seit: 22.10.2009
Beiträge: 22
PHP-Kenntnisse:
Anfänger
sl0t befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Frank Beitrag anzeigen
Habe mir nochmal deinen Code angeschaut. Du nutzt falsche Parameter bei der mail()-Funktion mail

PHP-Code:
mail("sl0t@hotmail.com""Betreff der Email"$mailtext$header); 
darf man dafür keine Variablen benutzen?
sl0t ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Zugriff auf DOM, inkl. CSS joux PHP Tipps 2009 7 24.07.2009 18:42
zugriff auf mysql von aussen. nieselfriem Datenbanken 7 25.12.2008 22:00
Zugriff über ID (Primary Key) Reen_Sc Datenbanken 5 23.07.2008 04:10
Zugriff mit session auf Ordner begrenzen Diego1978 PHP Tipps 2008 1 08.07.2008 06:38
Zugriff beschränken paper PHP Tipps 2008 9 04.05.2008 12:13
Direkten Zugriff auf Datenbank verhindern heyho PHP Tipps 2008 7 07.02.2008 11:41
Zugriff auf Objekte anderer Klassen nieselfriem PHP Tipps 2007 7 14.05.2007 12:48
Zugriff verweigert...? amenhotheb PHP Tipps 2006 4 11.07.2006 16:23
Zugriff auf postgresql-db mit php PHP Tipps 2006 6 25.01.2006 09:29
gleichzeitiger Zugriff auf 2 Datenbanken dh1sbg PHP-Fortgeschrittene 3 27.12.2005 12:41
Objektorientierter Zugriff auf Multidimensionale Arrays PHP-Fortgeschrittene 31 26.11.2005 21:46
Verzeichnis (Dateien) schützen aber per PHP zugriff zulassen Server, Hosting und Workstations 2 16.10.2005 10:13
Wie Ordner und Inhalt vor unberechtigten Zugriff schützen Riot PHP Tipps 2005-2 30 06.10.2005 21:18
Zugriff auf phpmyadmin PHP Tipps 2005 1 28.02.2005 18:41
[Erledigt] Letzter zugriff von Datei anzeigen PHP Tipps 2005 13 17.01.2005 18:20

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php link auf freigabe, freigaben erst nach anmeldung aktiv, e-mail freigabe php, html login erst nach freigabe, php email eingabe und link freigabe, mit php 2 variablen einen internenbereich freigeben, php zugriff freigabe, freigabe registrierung per php, submit aktiv inaktiv nach eingabe, nach php login seiten freigeben, php zur zugriff nach login, email erst nach freigabe versenden, php link nach passwort freigeben, login bereich mit freigabe php, php netzwerkshare zugreifen user, html seiten nur nach anmeldung freigeben, formularfeld erst nach submit freigeben, seite erst nach registrierung freigegeben, nur nach anmeldung seite freigeben, php mail formular vor zugriff schützen

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:00 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum