myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Hilfe zu PHP (https://mygully.com/showthread.php?t=2182548)

Schwarze-Sonne18 13.12.10 11:06

Hilfe zu PHP
 
Mahlzeit,
ich habe ein Login- Formular mit php gebalstelt, welches von der Startseite nur Leute mit Passwort und Username zum internen Bereich lässt. Nun hab ich aber im Passwort geschützem Bereich Links zu Seiten wie zum Beispiel: Download... klicke ich nun auf die Seite und kopiere den Link und gebe ihn im Browser ein bin ich OHNE Passwort oder Benutzername im Internen Bereich =(
Wie kann ich es machen, dass mein Schutz nicht umgangen werden kann?? Also es sollen auser der ersten Seite ALLE nur mit Passwort errecgt werden...
hier mal die Codes die ich verwende...
Das Login- Formular (die erste Seite)

Die Überprüfung des Passwortes

Und dann kommt halt die Hauptseite...

bugfix 13.12.10 11:58

ojemene ;) userverwaltung = mangelhaft.... also als aller erstes solltest du mal ne datenbank verwenden um die user zu verwalten da es wesentlich einfacher ist user in das system einzupflegen....

punkt2. musst du eine session id generieren um zu überprüfen ob ein user eingeloggt ist oder nicht!

hier ein beispiel! aus einem anderen forum!

[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

hoffendlich konnte ich helfen!

greetz

Zeodos 13.12.10 12:46

zudem muss man das rad nicht immer neu erfinden... login-s*****s gibts zuhauf schon fertig programmiert

cryptos10 13.12.10 14:40

Bie google findest du tausend von Tutorials wie sowas anständig geht.

Exelto 13.12.10 16:51

Zitat:

Zitat von Zeodos (Beitrag 21647490)
zudem muss man das rad nicht immer neu erfinden... login-s*****s gibts zuhauf schon fertig programmiert

Mit so einer Ansage komm ich absolut nicht klar, ich hab die schon so oft von genug Leuten gelesen, und irgendwann ist es mir dann mal zu viel!

Man erfindet keinesfalls das Rad neu, wenn man sein eigenes S***** baut. Der Vergleich ist absolut mangelhaft, denn wenn, dann würde er nicht das Rad neu erfinden, sondern einfach probieren, eines nachzubauen!
Wenn ich ein Bild von einer Blume male, obwohl es schon 1000 von Künstlern vor mir erfolgreicher gemacht haben, dann male ich trotzdem eine Blume und kopiere nicht das Bild des anderen Künstlers.

Das musste einfach mal gesagt werden!

Schwarze-Sonne18 13.12.10 17:18

Also erst mal danke für die schnellen Antworten. Werde morgen mal testen... Aber ich finde es ziemlich hart von mangelhaft zu sprechen, ich habe mich nur versucht in die Materie einzuarbeiten und das S***** fast alleine geschreiben, und hey wer hat nicht mal klein angefangen? ;)

refLye 13.12.10 20:00

Ist schon richtig, nimms nicht zu schwer auf.

Für dich als Tipps. Entscheide dich für eine Schreibweise. Alles deutsch, oder alles englisch. Nicht "username" und "passwort" in einem Satz nennen. Bezeichne es als "benutzername" bzw. halt "password". Ich würde dir englisch empfehlen.

Deine Frage: Unerlaubten Zugriff vermeiden.
Zunächst musst du in jeder Datei in die erste Zeile
PHP-Code:

<?php session_start(); ?>

einfügen. Jede Datei, und zwar zwingend in der allerersten Zeile! Anschließend gehst du in deine Prüfung.php. Sobald alle Abfragen abgeschlossen sind, und du die Hauptseite.php inkludierst, schreibst du
PHP-Code:

$_SESSION['is_online'] = 1

rein. Das setzt die Variable is_online aus dem superglobalen Array $_SESSION auf 1. In Hauptseite.php fügst du nach nach session_start() folgende Abfrage ein:
PHP-Code:

if ( $_SESSION['is_online'] != ) { exit(); session_destroy(); } 

Das sollte das unerwünschte anmelden an der Seite unterbinden.

Schwarze-Sonne18 14.12.10 13:44

Okay, schon mal danke ABER bei deiner Lösung komm ich nicht mehr auf die Hauptseite.php, also die Seite wird nur weiß dargestelt... Die Seite fängt so an:
PHP-Code:

<?php
session_start
(); 

if ( 
$_SESSION['is_online'] != 

exit(); 
session_destroy();
}
?>

Danach dann halt der html Teil.
Aber es ist so als würde die Seite nicht Inkludiert werden. Was hab ich falsch gemacht?

Exelto 14.12.10 14:57

Du hast die $_SESSION['is_online'] mit = 1 setzen vergessen.
Somit macht er dann auch logischerweise ein exit!

Zeodos 14.12.10 16:11

Zitat:

Zitat von Exelto (Beitrag 21648353)
Mit so einer Ansage komm ich absolut nicht klar, ich hab die schon so oft von genug Leuten gelesen, und irgendwann ist es mir dann mal zu viel!

Man erfindet keinesfalls das Rad neu, wenn man sein eigenes S***** baut. Der Vergleich ist absolut mangelhaft, denn wenn, dann würde er nicht das Rad neu erfinden, sondern einfach probieren, eines nachzubauen!
Wenn ich ein Bild von einer Blume male, obwohl es schon 1000 von Künstlern vor mir erfolgreicher gemacht haben, dann male ich trotzdem eine Blume und kopiere nicht das Bild des anderen Künstlers.

Das musste einfach mal gesagt werden!

und genau dann sollte man sich nicht wundern, wenn das s***** so aussieht wie das oben.. und eben nicht wie die blume vom künstler..

klar.. man kann sachen nachbauen.. dass nennt sich dann wohl lernen..dagegen spricht auch nichts. wenn man allerdings anwendungen anfängt zu schreiben, wäre es schwachsinn, wenn man nicht auf fertige teile zurückgreift. alles andere ist reine ressourcenverschwendung. und diese meinung teilen übrings fast alle entwickler... einschließlich der profs an meiner uni.
es gibt schließlich nciht umsonst framewoks und klassensammlungen.

du schreibst wahrscheinlich auch nich die scanf-funktion selbst, wa?

Schwarze-Sonne18 14.12.10 16:29

Zitat:

Du hast die $_SESSION['is_online'] mit = 1 setzen vergessen.
Hab ich doch da stehn ...oder?

Exelto 14.12.10 16:37

Zitat:

Zitat von Zeodos (Beitrag 21651851)
klar.. man kann sachen nachbauen.. dass nennt sich dann wohl lernen..dagegen spricht auch nichts. wenn man allerdings anwendungen anfängt zu schreiben, wäre es schwachsinn, wenn man nicht auf fertige teile zurückgreift. alles andere ist reine ressourcenverschwendung. und diese meinung teilen übrings fast alle entwickler... einschließlich der profs an meiner uni.
es gibt schließlich nciht umsonst framewoks und klassensammlungen.

du schreibst wahrscheinlich auch nich die scanf-funktion selbst, wa?

Also ich bin der Meinung, dass der Threadersteller durchaus versucht zu lernen, und somit ist es nicht schlecht wenn er das ganze lieber einmal selbst macht, und sich das ganze anschaut.
Wie schon gesagt, ich kenne wenige (ich beziehe mich eher aufs Web, von C++ hab ich keine Ahnung) Websites, die wirklich erfolgreich sind, bei denen irgendwelche fremden S*****teile verwendet wurden.
Weder Yahoo, noch Google, noch Facebook, noch Myspace, noch sonst irgendwas!

Und nein, die (s,v)Scanf-Funktion schreibe ich nicht selbst, jedoch wenn ich eine Funktion die ich benötige nicht in weniger als 3 Minuten im Internet finde, schreibe ich sie selbst!

__

Zitat:

Zitat von Schwarze-Sonne18 (Beitrag 21651943)
Hab ich doch da stehn ...oder?

Nö, nur != ;)

