PHP-ongelmat

Muu yhteisön välinen keskustelu.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: PHP-ongelmat

Post by esa94 »

Feuer wrote:Muistanko aivan väärin, vai eikös korrekti osoite portissa 80 elävään palvelimeen ole localhost:80 eikä silkka localhost?
Onhan toki.

Kuten myös coolbasic.comin korrekti osoite on http://coolbasic.com:80/
Pettis
The Evil Admin
The Evil Admin
Posts: 1044
Joined: Sun Aug 26, 2007 5:08 pm
Location: Rovaniemi
Contact:

Re: PHP-ongelmat

Post by Pettis »

Feuer wrote:Muistanko aivan väärin, vai eikös korrekti osoite portissa 80 elävään palvelimeen ole localhost:80 eikä silkka localhost?
HTTP-yhteydet menevät oletuksena selaimissa porttiin 80 ellei porttia määritellä. Jos muuten localhost ei toimi, niin kannattaa kokeilla IP-osoitetta 127.0.0.1.

Noissa palvelinhommissa kannattaa huomioida, että joissain tapauksissa jotkin sovellukset käyttävät porttia 80, jolloin palvelin ei pysty siihen itseään laittamaan. Kannattaa katsoa palvelimen logeista, että mitä se sinne on käynnistyksen yhteydessä kirjoitellut, jos kaikki ei toimi ongelmitta.
CB Repository .com - Sinne ne kaikki koodit menneet on!
MunVerkko - Ilmaisia foorumeita ja blogeja
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: PHP-ongelmat

Post by valscion »

Pettis wrote:Noissa palvelinhommissa kannattaa huomioida, että joissain tapauksissa jotkin sovellukset käyttävät porttia 80, jolloin palvelin ei pysty siihen itseään laittamaan. Kannattaa katsoa palvelimen logeista, että mitä se sinne on käynnistyksen yhteydessä kirjoitellut, jos kaikki ei toimi ongelmitta.
Itse tykkään testipalvelinta pyöritellä osoitteessa 8080 tai jossain muussa kuin oletuksessa. Tällöin ei palvelin vahingossa häiritse muita ohjelmia, joita sama 80-portti kiinnostaisi.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: PHP-ongelmat

Post by axu »

Kokeilin nyt sitten laittaa Apachea uudestaan, mutta PHP vastusti kovasti :D Lopulta sain senkin toimimaan, joten nyt voin alkaa hommiin!
BTW Pettis, kannattaako viitata viestissä allekirjoitukseen, kun sen sisältö voi vaihtua, ja joillakin (esim. itselläni) on käytössä asetus joka piilottaa allekirjoitukset? Ihan pätevän oloiset sivut muuten, jos tulee jotain mieleen niin rekkaan sinne että sais vähän eloa se paikka ;)
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
Pettis
The Evil Admin
The Evil Admin
Posts: 1044
Joined: Sun Aug 26, 2007 5:08 pm
Location: Rovaniemi
Contact:

Re: PHP-ongelmat

Post by Pettis »

axu wrote:BTW Pettis, kannattaako viitata viestissä allekirjoitukseen, kun sen sisältö voi vaihtua, ja joillakin (esim. itselläni) on käytössä asetus joka piilottaa allekirjoitukset? Ihan pätevän oloiset sivut muuten, jos tulee jotain mieleen niin rekkaan sinne että sais vähän eloa se paikka ;)
No vaihdan allekirjoitusta varmaan kerran vuodessa. Mutta tässä vielä osoite: http://www.webmasterfoorumi.fi/
CB Repository .com - Sinne ne kaikki koodit menneet on!
MunVerkko - Ilmaisia foorumeita ja blogeja
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: PHP-ongelmat

Post by Feuer »

Miksi seuraavan funktion

Code: Select all

			private $content = array();
			
			public function addContent($some_content)
			{
				$this->$content[] = $some_content;
			}
kutsuminen seuraavasti

Code: Select all

parent::addContent("<b style=\"color: #FF0000;\">HELLO DEAR OLD WORLD</b>");
tuo seuraavan errorin:
PHP wrote:Fatal error: Cannot use [] for reading
? Jos lukisin virheilmoituksen osoittamalla rivillä, olisi ilmoituksessa jotain järkeä, mutta kun virheilmoitus osoittaa tuon addContentin ainoalle riville, jossa yritän lisätä taulukkoon dataa.
EDIT:

Terve vaan, jos osaisin syntaksin ennenkuin yritän tehdä jotain :roll: Oikea tapa viitata olion kenttiin on $this->foo eikä $this->$foo

Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: PHP-ongelmat

Post by DJ-Filbe »

Kuinkahan mahtaisi onnistua merkkijonosta pätkän hakeminen seuraavalla tavalla:

str_parse_str("pitkä merkkijono...xx.. pitkä merkkijono", "merkkijono", "pitkä");
//palauttaa "...xx.. "

