auf variable in der url zugreifen
malte
- perl
0 Christoph Schnauß1 Siechfred1 Eternius0 Struppi
Hallo,
habe schon ordentlich gegooglt und unter anderem http://www.html-world.de/program/cgi_4.php#dieget-methode gefunden. aber das geht irgendwie nicht...
in perl habe ich in der ausgangsdatei:
<a href="javascript:loeschen(".@inhalt[0].")">
die fkt wird aufgerufen:
<script type="text/javascript">
function loeschen(id){
check=confirm("Wollen Sie den Eintrag wirklich löschen?");
if(check==true){
window.location.href="delete.pl?id="+id;
}
}
</script>
und in der "delete.php" soll dann:
$WEB_APPS_del=$dbh->prepare("DELETE FROM WEB_APPS WHERE APPID='".$id."'");
$WEB_APPS_del->execute();
aber wie komme ich an die ID aus der URL?
habe das gefühl, dass mich die ID nicht mag.
danke,vg
hallo,
die fkt wird aufgerufen:
<script type="text/javascript">
Das ist Javascript ...
und in der "delete.php"
... und das ist PHP. Ich kann nicht annehmen, daß dein Server so eingestellt ist, daß er *.php-Dateien als Perl-Scripts behandelt (was theoretisch machbar, aber unsinnig wäre).
aber wie komme ich an die ID aus der URL?
Über $ENV{'QUERY_STRING'}
Grüße aus Berlin
Christoph S.
Tag malte.
$WEB_APPS_del=$dbh->prepare("DELETE FROM WEB_APPS WHERE APPID='".$id."'");
aber wie komme ich an die ID aus der URL?
Am elegantesten mit Hilfe von CGI.pm, Methode param(). Vergiss aber nicht, die dann vorliegende ID *vor* dem Einbau in das Statement einer eingehenden Sicherheitsprüfung zu unterziehen, um Injections zu vermeiden, siehe auch perlsec.
Siechfred
Hallo,
$WEB_APPS_del=$dbh->prepare("DELETE FROM WEB_APPS WHERE APPID='".$id."'");
$WEB_APPS_del->execute();
gleich noch ein batscher von einer anderen seite, das oben ist ganz bäh (sql injection,...).
verwende platzhalter:
$WEB_APPS_del=$dbh->prepare("DELETE FROM WEB_APPS WHERE APPID=?");
$WEB_APPS_del->execute($id);
und wenn du zu solchen sachen kommst, das du tabellennamen zusammenbasteln musst:
$dbh->prepare("select * from my_".$name."_table");
dann prüfe pedantisch das in $name das drinsteht, was drinstehen soll!!
gruss
in perl habe ich in der ausgangsdatei:
<a href="javascript:loeschen(".@inhalt[0].")">
Du schreibst deine skripte ohne use strict und warnungen sind auch nicht eingeschaltet?
Das solltest du nicht, hier steckt ein Perl Fehler
die fkt wird aufgerufen:
<script type="text/javascript">
function loeschen(id){
check=confirm("Wollen Sie den Eintrag wirklich löschen?");
if(check==true){
window.location.href="delete.pl?id="+id;
}
}
</script>
Würd ich nicht so machen, das geht einfacher:
<a href="delete?id=$inhalt[0]"
onclick="return confirm('sicher');">löschen</a>
Das ganze kann man den noch erweitern wenn man möchte mit einer serverseitigen Überprüfung, dann muss man hier aber noch einen Parameter dranhängen und nach der Bestätigung verändern.
und in der "delete.php" soll dann:
$WEB_APPS_del=$dbh->prepare("DELETE FROM WEB_APPS WHERE APPID='".$id."'");
Du kennst den Begriff SQL-Injection?
Mit dieser Variante wird dir ein Fremder früher oder später entweder alle Daten klauen oder alle Tabellen löschen oder sonst was fieses machen.
Und darüber hinaus muss jede Eingabe die vom Anweder kommt überprüft werden. Es sollte hier ein einfaches sein das Programm mit einer Meldung zu beenden wenn $id leer ist.
aber wie komme ich an die ID aus der URL?
habe das gefühl, dass mich die ID nicht mag.
Du verwendest nicht CGI.pm?
Struppi.