php-general Digest 16 Dec 2009 15:07:26 -0000 Issue 6491

Topics (messages 300543 through 300548):

Re: file_get_contents ($file) works -- file_get_contents ($url)  returns false
        300543 by: René Fournier
        300546 by: Richard Quadling

Re: Highlighting image map on load
        300544 by: leledumbo
        300545 by: Kim Madsen

Re: Class not functioning
        300547 by: Wouter van Vliet / Interpotential

Re: PHP + ODBC
        300548 by: Philip Thompson

Administrivia:

To subscribe to the digest, e-mail:
        php-general-digest-subscr...@lists.php.net

To unsubscribe from the digest, e-mail:
        php-general-digest-unsubscr...@lists.php.net

To post to the list, e-mail:
        php-gene...@lists.php.net


----------------------------------------------------------------------
--- Begin Message ---
On 2009-12-15, at 11:55 PM, Richard Quadling wrote:

> Do you have a default stream context defined for the http stream?

Nope.

> 
> A _LONG_ time ago, when I was using a firewall with NTLM
> authentication (which PHP doesn't deal with), I had to route all my
> calls through a local proxy.
> 
> This was the code I had ...
> 
> <?php
> // Define the default, system-wide context.
> $r_default_context = stream_context_get_default(
>       array(
>               'http' => array( // All HTTP requests are passed through the 
> local
> NTLM proxy server on port 8080.
>                       'proxy' => 'tcp://127.0.0.1:8080',
>                       'request_fulluri' => True,
>               ),
>       )
> );
> 
> // Though we said system wide, some extensions need a little coaxing.
> libxml_set_streams_context($r_default_context);
> 
> 
> Now, you may not see this in your code, but may be in a script which
> is loaded via auto_prepend_file.

Wish it were, but my test code is bare bones.

> 
> I would also suggest running something like WireShark at the same time
> as your script. See if there is ANY traffic over the wire.
> 
> Do the cURL and file_get_contents() code generate identical requests?

cURL -- both PHP and command-line -- fetches files and URLs (remote and local) 
w/o issues. file_get_contents() fetches files, but fails on all URLs (remote 
and local). This is why I believe the problem lies with the machine's 
configuration and not the Firewall.

It's pretty confounding, isn't it? I'm not sure what to do at this point.

...Rene



--- End Message ---
--- Begin Message ---
2009/12/16 René Fournier <m...@renefournier.com>:
> On 2009-12-15, at 11:55 PM, Richard Quadling wrote:
>
> Do you have a default stream context defined for the http stream?
>
> Nope.
>
> A _LONG_ time ago, when I was using a firewall with NTLM
> authentication (which PHP doesn't deal with), I had to route all my
> calls through a local proxy.
>
> This was the code I had ...
>
> <?php
> // Define the default, system-wide context.
> $r_default_context = stream_context_get_default(
> array(
> 'http' => array( // All HTTP requests are passed through the local
> NTLM proxy server on port 8080.
> 'proxy' => 'tcp://127.0.0.1:8080',
> 'request_fulluri' => True,
> ),
> )
> );
>
> // Though we said system wide, some extensions need a little coaxing.
> libxml_set_streams_context($r_default_context);
>
>
> Now, you may not see this in your code, but may be in a script which
> is loaded via auto_prepend_file.
>
> Wish it were, but my test code is bare bones.
>
> I would also suggest running something like WireShark at the same time
> as your script. See if there is ANY traffic over the wire.
>
> Do the cURL and file_get_contents() code generate identical requests?
>
> cURL -- both PHP and command-line -- fetches files and URLs (remote and
> local) w/o issues. file_get_contents() fetches files, but fails on all URLs
> (remote and local). This is why I believe the problem lies with the
> machine's configuration and not the Firewall.
> It's pretty confounding, isn't it? I'm not sure what to do at this point.
> ...Rene
>
>

But by using something like WireShark you can see exactly what
requests ARE being made. You may be getting a redirect reply which is
failing or something daft. Anything really.



-- 
-----
Richard Quadling
"Standing on the shoulders of some very clever giants!"
EE : http://www.experts-exchange.com/M_248814.html
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
ZOPA : http://uk.zopa.com/member/RQuadling

--- End Message ---
--- Begin Message ---
> I'm not sure if you can use CSS alone to highlight, but if you can, just
> give the area a class as you output it with PHP

That's the problem, area itself isn't visible, so giving a CSS class won't
highlight it.
-- 
View this message in context: 
http://old.nabble.com/Highlighting-image-map-on-load-tp26777088p26807008.html
Sent from the PHP - General mailing list archive at Nabble.com.


--- End Message ---
--- Begin Message ---
leledumbo wrote on 2009-12-14 13:37:
I have image map with dynamic circle areas whose coordinates stored in
database. I'd like to colorize these areas so that it's obvious to see them.
Most solutions I found on the net highlights the area on mouse hover, while
my needs is to do it once when the window is loaded. Any idea?

I would say that you should do the following:

1. make a css class, that gives you the highlights you want.
2. put a div with position:absolute over the image where you want the class to take effect 3. use a javascript to draw the circle in the div. If you look at for instance the "nifty" and "niftycube" solutiona, they're working with an inner and an outer color, so the outer should be transparent and the inner you css class. And my guess is that this has already been made before, so google for a javascript solution that fits your needs.

Happy hacking.

--
Kind regards
Kim Emax - masterminds.dk

--- End Message ---
--- Begin Message ---
Allen,

Before you go with my static-approach, please do consider Shawn's registry
pattern suggestion. That's pretty sweet too ;-).

A little response to your long text, before I help you fix the bug. A static
property is basically the same as a regular property on an object. Only
difference is that they are not reset when the class is instantiated into an
object. They are just there.

Now, about your bug. The syntax for referencing a static property is a bit
weird - which has to do with the existence of class constants, which might
have set you off.

Notifier::notifyQueue would reference a class constant. The [] syntax is not
valid here, since a constant is - you got it: constant. And thus cannot be
changed.
Notifier::$notifyQ[] = '<div> ... </div>'; references the static property.

But... since notifyQ is a proptected static property, it is very unlikealy
that you'll ever actually write Notifier::$notifyQ. You add to this queue
from within the class itself, so therefore self::$notifyQ is a lot better.

Does that answer your question?

Btw; Shawn; Assuming that your Registry class holds objects, there is no
need have the ampersand in front of the get method or $object argument.
Objects are *always* references. And you might want to look at the __get,
__set and __isset magic.

Wouter


2009/12/16 Allen McCabe <allenmcc...@gmail.com>

> Wouter,
>
> Implementing your static idea was pretty easy, I was already referencing
> Notifier with the :: operator in my other methods, however I am running into
> trouble assigning new values to the static array.
>
> I am getting a "syntax error, unexpected '[' " on this line of my Notifier
> class:
>
> Notifier::notifyQ[] = '<div class="'.$message;
>
> . . .
>
> Any ideas why this is causing an error?
> (note: I did try using $this->Notifier, and it said I cannot do what-not to
> a non-object, can't remember the exact message at the moment)
>
> On Tue, Dec 15, 2009 at 2:30 PM, Wouter van Vliet / Interpotential <
> pub...@interpotential.com> wrote:
>
>> Allen,
>>
>> The short answer (but don't follow this):
>> <?php
>> class Meetgreet {
>>   public function deleteSingle($id, $number) {
>>       // do something
>>       global $Notify;
>>       $Notify->addToQ( .. );
>>   }
>> }
>> ?>
>>
>> The long(er) answer:
>> I assume your Notifier object functions as singleton? Ie; accross your
>> entire application, there is only one instance of that class?
>>
>> Why not go-static? That is, to my experience, the sweetest way to make
>> something globally accessible - without making something global. Like so
>>
>> <?php
>> class Notifier {
>>
>>    protected static $queue = Array();
>>
>>    // make sure it can't be instantiated
>>    private constructer __construct() {
>>    }
>>
>>    public static function addToQ( $arg, $anotherArg) {
>>        self::$queue[] = $arg.' - '.$anotherArg;
>>    }
>>
>> }
>>
>> // and then from within any method anywhere, call
>> Notifier::addToQ('foo', 'bar');
>>
>> ?>
>>
>> Does that work for you?
>>
>> Regards,
>> Wouter
>>
>> (ps. call me a purist, but a function defined in a class is no longer
>> called a function, but a *method*)
>>
>> 2009/12/15 Allen McCabe <allenmcc...@gmail.com>
>>
>>>  Hey all (and Nirmalya, thanks for the help!),
>>>
>>>
>>> I have a question that I just can't seem to find via Google.
>>>
>>> I want to be able to add messages to a qeue whenever my classes complete
>>> (or
>>> fail to complete) specific functions. I think have a call within my html
>>> to
>>> my Notifier class to print all qeued messages (via a function 'printQ').
>>>
>>> How do I access a globally instantiated class from within another class?
>>>
>>> Example:
>>>
>>> <?php
>>>
>>> // INSTANTIATE
>>> $Meetgreet = new Meetgreet;
>>> $Notify = new Notifier;
>>>
>>> ...
>>> ...
>>>
>>> $Meetgreet->deleteSingle($id, 1); // This completes a function within
>>> Meetgreet class. That function needs to be able to use the Notifier
>>> function
>>> addtoQ(), how would this be accomplished?
>>>
>>> ?>
>>> ...
>>> ...
>>>
>>> <?php  $Notify->printQ()  ?>
>>>
>>> On Mon, Dec 14, 2009 at 6:07 PM, Nirmalya Lahiri
>>> <nirmalyalah...@yahoo.com>wrote:
>>>
>>> > --- On Tue, 12/15/09, Allen McCabe <allenmcc...@gmail.com> wrote:
>>> >
>>> > > From: Allen McCabe <allenmcc...@gmail.com>
>>> > > Subject: [PHP] Class not functioning
>>> > > To: "phpList" <php-gene...@lists.php.net>
>>> > > Date: Tuesday, December 15, 2009, 6:17 AM
>>> >  > Hey everyone, I just delved into
>>> > > classes recently and have been having
>>> > > moderate success so far.
>>> > >
>>> > > I have a puzzler though.
>>> > >
>>> > > I have the following class decalred and instantiated:
>>> > >
>>> > > class Notify {
>>> > >  var $q = array();
>>> > >
>>> > >  public function addtoQ($string, $class)
>>> > >  {
>>> > >   $message = '<span class="'. $class .'">'.
>>> > > $string .'</span>';
>>> > >   $this->q[] = $message;
>>> > >  }
>>> > >
>>> > >  public function printQ()
>>> > >  {
>>> > >   if (isset($q))
>>> > >   {
>>> > >    echo '<p align="center"
>>> > > class="notification">';
>>> > >    foreach($this->q as $msg)
>>> > >    {
>>> > >     echo $msg ."\n";
>>> > >    }
>>> > >    echo '</p>';
>>> > >   }
>>> > >
>>> > >   return;
>>> > >  }
>>> > >
>>> > >  function __destruct()
>>> > >  {
>>> > >   if (isset($q))
>>> > >   {
>>> > >    unset($this->q);
>>> > >   }
>>> > >  }
>>> > > } // END CLASS Notify
>>> > >
>>> > >
>>> > > And in my script, I call it like so:
>>> > > $Notif = new Notify;
>>> > >
>>> > > I have run other statements in other classes that should be
>>> > > adding to the $q
>>> > > array (ie. Notify::addtoQ('ERROR! There Was An Error
>>> > > Updating The
>>> > > Database!', 'error');)
>>> > >
>>> > > However, when I try to get my webpage to display them
>>> > > using:
>>> > >
>>> > > $Notify->printQ();
>>> > >
>>> > > it does not seem to want to loop through this array (and
>>> > > print the
>>> > > messages). I am getting NO error message, in fact
>>> > > everything 'looks' fine,
>>> > > I'm just not seeing the appropriate message.
>>> > >
>>> > > Any help would be appreicated!
>>> > >
>>> >
>>> > Allen,
>>> >  You have made a small typing mistake in function printQ() where you
>>> would
>>> > like to checked the array for its existence. By mistake you have wrote
>>> "if
>>> > (isset($q))". But your array variable is not an freely accessible
>>> array,the
>>> > array is embedded into an object. So, you have to write the like "if
>>> > (isset($this->q))".
>>> >
>>> >  Another point, you can't add a message into the array by calling the
>>> > member function addtoQ() using scope resolution operator "::". If you
>>> really
>>> > want to add message into the array, you have to call the member
>>> function
>>> > from within the object. (ie. $Notif->addtoQ('ERROR! There Was An Error
>>> > Updating The Database!', 'error');).
>>> >
>>> > ---
>>> > নির্মাল্য লাহিড়ী [Nirmalya Lahiri]
>>> > +৯১-৯৪৩৩১১৩৫৩৬ [+91-9433113536]
>>> >
>>> >
>>> >
>>> >
>>> >
>>>
>>
>>
>>
>> --
>> http://www.interpotential.com
>> http://www.ilikealot.com
>>
>> Phone: +4520371433
>>
>
>


-- 
http://www.interpotential.com
http://www.ilikealot.com

Phone: +4520371433

--- End Message ---
--- Begin Message ---
On Dec 15, 2009, at 9:50 AM, Richard Quadling wrote:

> 2009/12/15 Philip Thompson <philthath...@gmail.com>:
>> On Dec 14, 2009, at 8:47 PM, James McLean wrote:
>> 
>>> On Tue, Dec 15, 2009 at 10:03 AM, Philip Thompson
>>> <philthath...@gmail.com> wrote:
>>>> My head hurts from hitting it on my desk all day, so I thought I'd turn to 
>>>> a fresher set of eyes. The issue I'm having is getting PHP to connect 
>>>> ODBC. I can get it to work using isql from the command line. Can you 
>>>> verify my settings....:
>>>> 
>>> [snipped]
>>>> 
>>>> I've tried the above DSNs and many other versions of it ad nauseum. The 
>>>> specific error I'm getting is... "[unixODBC][Driver Manager]Data source 
>>>> name not found, and no default driver specified." I really have searched 
>>>> high and low for a solution, but to no avail. Any thoughts?
>>> 
>>> Why not just use the built in MySQL libraries or PDO?
>> 
>> Oh, that would be "my" preference. However, the database that I really need 
>> to connect to is an MSSQL one and the allowed connection type is ODBC. I was 
>> just testing first with a MySQL connection to get it working (I don't have 
>> the MSSQL credentials yet). Turned out I was VERY close with my solution, 
>> which a coworker figured out this morning. The [ODBC Data Sources] entry for 
>> MySQL needed to specified correctly in /etc/odbc.ini.
>> 
>> [ODBC Data Sources]
>> MySQL = MySQL
>> 
>> [MySQL]
>> Description...
>> Driver...
>> 
>> I could have sworn I tried that, but who knows....
>> 
>> Thank you!
>> ~Philip
>> --
>> PHP General Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>> 
>> 
> 
> You can use a DNS-string too ...
> 
> odbc_pconnect("Driver={SQL Server Native Client
> 10.0};Server={$s_Server};Database={$s_DB};MARS_Connection=Yes;",
> $s_User, $s_Pswd, SQL_CUR_USE_DRIVER);

I'm actually using a combination of the DSN*-string and the odbc.ini settings. 
Thank you!

~Philip 

--- End Message ---

Reply via email to