login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Extern plaatje

Offline stenno - 27/04/2006 19:01 (laatste wijziging 28/04/2006 21:32)
Avatar van stennoPHP interesse Beste sitemasters.

Op mijn site zou ik graag een extern plaatje op halen en die op mijn pagina laten zien.

bijvoorbeeld dit op mijn pagina:
<img src="http://www.sitemasters.be/images/header1.jpg">

Maar stel nou dat ik dat plaatje alleen zou kunnen zien wanneer ik ingelogt zou zijn op sima.

EDIT:

Nu vraag je je misschien af hoe kan dit nou ? dat je alleen een plaatje kan zien wanneer je ingelogt bent. Maar met GD libary van PHP kan dat. Kijk zeg maar je hebt bijvoorbeeld dit script:
http://www.site...amp;id=465

Als je dat script hebt en je gaat naar de pagina ver.php (waar het plaatje aangemaakt wordt) dan krijg je gewoon een plaatje te zien, maar stel dat er boven aan ver.php de code zet:

  1. <?
  2. If(isset($_SESSION['login']){
  3. //laat plaatje zien
  4. }else{
  5. //laat niets zien
  6. }
  7. ?>


Hoe zou ik dat plaatje nou als nog op mijn pagina kunnen weergeven ??

Alvast bedankt

20 antwoorden

Gesponsorde links
Offline Maarten - 27/04/2006 19:06
Avatar van Maarten Erelid Dan zul je eerst moeten een PHP script maken dat inlogt op de site in kwestie, en dan de inhoud van de afbeelding idd ophaalt en weergeeft.
Offline kokx - 27/04/2006 19:12
Avatar van kokx Onbekend Je kunt bijvoorbeeld een topic nemen. En dan kijken met preg_match of je online bent. (Wel file_get_contents gebruiken)
Offline vinTage - 27/04/2006 19:53 (laatste wijziging 27/04/2006 19:54)
Avatar van vinTage Nieuw lid of met sessions ?
  1. <?php
  2. // $_SESSION['gebruikersrol'] heeft de waarde "admin"
  3. if(isset($_SESSION['gebruikersrol'])) {
  4. // de sessievariabele 'gebruikersrol' bestaat, inspecteer de waarde
  5. if($_SESSION['gebruikersrol'] == "admin") {
  6. echo "je plaatje.jpg.";
  7. } else {
  8. echo "Dit onderdeel is alleen voor admins.";
  9. }
  10. } else {
  11. // de sessievariabele 'gebruikersrol' bestaat niet OF is ge-unset OF is gelijk aan NULL
  12. echo "Je gebruikersrol is op dit moment onbekend.";
  13. }
  14. ?>



edit: woops, verkeerd gelezen, het MOET met gd 
Offline stenno - 28/04/2006 21:33
Avatar van stenno PHP interesse Heb het topic geedit zodat de vraag waarschijnlijk helderder is. Ik hoop echt dat ieman dme kan helpen 
Offline Maarten - 28/04/2006 21:41
Avatar van Maarten Erelid Heb je mijn reply eigenlijk al gelezen?

Als je een inlogt met een script, dan is de sessie gekoppeld aan de php-engine die het script uitvoert, en dan heeft diezelfde engine normaal gezien toegang tot dat plaatje.
Offline stenno - 28/04/2006 22:08
Avatar van stenno PHP interesse @Murfy, ja dat snap ik en daar was ik ook al achter, maar nu is mijn vraag dus watvoor script ik daarvoor nodig heb.
Offline kokx - 28/04/2006 22:11 (laatste wijziging 28/04/2006 22:14)
Avatar van kokx Onbekend cURL. Iemand heeft daar een tut over gescheven.
http://www.site...amp;id=437

Edit: Maar ik zou eerlijk gezegd gewoon de content van een pagina op sima ophalen met file_get_contents. (Bijvoorbeeld dit topic). En dan een gedeelte ervan uithalen met preg_match (het gedeelte waar het plaatje staat). En dan zie je of je online bent of niet.
Offline stenno - 28/04/2006 22:17 (laatste wijziging 28/04/2006 22:18)
Avatar van stenno PHP interesse Is het niet zo dat bij cURL de Server de session krijgt en niet de computer van de bezoeker. Dan heb ik er namelijk nog steeds niet aan. (bijna 99% zeker, met sockets is dat namelijk wel zo).

Ik heb dit al geprobeerd met sockets, wat eigenlijk hetzelfde principe heeft. Ik dacht zelf eigenlijk aan om een cookie te faken bij de bezoeker, maar ik heb geen idee hoe dit moet.

@Kokx: Ik kan het externe plaatje alleen goed weergeven als de bezoeker van mijn pagina ingelogt is (een session heeft lopen) op de externe site, waar mijn externe plaatje staat.
Offline kokx - 28/04/2006 22:25
Avatar van kokx Onbekend Je bedoelde op sima. Dus als je gewoon de pagina van sima ophaald en daar met preg_match gedeeltes uitfiltert dan weet je toch of iemand online is. Of zie ik het verkeerd.
Offline stenno - 28/04/2006 22:28 (laatste wijziging 28/04/2006 22:41)
Avatar van stenno PHP interesse neej neej, ik bedoel niet sima, ik na sima als voorbeeld om aan te geven wat ik met de term extern plaatje bedoelde 

bijvoorbeeld dit op mijn pagina:
<img src="http://www.sitemasters.be/images/header1.jpg">

Maar stel nou dat ik dat plaatje alleen zou kunnen zien wanneer ik ingelogt zou zijn op sima.

Dan bedoel ik dus niet zomaar een plaatje 
Offline vinTage - 28/04/2006 22:42
Avatar van vinTage Nieuw lid Je wilt de sessies die je op een andere site hebt "uitlezen/zien of ze bestaan" ??

lijkt mij onmogelijk (gelukkig)
Offline Simon - 28/04/2006 22:43 (laatste wijziging 28/04/2006 22:48)
Avatar van Simon PHP expert Je zou kunnen gaan naar het profiel van die persoon en dan kijken tussen de haakjes (online) of (offline) en zo kiezen welk plaatje

als ik het goed begrijp

EDIT; mooi gedaan kokx
Offline kokx - 28/04/2006 22:46 (laatste wijziging 28/04/2006 22:49)
Avatar van kokx Onbekend Hij wil het van een andere site uitlezen. Als er op die site een online lijst staat gaat het met gemak. Ik heb hier ff snel een scriptje geschreven dat kijkt of ik online ben op sima:
Vb:
http://www.kokx.nl/testsima.php
  1. <?php
  2. $file = file_get_contents("http://www.sitemasters.be/");
  3. $regex = "#<font style=\"font-size: xx-small\">\s(.*?)</font>#si";
  4. $matches = array();
  5. preg_match($regex, $file, $matches);
  6. $blaat = explode(", ", $matches[1]);
  7. $id = 3310; // je gebruiker id
  8. $name = "kokx"; // je gebruikersnaam
  9. if (in_array("<a href=\"http://www.sitemasters.be/?pagina=login/profiel&amp;id={$id}\">{$name}</a>", $blaat)) {
  10. echo "Kokx is online";
  11. } else {
  12. echo "Kokx is offline";
  13. }
  14. ?>


Edit: Dit werkt alleen niet met crewleden.

vinTage edit nana (waarom niet ? )

kokx edit: Die hebben een kleurtje bij hun naam. Dus dat kan niet.
Offline Simon - 28/04/2006 22:50 (laatste wijziging 28/04/2006 22:50)
Avatar van Simon PHP expert
  1. <?php
  2. $file = file_get_contents("http://www.sitemasters.be/");
  3. $regex = "#<font style=\"font-size: xx-small\">\s(.*?)</font>#si";
  4. $matches = array();
  5. preg_match($regex, $file, $matches);
  6. $blaat = explode(", ", $matches[1]);
  7. $id = 3310;
  8. $name = "kokx";
  9. if (in_array("<a href=\"http://www.sitemasters.be/?pagina=login/profiel&amp;id={$id}\">{$name}</a>", $blaat) || in_array("<a href=\"http://www.sitemasters.be/?pagina=login/profiel&amp;id={$id} style=\"font-weight: bold; color: #513186\"\">{$name}</a>", $blaat)) {
  10. echo "Kokx is online";
  11. } else {
  12. echo "Kokx is offline";
  13. }
  14. ?>

mss valt dit zo op te lossen?
Offline Maarten - 28/04/2006 23:17 (laatste wijziging 28/04/2006 23:21)
Avatar van Maarten Erelid Lol ben ik nu echt de enige die hem begrijpt? Hij wil niet weten OF je bent ingelogd, hij WIL inloggen.

  1. <?php
  2. function post($host,$query,$overige = false) {
  3. $pad = explode('/',$host);
  4. $host = $pad[0];
  5. unset($pad[0]);
  6. $pad = '/'.implode('/',$pad);
  7.  
  8. $post = "POST ".$pad." HTTP/1.1\r\nHost: ".$host."\r\nContent-type: application/x-www-form-urlencoded\r\n".($overige != false ? $overige : '')."User-Agent: Mozilla 4.0\r\nContent-length: ".strlen($query)."\r\nConnection: close\r\n\r\n".$query;
  9.  
  10. $sock = fsockopen($host,80);
  11. fwrite($sock,$post);
  12. for($a = 0, $r = ''; !$a;) {
  13. $b = fread($sock,8192);
  14. $r .= $b;
  15. $a = ($b == '' ? 1 : 0);
  16. }
  17.  
  18. fclose($sock);
  19. return $r;
  20. }
  21. ?>

Daarmee kan je een formulier versturen, bv.
  1. <?php
  2. post('site.be/loginform.php','gebruikersnaam=Murfy&wachtwoord=gaatjegeenzakaan');
  3. ?>


En dan is het formulier op loginform.php verstuurd met waarde gebruikersnaam = Murfy en wachtwoord = gaatjegeenzakaan alsof je het zou ingevuld hebben.
Dan is dus je sessie aangemaakt en kan je met file_get_contents je bestand ophalen.

Met SXC.Hu zou je dat bijvoorbeeld kunnen doen.
Offline stenno - 29/04/2006 06:22 (laatste wijziging 29/04/2006 08:30)
Avatar van stenno PHP interesse Juist murfy jij begrijpt het !  bedankt 

edit:
Met file_get_contents lukt het niet, want hij wil niet inloggen. Als je deze methode gebruikt krijgt de server een sessie, maar de bezoeker van mijn pagina moet er een hebben.
Offline Maarten - 29/04/2006 09:50
Avatar van Maarten Erelid Hmmz.. maar is het dan ook niet de server die file_get_contents uitvoert, dus dan heeft hij toch ook de sessie?

Je moet voor die post('site.be',.....) eens echo zetten, dan krijg je ook de output.
Dan kan je gelijk zien of je wel bent ingelogd. Vergeet ook niet dat je, als je een knopje met de naam "verzenden" hebt waarop "Inloggen" staat, dat je dan ook &verzenden=Inloggen moet meegeven voor de zekerheid.
Offline stenno - 29/04/2006 10:02 (laatste wijziging 29/04/2006 10:11)
Avatar van stenno PHP interesse Ja, ik had het geechood maar ik ben niet ingelogt.

Ik had dit zelf al eens geprobeerd met de onderstaande code, hierbij haal ik eerst even een cookie op vervolgens stuur ik de cookie met de headers van de volgende socket mee.

Als ik dan echo krijg ik de hele pagina te zien op de image na, zelfs als ik /turing.image.php vervang door $host."/turing.image.php" 

Wanneer ik ingelogt ben en dan de image van de pagina pregmatch krijg ik wel gewoon de hele pagina te zien inclusief met image. Dus concludeerde ik dat de bezoeker van mijn site ingelogt moet zijn op de site waar ik mijn image van af wil halen.

Nu is mijn vraag dus, hoe doe ik dat ?? Misschien kan ik een soort auto login maken zodat ze op mijn site inlog gegevens invullen en dan word de bezoeker ingelogt ?? is dit mogelijk ??
  1. <?
  2. function getCookies($host){
  3.  
  4. $fp = @fsockopen( $host, 80, $errno, $errstr, 5 );
  5. if( $fp ){
  6. $name = $_POST['login_name'];
  7. $email = $_POST['login_email'];
  8. $password = $_POST['login_password'];
  9.  
  10. $sVariables = "usrname=".$_POST['login_name']."&uemail=".$_POST['login_email']."peeword=".$_POST['login_password'];
  11.  
  12. $sHeaders = "POST /login.php HTTP/1.0\r\n";
  13. $sHeaders .= "Host: ".$host."\r\n";
  14. $sHeaders .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5\r\n";
  15. $sHeaders .= "Content-Type: application/x-www-form-urlencoded\r\n";
  16. $sHeaders .= "Content-length: ".strlen( $sVariables )."\r\n\r\n";
  17. $sHeaders .= $sVariables;
  18.  
  19. fwrite( $fp, $sHeaders );
  20.  
  21. $sPage = "";
  22. while (!feof($fp)) {
  23. $sPage .= fgets($fp, 4080 );
  24. }
  25. fclose($fp);
  26.  
  27. $aCookies = array();
  28. $pattern = "/Set-Cookie: (.+?)=(.+?); /";
  29. preg_match_all( $pattern, $sPage, $aMatches );
  30. for( $i=0; $i<count( $aMatches[0] ); $i++ ){
  31. $this->aCookies[ $aMatches[1][$i] ] = $aMatches[2][$i];
  32. }
  33.  
  34. } else {
  35. echo $errno."<br />".$errstr;
  36. exit();
  37. }
  38. }
  39. function getImage($host, $query){
  40.  
  41. $fp3 = @fsockopen( $host, 80, $errno, $errstr, 5 );
  42. if( $fp3 ){
  43. $sOuta2 = "GET ".$query." HTTP/1.0\r\n";
  44. $sOuta2 .= "Host: ".$host."\r\n";
  45. $sOuta2 .= "Cookie:"; //Hier de sessiecookie ff neerzetten en voilá
  46. foreach( $this->aCookies as $key => $value ){
  47. $sOuta2 .= " ".$key."=".$value.";";
  48. }
  49. $sOuta2 .= "\r\n";
  50. $sOuta2 .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5\r\n\r\n";
  51.  
  52. fwrite( $fp3, $sOuta2 );
  53.  
  54.  
  55. while (!feof($fp3)) {
  56. $sPagea3 .= fgets($fp3, 4080 );
  57. }
  58. fclose($fp3);
  59. } else {
  60. echo $errno."<br />".$errstr;
  61. }
  62.  
  63. $pattern3 = "/<img src=\"turing.image.php\?(.+?)\">/";
  64.  
  65. preg_match_all( $pattern3, $sPagea3, $this->Match2 );
  66.  
  67. $array = array('turing.image.php?'.$this->Match2[1][0]);
  68. $array1 = array($host."/turing.image.php?".$this->Match2[1][0]);
  69.  
  70. print_r($array);
  71. print_r($array1);
  72.  
  73. $sPagea3 = str_replace($array, $array1, $sPagea3);
  74.  
  75. return $sPagea3;
  76.  
  77.  
  78. }
  79. ?>
Offline ikkedikke - 29/04/2006 11:22
Avatar van ikkedikke PHP expert je geeft de gebruiker gewoon de sessieID mee die jij net hebt gekregen op je server.
Offline stenno - 29/04/2006 11:28 (laatste wijziging 29/04/2006 15:22)
Avatar van stenno PHP interesse Ja, maar hoe geef ik de bezoeker (van mijn pagina) een cookie met de waarde Sessid mee, zodat hij is ingelogt op die pagina ?? 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.28s