Schwarze-Sonne18 14.12.10 17:51

Ok ich dachte es klappt, aber hab mich wohl zu früh gefreut...
Also noch mal die kompleten Codes:

das Formular auf der Seite "Startseite.html"
PHP-Code:

<?php
$_SESSION
['is_online'] = 1
?>

dann der Html Aufbau und das Formular an sich:
PHP-Code:

<form action="Prüfung.php" method="post">
<
FONT COLOR="#FF0000">Username:<br>
<
input type="Text" name="username"><br>
Passwort:<br>
<
input type="Password" name="passwort"><br>
<
input type="Submit" value="Absenden"><br>
</
form

dann kommt man ja zu Prüfung.php
PHP-Code:

<?php
$_SESSION
['is_online'] =1
?>
<?php
$username 
$_POST["username"];
$passwort $_POST["passwort"];

if( (
$username=="X"  AND $passwort=="X")
OR
    (
$username=="XX"  AND $passwort=="XX")
OR
    (
$username=="XXX" AND $passwort=="XXX") )
   {
echo 
"Herzlich Willkommen im internen Bereich";
   include 
'Hauptseite.php';
   
$_SESSION['is_online'] !=1;
   }
else
   {
   echo 
"Das Passwort ist leider falsch";
   include 
'falsch.php';
   }
