Ein PHP-Skript speichert ja von sich aus nichts ab, also ist die Variable bei jedem neuen Aufruf des Skripts wieder 0
"erweiterte" Galerie
-
-
Ah okay das wusste ich auch noch nicht aber danke für die Info
So jetzt wollte ich meine gallerie.php mit Wolfs Script erweitern damit er die Bilder automatisch einfügt
PHP
Alles anzeigen<?php //alle Fehler anzeigen mit »E_ALL« -> mit »0« (NULL) werden keine fehler angezeigt error_reporting(E_ALL); //eine Datei Importieren #include 'imagedata.php'; #$bilderliste = $array; //Das array aus »imagedata.php« in bilderliste schreiben //die Pfase angeben $kleinerPfad = 'pfad/'; $groserPfad = 'pfad/gr/'; $bilderliste = scandir($kleinerPfad); echo '<div class="img-gallerie" >'; // für jedes bild in $bilderliste: foreach($bilderliste as $id => $name){ // htmlspecialchars siehe: http://php.net/manual/de/function.htmlspecialchars.php $src = htmlspecialchars($name); //Prüfen ob der name zu kurz ist (z.B. »./« oder »../« oder »gr/« ) if ( strlen($name) <= 5) { //dann zum nächsten foreach springen exit(0); } //ich habe hier die Daten so hässlich aufgedröselt, das man es besser lesen kann was für Daten übergeben werden //beim a-tag wird das zielscript übergeben (falls JS ausgeschaltet ist) mit folgendem link: ScriptName.php?img=$ID (es wird einfach die ID noch übergeben) echo ' <div class="img-container"> <a class = "img-link" href = "'.$groserPfad.$name'" rel = "lightbox" title = "'.$name.'" > <img class ="img-img" src = "'.$kleinerPfad.$name'" alt = "'.$name'" data-img-id="'.$id.'" /> </a> </div> '; }#foreach echo '</div>'; ?>
Jedoch ist mir die Variable $name etwas unschlüssig. Ich hatte für den Namen ja $image genommen, meint er die damit?
wenn ich das Script nämlich so wie es jetzt ist hochlade bekomme ich den Fehler: "Parse error: syntax error, unexpected ''"' (T_CONSTANT_ENCAPSED_STRING), expecting ',' or ';' in /users/darksoul/www/TestSeite/galerie.php on line 35" -
Bei Dir heißt es ursprünglich $bild
er hat halt nur einen anderen Namen vergeben.
Du kannst in seinem Script $name in Bild ändern, oder Deine Variable $bild in $name =)BTW:
ich glaube da hat sich ein Fehler eingeschlichen:
exit(0); beendet das Script.
Ich denke er meinte hier continue;EDIT: ach ja der Fehler:
-
Ich ich gemacht aber ich bekomme jetzt immernoch den Fehler "Parse error"
Edit: Ich habe dein "Edit" jetzt erst gesehen
Danke es klappt jetzt
So mein letztes kleines Problem ist jetzt der Login.PHP
Alles anzeigenif ($_SERVER['REQUEST_METHOD'] == 'POST') { session_start(); $passwort = $_POST['passwort']; $hostname = $_SERVER['HTTP_HOST']; $path = dirname($_SERVER['PHP_SELF']); // Benutzername und Passwort werden überprüft if ($passwort == 'MeinPW') { $_SESSION['angemeldet'] = true; // Weiterleitung zur geschützten Startseite if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') { if (php_sapi_name() == 'cgi') { header('Status: 303 See Other'); } else { header('HTTP/1.1 303 See Other'); } } header('Location: http://darksoul.bplaced.net/TestSeite/upload.php'); exit; } }
er leitet mich nicht auf die Seite weiter. Woran kann das liegen?
-
Was sagt dein error_reporting?
Ich glaube ich schreib location immer kleinMüsste reichen
Was hats mit dem teil zwischen Zeile 14 und Z 21 auf sich?
Mehr Einrückung ist echt wichtig, die leserlichkeit leidet darunter
PHP
Alles anzeigen<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { session_start(); $passwort = $_POST['passwort']; //WOFÜR $hostname = $_SERVER['HTTP_HOST']; //WOFÜR $path = dirname($_SERVER['PHP_SELF']); // PW check mit 3 » = « if ($passwort === 'MeinPW') { $_SESSION['angemeldet'] = true; //DAS KÖNNTE FEHLER SEIN - weis nicht was 303 bedeutet aber meiner MEinung nach ist dieser Teil unwichtig. /* // Weiterleitung zur geschützten Startseite if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') { if (php_sapi_name() == 'cgi') { header('Status: 303 See Other'); } else { header('HTTP/1.1 303 See Other'); } } */ //hier die echte Weiterleitung header('location: upload.php'); exit; } } ?>
-
Ja der Teil war eigentlich wirklich quatsch habe ihn jetzt auch entfernt.
Er leitet mich jetzt jedoch auf http://darksoul.bplaced.net/TestSeite/login.php, obwohl ich diese Seite gar nicht habe und im Script http://darksoul.bplaced.net/TestSeite/upload.php eingegeben habe.
Aus Spaß habe ich die upload.php in login.php umbenannt und dann klappte es... aber wieso? -
Ich glaube Du hast in beiden Scripts Weiterleitungen, oder?
Du schickst Dich hin und her -
Nein eigentlich nicht
Ich habe ja nur main_login.php (script hatte ich ja gerade gepostet^^) und die upload.php.
Und in der upload.php habe ich ja keine Weiterleitung^^PHP
Alles anzeigen<?php /*session_start(); if(!isset($_SESSION['angemeldet']) or $_SESSION['angemeldet'] !== true){ die; // stop }*/ $dirpic = "gallerie/gr/"; $handle = opendir($dirpic); while ($filepic = readdir($handle)) { if($filepic != "." AND $filepic != "..") { $id++; } } closedir($handle); $endung=".jpg"; if(isset($_POST['Upload'])){ if(isset($_FILES['error'])){ }else{ if(isset($_FILES['vbild'])){ $image="image-".$id.$endung; if(move_uploaded_file($_FILES['vbild']['tmp_name'], "gallerie/".$image)){ // hat geklappt }else{ // fehler ... } } if(isset($_FILES['gbild'])){ $image="image-".$id.$endung; if(move_uploaded_file($_FILES['gbild']['tmp_name'], "gallerie/gr/".$image)){ // hat geklappt }else{ // fehler ... } } } } ?> <!DOCTYPE html> <html> <head> <title>Geschützter Bereich</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> Vorschaubild: <input name="vbild" type="file"> <br /><br /> richtiges Bild: <input name="gbild" type="file"> <br> <input type="submit" name="Upload" value="Upload" /> </form> </body> </html>
-
Du kannst übrigens statt ein Großes und ein Kleines Bild hochzuladen, das große vom Server kleinrechenn Lassen
Siehe
https://github.com/wolf-w/past…ob/master/IMAGEUPLOAD.php
Zeile 139-184 -
Ah gut zu wissen
aber ich glaube jetzt für den Anfang ist mir das noch ein bisschen zu Hoch^^ ich werde darauf vllt mal zurück kommen wenn ich etwas weiter fortgeschritten bin -
okay, keine schlechte IDee
-
Hast du eine Idee woran mein oben zuletzt beschriebenes Problem liegen kann?
-
poste mal beide Scripte, damit wir noch durchsehen
-
upload.php
PHP
Alles anzeigen<?php session_start(); if(!isset($_SESSION['angemeldet']) or $_SESSION['angemeldet'] !== true){ die; // stop } $dirpic = "gallerie/gr/"; $handle = opendir($dirpic); while ($filepic = readdir($handle)) { if($filepic != "." AND $filepic != "..") { $id++; } } closedir($handle); $endung=".jpg"; if(isset($_POST['Upload'])){ if(isset($_FILES['error'])){ }else{ if(isset($_FILES['vbild'])){ $image="image-".$id.$endung; if(move_uploaded_file($_FILES['vbild']['tmp_name'], "gallerie/".$image)){ // hat geklappt }else{ // fehler ... } } if(isset($_FILES['gbild'])){ $image="image-".$id.$endung; if(move_uploaded_file($_FILES['gbild']['tmp_name'], "gallerie/gr/".$image)){ // hat geklappt }else{ // fehler ... } } } } ?> <!DOCTYPE html> <html> <head> <title>Geschützter Bereich</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> Vorschaubild: <input name="vbild" type="file"> <br /><br /> richtiges Bild: <input name="gbild" type="file"> <br> <input type="submit" name="Upload" value="Upload" /> </form> </body> </html>
main_login.php
PHP
Alles anzeigen<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { session_start(); $passwort = $_POST['passwort']; // Benutzername und Passwort werden überprüft if ($passwort == 'IhdbPW4e.') { $_SESSION['angemeldet'] = true; header('location: http://darksoul.bplaced.net/TestSeite/upload.php'); exit; } } ?> <!DOCTYPE html> <html> <head> <title>Geschützter Bereich</title> </head> <body> <form action="login.php" method="post"> Passwort: <input type="password" name="passwort" /><br /> <input type="submit" value="Login" /> </form> </body> </html>
so:D
Edit: Problem:
ZitatEr leitet mich jetzt jedoch auf http://darksoul.bplaced.net/TestSeite/login.php, obwohl ich diese Seite gar nicht habe und im Script http://darksoul.bplaced.net/TestSeite/upload.php eingegeben habe.
-
Das Problem:
<form action="login.php" method="post">login.php existiert nicht.
Also abändern in main_login.php oder (einfacher) : action="" -
Daaaankeee
Jetzt klappt alles und ich kann mich dem Design zuwenden -
So habe meine Gallerie noch einmal erweitert.
Ich habe das Loginsystem dort eingefügt.PHP: 29
Alles anzeigen<div id="login"> <h1 style="color: #FF0000; text-align: center;">-Login-</h1> <form action="galerie.php" method="post"> Passwort: <input type="password" name="passwort" /><br /> <input type="submit" value="Login" /> </form> </div> <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { session_start(); $passwort = $_POST['passwort']; if ($passwort == 'MeinPW') { $_SESSION['angemeldet'] = true; header('location: http://darksoul.bplaced.net/BSI/upload.php'); exit; } } ?> <div class="gindexbox">
Wenn ich jetzt auf Login klicke bekomme ich "Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /users/darksoul/www/BSI/galerie.php:36) in /users/darksoul/www/BSI/galerie.php on line 38
Warning: Cannot modify header information - headers already sent by (output started at /users/darksoul/www/BSI/galerie.php:36) in /users/darksoul/www/BSI/galerie.php on line 43"Was ist denn jetzt schonwieder los?!
-
session_start() muss aufgerufen werden, BEVOR irgendein Zeichen ausgegeben wurde.
Nicht mal ein Leerzeichen darf ausgegeben werden.
Also am besten immer ganz oben im Script nutzen.Du kannst aber auch gleich den ganzen PHP Block nach oben legen.
Denn wenn etwas reinkommt (das abgesandte Formular), dann brauchst Du nix mehr auszugeben.Das Prinzip ist eigtl immer gleich:
- kommt was rein? wenn ja, handeln
- formular ausgeben -
(Es hilft, falls du mal keinen kompletten Code angibst, wenn du die Zeilen so nummerierst wie sie auch tatsächlich nummeriert sind, mit php=zeilennummerwodercodeanfängt im BB-Tag statt nur php. Ich habe mal probiert das zu machen, damit die Zeilennummern klar sind)
Probier doch einfach mal selber die Fehlermeldungen zu lesen, wie sollst du denn jemals was lernen wenn wir dir immer alles vorkauen?
Nochmal aufgedröselt:ZitatCannot send session cache limiter - headers already sent
aka: kann die Session nicht setzen, weil die header schon gesendet wurden. Wann werden die header gesendet? Auf jeden Fall vor dem ersten Output - siehe nächste Zeile der Fehlermeldung:
Zitatoutput started at /users/darksoul/www/BSI/galerie.php:36
Sprich vor Zeile 36 war schon eine Ausgabe.
Gleiches gilt für Zeile 43, die header sind schon gesendet, also kannst du sie nicht mehr verändern.
Den ganzen Session und header-Kram also immer VOR die erste Ausgabe (siehe cotttons Beitrag)
Bei der nächsten Fehlermeldung bitte erstmal selbst versuchen
-
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!