eli ensin etsitään ensimmäinen esiintymä merkkijonosta (parametri2) ja tätä seuraava esiintymä merkkijonosta (parametri3), ja palautetaan merkkijono, johon kuuluu väliin jäävä osa merkkijonosta.

Kysyn siis valmista funktiota.
User avatar
MetalRain
Active Member
Posts: 188
Joined: Sun Mar 21, 2010 11:17 am
Location: Espoo

Re: PHP-ongelmat

Post by MetalRain »

DJ-Filbe wrote:Kuinkahan mahtaisi onnistua merkkijonosta pätkän hakeminen seuraavalla tavalla:
str_parse_str("pitkä merkkijono...xx.. pitkä merkkijono", "merkkijono", "pitkä");
//palauttaa "...xx.. "

eli ensin etsitään ensimmäinen esiintymä merkkijonosta (parametri2) ja tätä seuraava esiintymä merkkijonosta (parametri3), ja palautetaan merkkijono, johon kuuluu väliin jäävä osa merkkijonosta.

Kysyn siis valmista funktiota.
Php:n String funktiot auttanevat tässä. Voit vaikka käyttää explodea haluttuun merkkijonoon molempien avainsanojen suhteen.

Code: Select all

 <?php 

   function str_parse_str($txt,$start,$end) {
      $txtarr = explode($start,$txt);
      $txtarr = explode($end,$txtarr[1]);
      return $txtarr[0];
   }
   
   $testtxt = "pitkä merkkijono...xx.. pitkä merkkijono";
   
   echo str_parse_str($testtxt,"merkkijono","pitkä");
   
?> 
Tietenkin kannattaa myös miettiä haluaako jossain tapauksissa käsitellä useita tälläisiä esiintymiä tai millaista virheilmoitusta kannattaa laittaa mikäli esiintymiä ei ole. Esimerkiksi jos str_parse_str("alku a loppu alku b loppu","alku", "loppu") saatettaisiin joskus haluta saada selville myös toinen esiintymä "b".
Last edited by MetalRain on Sun Jul 24, 2011 7:41 pm, edited 1 time in total.
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: PHP-ongelmat

Post by DJ-Filbe »

Tuota yritin ja unohdin tietysti että PHP haluaa parametreja eri järjestyksessä kuin oletin ja eräästä ohjeesta luin... :shock:
Kiitos kovasti :)
peehoopee

Re: PHP-ongelmat

Post by peehoopee »

Mikähän mahtaa olla ongelma?

Code: Select all

<?php
 
$th = fopen("Visitors.txt", "r");
   $maarat = fgets($tt, 1024);
fclose($th);
 
$maara = $maarat + 1
 
$ip = $_SERVER['REMOTE_ADDR'];
$host = $_SERVER['REMOTE_HOST'];
$HUA = $_SERVER['HTTP_USER_AGENT'];
$aika = date("Y-m-d H:i:s");
 
if ($ip === " *oma ip osoitteeni* ")
  $ip = "Ylläpitäjä";
 
$tt = fopen("VisitorData.txt", "a");
    fwrite($tt, "\n ----------------------------------------");
    fwrite($tt, "\n Time: $aika");
    fwrite($tt, "\n IP: $ip");
    fwrite($tt, "\n Host: $host");
    fwrite($tt, "\n HTTP user agent: $HUA");
    fwrite($tt, "\n Visiter number: $maara");
    fwrite($tt, "\n ----------------------------------------");
fclose($tt);
 
$ts = fopen("Visitors.txt", "w");
    fwrite($ts, "$maara");
fclose($ts);
 
?>
Tämmöstä erroria heittää:
Parse error: syntax error, unexpected T_VARIABLE in /home/a8427277/public_html/index.php on line 23
Rivi 23 on siis: "$ip = $_SERVER['REMOTE_ADDR'];"
Olen siis uusi php:ssä ja en tosiaankaan tajua miksi se tuota...
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: PHP-ongelmat

Post by Feuer »

Code: Select all

$maara = $maarat + 1
Pitäisi rivin päässä olla ; - merkki
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
User avatar
Laurenzo
Member
Posts: 85
Joined: Mon Apr 25, 2011 8:28 am
Location: Tampere
Contact:

Re: PHP-ongelmat

Post by Laurenzo »

Vieraskirjassa http://laurenzo.arkku.net/gosti.php Roskapostia :cry:
Kuinka vieraskirjasta voi poistaa viestejä?
Aloittelija koodari joka
osaa jo jotain (ehkä) :)
KOTISIVU
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: PHP-ongelmat

Post by esa94 »

Laurenzo wrote:Vieraskirjassa http://laurenzo.arkku.net/gosti.php Roskapostia :cry:
Kuinka vieraskirjasta voi poistaa viestejä?
Kuinka vieraskirja on toteutettu?
User avatar
Peltsi
Active Member
Posts: 121
Joined: Thu Sep 30, 2010 12:16 pm