?>

dann sollte die Hauptseite sich öffnen (Hauptseite.php)
PHP-Code:

<?php
session_start
() ; 

if ( 
$_SESSION['is_online'] !=

exit(); 
session_destroy();
}
?>

und der Inhalt... welcher mir nicht angezeigt wird..
kann ich echt so dumm sein und den #'?@ Fehler nicht sehen?!?!

Exelto 15.12.10 13:44

Nein, man kommt nicht zur "Prüfen.php" sondern zur "Prüfung.php" ;)
Aber ich würde die sowieso empfehlen, umlaute zu lassen und das ganze z.B. check.php zu nennen.

Schwarze-Sonne18 15.12.10 17:07

Zitat:

Zitat von Exelto (Beitrag 21655389)
Nein, man kommt nicht zur "Prüfen.php" sondern zur "Prüfung.php" ;)
Aber ich würde die sowieso empfehlen, umlaute zu lassen und das ganze z.B. check.php zu nennen.

Danke für dein Tipp... ABER der Fehler war nur hier, also im S***** funktioniert DASS ja

Eule66 18.12.10 12:26

Hi, ich habe das eben einmal getestet. Im Gegensatz zu deinen Angaben habe ich dabei die Zeile:
PHP-Code:

<?php session_start() ; ?>

auch in die erste Zeile der "startseite.php" eingetragen.
Also:

1) "startseite.php":

PHP-Code:

<?php session_start() ; ?>
<?php
$_SESSION
['is_online'] = 1
?> 
<form action="pruefung.php" method="post">
<FONT COLOR="#FF0000">Username:<br>
<input type="Text" name="username"><br>
Passwort:<br>
<input type="Password" name="password"><br>
<input type="Submit" value="Absenden"><br>
</form>

2) "pruefung.php":

PHP-Code:

<?php session_start() ; ?>
<?php
$_SESSION
['is_online'] =1
?>
<?php
$username 
$_POST["username"];
$password $_POST["password"];

if( (
$username=="X"  AND $password=="X")
OR
    (
$username=="XX"  AND $password=="XX")
OR
    (
$username=="XXX" AND $password=="XXX") )
   {
echo 
"Herzlich Willkommen im internen Bereich";
   include 
'hauptseite.php';
   
$_SESSION['is_online'] !=1;
   }
else
   {
   echo 
"Das Passwort ist leider falsch";
   include 
'falsch.php';
   }
?>

3) "hauptseite.php":

PHP-Code:

<?php session_start() ; ?>
<?php
if ( $_SESSION['is_online'] !=

exit(); 
session_destroy();
}
?> 
<!-- Hier dein HTML -->
<br><b> HAUPTSEITE OK!

4) "falsch.php":

PHP-Code:

<!-- Dein HTML-CodeevtlButton für zurück zur Startseite... -->
<
br><b>FALSCH

Wegen Linux/Apache sind die Umlaute und die Groß/Kleinschreibung etwas angepasst.

Schreib, wenn es bei dir nicht funktioniert. Möglicherweise geht es so nicht bei anderen PHP-Versionen. Deine Benutzernamen/Passworte solltest du aber, bei einem System, welches du später wirklich einsetzen möchtest, über eine Datenbank abprüfen.

Vorweihnachtlichen Gruß,

Eule66

