Profilfoto anzeigen - OHNE Login

Alles, was nicht in die anderen Foren passt, kannst du hier loswerden.
Antworten
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Profilfoto anzeigen - OHNE Login

Beitrag von matzman2000 »

Hallo auch,

ich möchte ähnlich wie bei diesem http://forum.admidio.org/viewtopic.php?t=664 Beitrag nochmal die Thematik aufgreifen, ob es eine Möglichkeit gibt, das Profilfoto auch ohne Login anzuzeigen? :?:

Ich habe mir durch Übergabe der User ID eine eigene Profilseite zusammengebaut. Binde ich das Foto in dieser Form mit ein

Code: Alles auswählen

<img src=\"system/adm_program/modules/profile/profile_photo_show.php?usr_id=$a_user_id\" alt=\"Profilfoto\">
erhalte ich nur einen leeren Platzhalter mit rotem Kreuz. :cry:

Logge ich mich hingegen ein, wird das Foto angezeigt. :?

Welche Möglichkeit besteht, dass Foto auch ohne Login anzuzeigen? :?:

Vielen Dank für jeden Tipp!
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

Mann, mann, mann.... Wieder mal zu schnell!

Geht natürlich nur, wenn man aus der profile_photo_show.php die Login-Überprüfung rausnimmt... :)

Ich habe den Inhalt der profile_photo_show.php in meine angepasste Datei eingefügt und Zeile 29

Code: Alles auswählen

require("../../system/login_valid.php");
rausgelassen. Dann klappt's auch mit dem Nachbarn.... :D

Bitte CLOSE
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Hallo!

Das ganze hat übrigens einen Sicherheitsgrund. Theoretisch kann jetzt jeder auf deine Seite kommen und der profile_photo_show belibige ids übergeben. Verbirgt sich hinter einer ID wirklich ein Foto bekommt er dieses angezeigt. So kann er sich zumindest alle Bilder ansehen.

Wenn Du z.B. nur die Fotos vom Vorstand anzeigen lassen möchtes, empfehle ich Dir das hier.

Code: Alles auswählen

require("../adm_program/system/common.php");
header("Content-Type: image/jpeg");

$a_user_id=$_GET["a_user_id"];

//Erlaubte IDs
$allowed = array(94,2,23);

if(in_array($a_user_id, $allowed))
{
    $sql="  SELECT usr_photo
        FROM ".TBL_USERS."
        WHERE usr_id=$a_user_id";
    $result_photo = mysql_query($sql, $g_adm_con);

    echo @MYSQL_RESULT($result_photo,0,"usr_photo");
}
?>
Achtung: Das ist eine neue Datei, nicht die profile_photo_show.php von Admidio überschreiben, sonst gehen intern auch nur die freigegebenen.


Gruß Jochen
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

Ja, Du hast natürlich recht bezüglich Sicherheit. In meinem Fall ist es unkritisch, da damit eh nur die Bilder unserer Handballmannschaft angezeigt werden - und die soll jeder sehen können. :lol:

Ich werde das aber trotzdem in meine zusammengesetze Datei übernehmen, dann hat man es gleich richtig. :wink:
Tobsen086
Beiträge: 56
Registriert: 4. Jan 2007, 20:37

Beitrag von Tobsen086 »

Also die "unsichere" Variante von matzman2000 funktioniert bei mir super. Aber die sichere Variante haut einfach nicht hin. Muss man da noch irgendwelche Sachen beachten? Ich habe jetzt eine neue Datei profile_photo_show2.php erstellt. Diese sieht folgendermaßen aus:

Code: Alles auswählen

<?php
require("../adm_program/system/common.php"); 
header("Content-Type: image/jpeg"); 

$a_user_id=$_GET["a_user_id"]; 

//Erlaubte IDs 
$allowed = array(21); 

if(in_array($a_user_id, $allowed)) 
{ 
    $sql="  SELECT usr_photo 
        FROM ".TBL_USERS." 
        WHERE usr_id=$a_user_id"; 
    $result_photo = mysql_query($sql, $g_adm_con); 

    echo @MYSQL_RESULT($result_photo,0,"usr_photo"); 
} 
?>
Und hier der Code, wo das ganze eingefügt werden soll:

Code: Alles auswählen

<?php
$sql = "SELECT usr_id, usr_last_name, usr_first_name, usr_address, usr_zip_code, usr_city, usr_phone, f15.usd_value AS liga, f16.usd_value
FROM adm_roles, adm_members, adm_users
LEFT JOIN adm_user_data f15 ON f15.usd_usr_id = usr_id AND f15.usd_usf_id = 15
LEFT JOIN adm_user_data f16 ON f16.usd_usr_id = usr_id AND f16.usd_usf_id = 16
WHERE rol_org_shortname = 'Seelow'
AND rol_id = 21
AND rol_valid = 1
AND mem_rol_id = rol_id
AND mem_valid = 1
AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY f16.usd_value ASC";


$result = mysql_query($sql, $g_adm_con); 
db_error($result); 
            
while($row = mysql_fetch_array($result)) 
{echo "
   <div class=\"container1\">
     <div class=\"texttop1\">". $row['liga']. "</div>
     <img src=\"/admidio/adm_program/modules/profile/profile_photo_show2.php?usr_id=". $row['usr_id']. "\" width=\"100\" height=\"120\" alt=\"". $row['usr_first_name']. " ". $row['usr_last_name']. "\" class=\"vorstand1\">
     <div class=\"vorstand2\">Name:</div>
     <div class=\"vorstand3 gross\">". $row['usr_first_name']. " ". $row['usr_last_name']. "</div>
     <div class=\"vorstand2\">Anschrift:</div>
     <div class=\"vorstand3\">". $row['usr_address']. "<br>".
     $row['usr_zip_code']. " ". $row['usr_city']. "</div>
     <div class=\"vorstand2\">Telefon:</div>
     <div class=\"vorstand3\">". $row['usr_phone']. "</div>
     <div style=\"clear:both\"></div>
   </div>";
}
?>
Im oberen Code steht des öfteren a_user_id. Weiß eigentlich nicht genau, was das aussagt, aber selbst wenn ich das immer in usr_id umändere sehe ich kein Bild. Wäre cool, wenn mir da jemand weiterhelfen kann, da neben der Sicherheit ja auch das updaten dann leichter fällt. Besten Dank schonmal!
Benutzeravatar
fasse
Administrator
Beiträge: 6096
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Ehrlich gesagt verstehe ich deinen ersten Teil nicht so ganz.

So wie du es jetzt hast, würde es nur für die User-Id 21 funktionieren.

$_GET["a_user_id"] muss übrigens so heißen, wie du es übergibst. In deinem Fall also $_GET["usr_id"].
Tobsen086
Beiträge: 56
Registriert: 4. Jan 2007, 20:37

Beitrag von Tobsen086 »

Ach so. Ich dachte damit erlaubt man die Rolle, von welcher die Fotos angezeigt werden dürfen. Dann ist die sichere Variante für mich glaube nicht interessant, da ich etwa 200 Fotos an verschiedenen Stellen anzeigen lassen will. *g*

Aber auch für die unsichere Variante ist es besser, wenn ich dafür ne extra Datei erstelle, oder?!? Dann brauche ich wohl bei den meisten Updates einfach den adm_program - Ordner überschreiben.
Antworten