Re: PHP-ongelmat

Post by Peltsi »

Laurenzo wrote:Vieraskirjassa http://laurenzo.arkku.net/gosti.php Roskapostia :cry:
Kuinka vieraskirjasta voi poistaa viestejä?
Laita vieraskirjaasi tarkistuskysymys joka estää botteja kirjoittelemasta.
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: PHP-ongelmat

Post by Feuer »

Miksei PHP anna kutsua julkista yläluokan konstruktoria? :roll:

Code: Select all

class DB 
{
    private $pdo = null;

    protected function getPdo()
    {
        return $this->pdo;
    }


    public function __construct() 
    {
        try
        {
            $opt = array(
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'");

            $this->pdo = new PDO("mysql: host=localhost; dbname=tietokanta","feuer","minun_salasanani", $opt);
        }
        catch(PDOException $ex)
        {
            DIE("Tietokantayhteys epäonnistui");
        }            
    }
}
ja perivä luokka

Code: Select all


require_once "DB.php";

/**
 * Laajentaa DB:tä lautaan liittyvillä metodeilla.
 *
 * @author Feuer
 */
class Lauta extends DB
{
    public function __construct() 
    {
        parent::__construct();
    }
}
 
new Lauta() - kutsu johtaa seuraavaan erroriin: Fatal error: Cannot call constructor in _kehityspröngin_sijainti_palvelimella_/Tietokanta/Lauta.php on line 14

ja rivi neljätoista on tuo Lauta-konstruktorin parent::__construct(); - kutsu.
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: PHP-ongelmat

Post by valscion »

Minulla tuo kyllä toimii. Etsimäsi virhe ei ole tuossa kohtaa, tai sitten PHP-versiosi on liian vanha. Testasin ajaa tuon koodisi, lisäsin perään rivin

Code: Select all

$test = new Lauta(); 
ja PHP ilmoitti vain että Tietokantayhteys epäonnistui.

EDIT: Oiskohan mahdollista että sinulla olisi toinen DB luokka tai jotkut muut nimiavaruudet kolaroivat keskenään? Ilman täyttä koodia on mahdotonta sanoa tätä varmuudella mutta sitä ei vissiin kyllä kannata tänne laittaa.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: PHP-ongelmat

Post by Feuer »

:roll:

Ongelma oli kansioihin jaetuissa kooditiedostoissa ja väärillä poluilla asetelluissa require_onceissa, jotka eivät huutaneet erroria vaikka tiedostoa ei löytynytkään.
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: PHP-ongelmat

Post by valscion »

Feuer wrote::roll:

Ongelma oli kansioihin jaetuissa kooditiedostoissa ja väärillä poluilla asetelluissa require_onceissa, jotka eivät huutaneet erroria vaikka tiedostoa ei löytynytkään.
Kannattaa kyllä koodatessa laittaa se virheitten raportointi päälle heti.

http://fi2.php.net/manual/en/function.e ... orting.php

Code: Select all

<?php
// Tämä kaiken koodin eteen:
error_reporting( E_ALL );
?>
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: PHP-ongelmat

Post by TheFish »

VesQ wrote:
Feuer wrote::roll:

Ongelma oli kansioihin jaetuissa kooditiedostoissa ja väärillä poluilla asetelluissa require_onceissa, jotka eivät huutaneet erroria vaikka tiedostoa ei löytynytkään.
Kannattaa kyllä koodatessa laittaa se virheitten raportointi päälle heti.

http://fi2.php.net/manual/en/function.e ... orting.php

Code: Select all

<?php
// Tämä kaiken koodin eteen:
error_reporting( E_ALL );
?>
Lienee parempi laittaa ne kehitysympäristössä päälle php.inin kautta.
CoolBasic henkilökuntaa
Kehittäjä
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: PHP-ongelmat

Post by Feuer »

Kyllähän minulla on erään joka sivulle sisällytettävän headerin ensimmäisinä riveinä seuraava

Code: Select all

ini_set("display_errors", 1);
ini_set("error_reporting", E_ALL | E_STRICT);
 
mutta kun joku idiootti sisällytti tuossa selaimen pyytämässä sivussa, jossa ongelmaa esiintyi, ensin tietokantaluokat ja sitten vasta edellämainitun headerin, jolloin virheilmoitusten ilmestyminen on luonnollisesti vähän niin ja näin 8-) Jäi vain ihmetyttämään, että kun require_once ei tiedostoa löytänyt, se ei tappanut skriptin suoritusta, kuten [url=http://www.php.net/manual/en/function.require.php]dokumentaationurl] mukaan sen olisi ymmärtääkseni pitänyt tehdä ilman error-reporting-asetuksiakin.
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Post Reply