Schwarze-Sonne18 18.12.10 19:15

Vielen Dank, jetzt kann ich wieder den Inhalt meiner Hauptseite sehen:T. Und wieder ein großes ABER, und zwar kann ich immer noch mein eigenen Passwortschutz umgehen in dem ich, wenn ich mich einmal eingeloggt habe und denn Link kopiere, dann den Browser schliese und ihn erneut öffne und den Link eingebe komm ich in den Bereich den man NUR MIT PW ereichen sollte ohne dieses einzugeben.

m3zz0w1x 18.12.10 21:00

Die Session muss bei diesem Vorgang ja nicht abgelaufen sein!

Eule66 19.12.10 12:08

Hi,

setze bei der Bedingung in der PW-Abfrage ("pruefung.php") bei
PW-Falscheingabe zunächst die Cookie-Variabele "is_online" wieder zurück.
(...)
PHP-Code:

   {
echo 
"Herzlich Willkommen im internen Bereich";
   include 
'hauptseite.php';
   
$_SESSION['is_online'] =1;
   }
else
   {
   echo 
"Das Passwort ist leider falsch";
   include 
'falsch.php';
   
$_SESSION['is_online'] =0;
   } 

(...)
Wenn dein Browser die Session nach dem Schließen nicht auch schließt, wird der Cookie für die dann gleiche Sitzung mitverwendet. Mit einem frisch gestarteten Rechner oder einem geleerten Browser-Cookie-Cache, sollte die "hauptseite.php" normalerweise immer leer sein.
Du kannst aber auch auf jeder Seite hinter dem HTML Code ein
PHP-Code:

<?php session_unset() ; ?>

setzen, dann fliegst du aber aus der jeweiligen Sitzung insgesammt heraus.

Gruß

Eule66

holzmensch 21.12.10 14:52

Da kann man nur folgendes empfehlen:
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

swtcw12 28.12.10 18:14

Ist trotzdem noch relativ unsicher.
ICh würde vorschlagen die Session-ID zusätzlich in einer Datenbank z.B. Mysql zu speichern und dann zusätzlich noch die Session-ID immer überprüfen.

Schwarze-Sonne18 31.12.10 10:27

Kannst du mir da vllt ein Link geben wo das beschrieben wird, oder mein S***** so umschreiben das ich eine Datenbank habe? Weil mit mysql komme ich echt nicht klar, ist mir noch zu komplieziert...

tha_specializt 31.12.10 11:03

Zitat:

Zitat von Schwarze-Sonne18 (Beitrag 21717527)
Kannst du mir da vllt ein Link geben wo das beschrieben wird, oder mein S***** so umschreiben das ich eine Datenbank habe?

Es wäre wirklich besser wenn du erst einmal lernst was ein Computer ist, was ein Prozessor ist u.v.m. - das alles übersteigt derzeit das, was dir möglich ist bei weitem, fang am besten zuerst einmal mit den IT-Grundlagen an - dann kannst du dich evtl. an HTML rantasten und statische Sites erstellen, erst danach kommt das dynamische - und das benötigt übrigens viele Jahre des Einarbeitens. Wenn du nicht bereit bist deine komplette Frezeit dem Lernen & Üben zu widmen .... nun ... dann lass es besser komplett bleiben.

Eine [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] hat übrigens nichts mit der [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] PHP zu tun (auch wenn PHP eine MySQL-Unterstützung integriert hat) also gibts da auch nichts "umzuschreiben" - DBs sind ein komplett eigenes Thema.

In der Summe kann man sagen : du nimmst dir viel zu viel vor.

INFStud 04.01.11 21:39

Zitat:

Zitat von tha_specializt (Beitrag 21717649)
Es wäre wirklich besser wenn du erst einmal lernst was ein Computer ist, was ein Prozessor ist u.v.m. - das alles übersteigt derzeit das, was dir möglich ist bei weitem, fang am besten zuerst einmal mit den IT-Grundlagen an
[...] und das benötigt übrigens viele Jahre des Einarbeitens. Wenn du nicht bereit bist deine komplette Frezeit dem Lernen & Üben zu widmen.

