PHP: Warum kommt da nix?
pirate man 05.01.2002 - 21:39 1832 18
pirate man
Here to stay
|
ich bastel grad an einem script und hab dabei eine unlogische "entdeckung" gemacht eine schleife: if($id == "1")
{
setlocale("LC_ALL","de_DE");
$date = strftime("%A, %d. %m. %Y", $temp_time);
}
elseif($id == "2")
{
$date = strftime("%A, %B %d %Y", $temp_time);
}
else {}
wenn ich $date ausgebe, wird das datum richtig angezeigt noch eine schleife: if($id == "1")
{
$kommentar = "<a href=\"main.php?page=comments&id=$id\">Kommentare</a> [$anzahl]";
}
elseif($id == "2")
{
$kommentar = "<a href=\"main.php?page=comments&id=$id\">Comments</a> [$anzahl]";
}
else {}
wenn ich $kommentar ausgebe, wird nichts angezeigt ich hab keine ahnung warum und hoffe, dass ihr mir helfen könnt
|
Nurmi
OC Addicted
|
so gehts glaub i: "<a href=\'main.php?page=comments&id=$id\'>Kommentare</a> [$anzahl]";
du darfst ned " und ' verwechseln weil sonst wäre dein string schon bei $id\" wegen dem " aus...
|
Guest
Deleted User
|
Naja ich hab da auch miranda gefunden(bei tucows.chello.at) Braucht bei mir 1.3MB.... Is auch net überladen... bietet aber alles was ich brauch!
----------------
Mir gfallt das Trillian net... viel zu überladen und zu viel Grafik-schnickschnack...
cya
1. das ist keine schleife 2. wenn $id weder 1 noch 2 ist, wird klarerweise nix in $kommentar reingeschrieben, also am besten in den else-zweig noch ein "$kommentar = "lame"; reinschreiben.
|
pirate man
Here to stay
|
in der adresszeile steht aber immer entweder id=1 oder id=2 bei der ersten abfrage (ok, nicht schleife ) funzts ja auch, das kapier ich nicht
|
manalishi
tl;dr
|
btw:
$string = "\"\""; print($string);
liefert schlicht und einfach ""
\" ist einfach die "umschreibung" für ", ähnlich wie in html statt < und > einfach < sowie > verwendet werden.
|
Tex
got r00t?
|
"else if" nicht zusammenschreiben
|
pirate man
Here to stay
|
"else if" nicht zusammenschreiben das is es nicht, die erste abfrage geht ja
|
pirate man
Here to stay
|
btw:
$string = "\"\""; print($string);
liefert schlicht und einfach ""
\" ist einfach die "umschreibung" für ", ähnlich wie in html statt < und > einfach < sowie > verwendet werden. und was willst du mir damit sagen? " wird in einem echo zu \" sonst kommt ein parse error
|
Tex
got r00t?
|
ah... ich sollte oben lesen beginnen... du musst die \" einfach gegen ' tauschen im inneren der string-zuweisung also ca. so: $kommentar = "<a href='main.php?page=comments&id=$id'>Comments</a> [$anzahl]";
so müsste es hinhauen
|
pirate man
Here to stay
|
verdammt so gehts auch ned
|
Guest
Deleted User
|
füg mal ein paar echo "debug"; in die if-zweige ein um zu sehen obs daran liegt.... die zuweisung schaut ansich recht gut aus ....
|
Vir@s
Code Monkey
|
Ähmmm - frage: Soll $id ein String oder ein Int sein? Wenn $id ein int ist, dann stimmt die überprüfung nicht, und wenn $id ein String is, dann funzt des auch ned.... Bei int: if($id == 1)
{
$kommentar = "<a href=\"main.php?page=comments&id=$id\">Kommentare</a> [$anzahl]";
}
elseif($id == 2)
{
$kommentar = "<a href=\"main.php?page=comments&id=$id\">Comments</a> [$anzahl]";
}
Bei string: if(!strcasecmp($id,"1"))
{
$kommentar = "<a href=\"main.php?page=comments&id=$id\">Kommentare</a> [$anzahl]";
}
elseif(!strcasecmp($id,"2"))
{
$kommentar = "<a href=\"main.php?page=comments&id=$id\">Comments</a> [$anzahl]";
}
So sollt des funzen Hoff ich hab da jetzt niergends nen Tipp-fehler gmacht! Aja, des strcasecmp is ned unbedingt notwendig, weil es sich hier um Zahlen handelt! Bye, Vir@s [edit] Des selbe gilt natürlich auch für dein erstes Beispiel [/edit]
Bearbeitet von Vir@s am 06.01.2002, 23:44
|
Guest
Deleted User
|
@Virus: in PHP funken operationen normalerweise typenübergreifend d.h. if( 1 != "1") echo "hell just freezed over";
btw: bin ich der einzige der in der if-konstruktion ein sicherheitsloch vermutet Meine Vermutung ist, dass Pirate Man irgendwo vorher im script $id auf einen wert ungleich 1 und 2 setzt.
|
Vir@s
Code Monkey
|
@Virus: in PHP funken operationen normalerweise typenübergreifend
d.h.if( 1 != "1") echo "hell just freezed over";
btw: bin ich der einzige der in der if-konstruktion ein sicherheitsloch vermutet Meine Vermutung ist, dass Pirate Man irgendwo vorher im script $id auf einen wert ungleich 1 und 2 setzt. theoretisch ja, aber wenn ich $id = 1 setz, kann ich ned if($id == "1") machen... Es gibt zwar praktisch typengleichheit - nur kann ich bei if anweisungen ned einfach umkonvertieren! Bye, Vir@s
|
Guest
Deleted User
|
ned nur theoretisch sondern auch praktisch - probiers aus. $id = 1;
echo "Type of \$id is: ".gettype($id);
if( $id != "1") echo "hell just freezed over";
if( $id == "1") echo "php 0wnage";
für typensensitive vergleiche gibts in php !== bzw === edit: get/post-variablen sind sowieso immer vom typ string
Bearbeitet von am 07.01.2002, 00:24
|