Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
12.02.13, 20:15
|
#1
|
Anfänger
Registriert seit: Feb 2013
Beiträge: 10
Bedankt: 0
|
Dateinamen der PHP-Datei ermitteln
Hallo zusammen,
möchte gerne einem PHP scrypt den Dateinamen ermitteln lassen in der dieser steht.
Leider funktioniert das Beispiel von [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] Website bei meinem scrypt nicht
Mein scrypt
PHP-Code:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Unbenanntes Dokument</title>
</head>
<body>
<?php
if (
empty ($_GET['vorname']) == TRUE
OR
empty ($_GET['nachname']) == TRUE
)
{
if ($_GET['kontrolle'] == 1)
{
echo "<p><b>Leere Felder</b></p>";
}
echo '
<form action="formular-m-anzeige.php" method="GET">
<p>Ihr Vorname:
<input type="text" name="vorname" id="vorname"
value=" ' . $_GET['vorname'] . ' " size="10"
maxlength="10"/>
</p>
<p>Ihr Nachname:
<input type="text" name="nachname" id="nachname"
value=" ' . $_GET['nachname'] . ' " size="10"
maxlength="10"/>
</p>
<input type="hidden" name="kontrolle" id="kontrolle" value="1"/>
<p>Absendebutton:
<input type="submit" value="absenden" />
</p>
</form>';
}
else
{
// beliebige Aktion, z. B. E-Mail senden, DB-Eintrag
echo "eingetragener Name: " . $_GET['vorname'] . " " . $_GET['nachname'];
}
?>
</body>
</html>
|
|
|
12.02.13, 21:33
|
#2
|
Profi
Registriert seit: May 2009
Ort: riding the roos
Beiträge: 1.468
Bedankt: 1.057
|
An den paar Zeilen die du gepostet hast stimmt so gut wie garnichts.
Auch um was für einen Dateinamen es geht erschliesst sich mir nicht.
Also spezifiziere doch mal etwas genauer dein Problem.
|
|
|
12.02.13, 22:30
|
#3
|
Anfänger
Registriert seit: Feb 2013
Beiträge: 10
Bedankt: 0
|
Ja also der Dateiname für das im ersten Beitrag gezeigte scrypt lautet formular-m-anzeige.php aus dem habe ich aber den code, der den Dateinamen vom scrypt ermitteln sollte wieder rausgenommen weil es einfach nicht funktionierte und unübersichtlich wurde.
Hab es jetzt noch mahl so geändert, wie ich es aus der Anleitung Interpretiert habe und das Ergebnis ist nun ein anderres. Soll heißen, die Fehler Meldung - weis nicht mehr genau wie die lautette, aber die hatte auf jeden Fall was mit dem PHP_SELF teil zu tun - ist weg.
Oder besser gesagt wurde durch einen neuen ersetzt. In den Feldern ist nun von vornherein eine 1  Ist zwar eigendlich egal weils ja nur zum üben ist aber ne Lösung wäre schon Interessant.
Ja auf jeden Fall hier noch mahl das überarbeitete scrypt das nun zumindest den Dateinamen selber ermittelt.
PHP-Code:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Unbenanntes Dokument</title>
</head>
<body>
<?php
$PHP_SELF = $_SERVER['PHP_SELF'];
if (empty ($_GET['vorname']) == TRUE
or
empty ($_GET['nachname']) == TRUE
)
{
if (isset($_GET['kontrolle']) == 1)
{
echo "<p><b>Leere Felder</b></p>";
}
echo '
<form action="'. $PHP_SELF .'" method="GET">
<p>Ihr Vorname:
<input type="text" name="vorname" id="vorname"
value=" ' . !isset ($_GET['vorname']) . ' " size="10"
maxlength="10"/>
</p>
<p>Ihr Nachname:
<input type="text" name="nachname" id="nachname"
value=" ' . !isset ($_GET['nachname']) . ' " size="10"
maxlength="10"/>
</p>
<input type="hidden" name="kontrolle" id="kontrolle" value="1"/>
<p>Absendebutton:
<input type="submit" value="absenden" />
</p>
</form>';
}
else
{
// beliebige Aktion, z. B. E-Mail senden, DB-Eintrag
echo "eingetragener Name: " . $_GET['vorname'] . " " . $_GET['nachname'];
}
?>
</body>
</html>
|
|
|
13.02.13, 04:00
|
#4
|
Profi
Registriert seit: May 2009
Ort: riding the roos
Beiträge: 1.468
Bedankt: 1.057
|
Du sollstest die als allererstes Mal angewöhnen die Fehlermeldungen nicht zu ignorieren und wenn du schon eine bekommst diese auch mit anzugeben.
Die eins bekommst du, weil du bei value eine PHP-Abfrage eingesetzt hast, nämlich ob die Get-Variablen nicht gesetzt sind.
Wenn du nichts vorgeben willst mach einfach bei value alles zwischen den Hochkommas raus.
|
|
|
13.02.13, 08:17
|
#5
|
Anfänger
Registriert seit: Feb 2013
Beiträge: 10
Bedankt: 0
|
Ja genau an dem !isset lag das Problem. DANKE 
Hab die halt gesetzt weil mich diese Notice: Undefined index: Meldungen irretieren.
Werde die nun einfach ersteinmahl mit @ unterdrücken.
|
|
|
13.02.13, 11:06
|
#6
|
Profi
Registriert seit: May 2009
Ort: riding the roos
Beiträge: 1.468
Bedankt: 1.057
|
Wenn du lernen willst zu programmieren solltest du als erstes lernen die Meldung richtig zu interpretieren und abzustellen.
Die Meldungen mit einem @ zu unterdrücken ist definitiv NICHT der richtige Weg.
Jede Meldung lässt sich bei richtiger Programmierung ausmerzen.
|
|
|
13.02.13, 17:13
|
#7
|
Anfänger
Registriert seit: Feb 2013
Beiträge: 10
Bedankt: 0
|
Ja weil dadurch auch anderre Fehlermeldungen unterdrückt werden, die durch die selbe variable entstehen könnten.
Ist mir schon klar. Aber wenn man !isset oder isset wie in diesem Fall nicht nutzen kann,
in der php.ini keine Fehler abstellen will/sollte und lokal layuten muss,
welcher weg richtig zu Programmieren bleibt dan in diesem Fall noch ?
|
|
|
13.02.13, 20:46
|
#8
|
Profi
Registriert seit: May 2009
Ort: riding the roos
Beiträge: 1.468
Bedankt: 1.057
|
Wieso kann man isset nicht nutzen ?
Selbstverständlich kann man das nutzen aber nur da wo es Sinn macht.
Du hast das isset an einer Stelle benutzt wo es überhaupt keinen Sinn macht, zumal die Variablen, nach denen du gefragt hast an dieser Stelle niemals gesetzt sein können weil du das wiederum in deinem S***** ausgeschlossen hast. Die 1 in deinen Feldern hat einfach nur wahrheitsgemäss angezeigt das die Variablen nicht existieren. 0 = FALSE, 1 = TRUE. Da du nach !isset gefragt hast, wobei das Ausrufezeichen für not steht bekommst du als Antwort ein TRUE, also 1 zurück.
Programmieren ist wie eine gesprochene Sprache, eben mit anderen Vokabeln und Begriffen.
Eine $_GET-Variable wird per Browser als Anhängsel der URL erzeugt. Schau dir mal, wenn du dein Formular abschickst die URL oben an. Da wirst du deine Eingaben wiederfinden.
Jetzt hast du auch den grund warum dein isset nicht hinhauen kann. Du fragst nämlich die beiden Variablen, die du mit dem Formular erst senden willst schon im Formular ab.
Grundsätzlioch macht es beim programmieren keinen Sinn, irgendwelche Code-Schnippsel
zusammen zu kopieren ohne zu wissen was diese eigentlich tun.
Geh dein S***** Stück für Stück durch und versuche zu verstehen was es eigentlich tut, dann wirst du relativ schnell darauf kommen warum etwas nicht funktioniert bzw. keinen Sinn macht.
In einem Formular mit Benutzernamen und Kennwort macht es übrigens keinen Sinn die Value-Werte mit irgendetwas vorzubelegen, das heisst der Parameter Value kommt nicht zum Einsatz.
Noch abschliessend zu deiner Frage welcher Weg noch bleibt:
Eine Variabe kann erst dann genutzt werden, wenn sie auch gesetzt ist. Da beim ersten Aufruf deines S*****s ausser der $PHP_SELF keinerlei eigene Variablen gesetzt sind wirst du immer eine Notice bekommen wenn du auf Variablen zugreifen willst. Dies tust du aber in den values.
Die Variable PHP_SELF ist obendrein unnütz und evtl. sogar gefährlich. Mit PHP_SELF arbeitet man heute nicht mehr da sie die Gefahr von XSS-Angriffen bietet.
Wenn du in einem S***** den eigenen S*****-Namen abfragen willst mach das besser mit $_SERVER['S*****_NAME'].
Eine bestehende globale Variable in eine lokale Variable zu übernehmen macht auch nur dann Sinn wenn diese loakle Variable dann weiterverarbeitet wrd. Das ist bei dir nicht der Fall also kannst du auch einfach die globale variable in action schreiben.
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:45 Uhr.
().
|