Das ist doch totaler Unsinn. Ein
Grundlagen sind nützlich, aber nicht notwendig. Man kann auch ohne IT-Grundwissen PHP erlernen.
"Jahre des Einarbeitens"...auch Schmarn... PHP und alles dazu nötige Wissen kann man in Tagen erlernen.

@tha_spukialest:
Vielleicht warst du damit einfach überfordert?

m3zz0w1x 04.01.11 21:52

Wenn jemand Jahre braucht (wie der "Spezialist", welcher Wortwitz! :) ) um die Grundlagen zu erlernen, dann frage ich mich das auch...

Exelto 05.01.11 09:13

Und vor allem die komplette Freizeit dafür aufzuwenden. Ich hab jeden Abend höchstens eine Stunde PHP gelernt, kurz bevor ich mich hingehaut hab, und das war nicht meine gesamte Freizeit.

raki1978 13.01.11 11:17

tha_specialist du labberst echt nur dünnsinn. so ein quatsch, man muss nicht erst die it-grundlagen lernen, um sich dann eventuell mal an HTML heranzutrauen.
du hast bestimmt iwo mal was gelesen und meinst, du bist der oberspecialist, du und deine disqualifizierenden aussagen "nerven" mich. bist schon mit solchen aussagen des öfteren hier aufgetreten.

ich bin nicht mal ansatzweise im it-bereich tätig und kann dir sagen, welche teile im pc verbaut sind, aber wie sie funktionieren da habe ich keine ahnung und es interessiert mich auch einfach nicht und kann trotzdem mit php / mysql / css / ... umgehen und HABE DEFINITIV NICHT MEINE KOMPLETTE FREIZEIT DAFÜR INVESTIERT.

bitte schreibe erst wieder, wenn deine tipps hilfreich / weiterführend / ... sind, ansonsten belästige mich nicht, OK? ich glaube, ich spreche für einige user hier.

raki1978 13.01.11 11:20

@schwarze-sonne:
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] nutze dieses video (6 teile). finde ich gut, aber ist schon ein paar tage älter

MaiLight88 13.01.11 14:10

Zitat:

Zitat von raki1978 (Beitrag 21771118)
tha_specialist du labberst echt nur dünnsinn. so ein quatsch, man muss nicht erst die it-grundlagen lernen, um sich dann eventuell mal an HTML heranzutrauen.
du hast bestimmt iwo mal was gelesen und meinst, du bist der oberspecialist, du und deine disqualifizierenden aussagen "nerven" mich. bist schon mit solchen aussagen des öfteren hier aufgetreten.

ich bin nicht mal ansatzweise im it-bereich tätig und kann dir sagen, welche teile im pc verbaut sind, aber wie sie funktionieren da habe ich keine ahnung und es interessiert mich auch einfach nicht und kann trotzdem mit php / mysql / css / ... umgehen und HABE DEFINITIV NICHT MEINE KOMPLETTE FREIZEIT DAFÜR INVESTIERT.

bitte schreibe erst wieder, wenn deine tipps hilfreich / weiterführend / ... sind, ansonsten belästige mich nicht, OK? ich glaube, ich spreche für einige user hier.

Don't feed the Troll!
Glaube kaum, dass jemand solchen Unsinn ernst meinen kann.

m3zz0w1x 14.01.11 20:15

Wenn sich der "Spezialist" so wichtig machen muss, dann wohl eher zum Selbstschutz.
Vermutlich hat er Angst zu erkennen, dass das wofür er monatelang lernen musste, ein halbwegs-begabter Mensch schon in wenigen Tagen erlernt. Sein Weltbild wäre zerstört. Außerdem könnte das Schnuckilein in seinem Dorf nicht mehr so prahlen, wie geil er doch PCs reparieren kann...

tha_specializt 16.01.11 21:59

Zitat:

man muss nicht erst die it-grundlagen lernen, um sich dann eventuell mal an HTML heranzutrauen.
Hihi ... sag das mal zu deinem IT/CT -Lehrer ... wirst dich wundern

raki1978 17.01.11 14:15

und wieder hat es blubb gemacht.
ich gebe allen vorredner - außer dir - recht :-D
auf was für einer schule bist du? e-schule?

refLye 17.01.11 15:46

Könnte ein Mod das Thema hier mal schließen. Das ist doch nur noch ein alberner Bitchfight.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.