Jump to content
php.lv forumi

Problēma!


!Crj.

Recommended Posts

Nopirku vakar jauno grāmatu par PHP, bet kaut kas neiet. Kaut kas man nav kārtībā ar vērību piešķiršnu (vismaz es tā domāju) scenārijā 3-1 un 3-2, jo kad es ievadu informāciju logos nākamajā lapā tā vietā kur kaut kam vajadzētu būt nekā nav! Nu varbūt paskataties?

 

<code><font color="#000000">

<HTML>
<head><title>hei!</title></head>
<body>
<form action="forms.php" method="post">
<h1>Ievadi savu info</h1>
<table>
<tr><td>Vārds:</td><td><input type="text" name="vards"></td></tr>
<tr><td>Uzvārds:</td><td><input type="text" name="uzvards"></td></tr>
<tr><td>Vecums:</td><td><input type="text" name="vecums"></td></tr>
<tr><td>E-mails:</td><td><input type="text" name="mails"></td></tr>
<tr><td>Adrese:</td><td><input type="text" name="adrese"></td></tr>
<tr><td>Telefons:</td><td><input type="text" name="telefons"></td></tr>
<tr><td></td><td><input type="submit" name="submit" value="Tālāk">
<input type="reset" name="reset" value="Dzēst"> </td></tr>
</table></form>
</body>
</HTML>
</font>
</code>

<code><font color="#000000">

<font color="#0000CC"><?php
</font><font color="#006600">print(</font><font color="#CC0000">"<h1>Tu sniedzi šādu informāciju $vards :<h1><table>n"</font><font color="#006600">);
print(</font><font color="#CC0000">"<tr><td>Vārds:</td><td><b>$vards</b></td></tr>n"</font><font color="#006600">);
print(</font><font color="#CC0000">"<tr><td>Uzvārds:</td><td><b>$uzvards</b></td></tr>n"</font><font color="#006600">);
print(</font><font color="#CC0000">"<tr><td>Vecums:</td><td><b>$vecums</b></td></tr>n"</font><font color="#006600">);
print(</font><font color="#CC0000">"<tr><td>E-mails:</td><td><b>$mails</b></td></tr>n"</font><font color="#006600">);
print(</font><font color="#CC0000">"<tr><td>Adrese:</td><td><b>$adrese</b></td></tr>n"</font><font color="#006600">);
print(</font><font color="#CC0000">"<tr><td>Telefons:</td><td><b>$telefons</b></td></tr>n"</font><font color="#006600">);
</font><font color="#0000CC">?>
</font>
</font>
</code>

Link to comment
Share on other sites

  • Replies 59
  • Created
  • Last Reply

Top Posters In This Topic

Lieta tāda, ka šī skripta autors lieto PHP ar ieslēgtajiem globālajiem mainīgiem, savukārt tu pēc visiem pareizas programmēšanas priekšrakstiem šādu iespēju esi atslēdzis. Nekādā gadījumā nesadomā globālos mainīgos slēgt atpakaļ iekšā, bet gan atceries, ka turpmāk formu, cookie, sesiju, augšupielādēto failu un caur URL nodotie mainīgie jāpiesauc ka superglobālo masīvu elementi:

 

Cookiji glabājas zem $_COOKIE, sesiju mainīgie zem $_SESSION ...

Tavā gadījumā tiek izmantota forma ar method="POST", kas nozīmē, ka formas mainīgos action laukā norādītajā skriptā varēs piesaukt vai nu kā $_POST masīva elementus, vai arī kā $_REQUEST masīva elementus.

 

Ja formā kā metode tiktu norādīts "GET", tad mainīgie būtu masīvā $_GET, kā arī $_REQUEST.

 

Un tātad, lai noskaidrotu vai lietotājs ievadījis formā savu vārdu jāraksta sekojošā koda rindiņa:

 

<code><font color="#000000">
<font color="#0000CC"><?php
</font><font color="#006600">if (isset(</font><font color="#0000CC">$_POST</font><font color="#006600">[</font><font color="#CC0000">'vards'</font><font color="#006600">]))
{
echo </font><font color="#CC0000">"Tu ievadīji savu vārdu: </font><font color="#006600">{</font><font color="#CC0000">$_POST</font><font color="#006600">[</font><font color="#CC0000">'vards'</font><font color="#006600">]}</font><font color="#CC0000">"</font><font color="#006600">;
}
</font><font color="#0000CC">?></font>
</font>
</code>

 

Un ja tev, lietojot augstāk atrodamo pamācību tāpat nekas nestrādā, pajautā sev, vai tu PHP sev vispār uzstādīji???

Link to comment
Share on other sites

Bez jb4 teiktaa veel piebildiishu, ka labaak meegjini neizmantot print, bet taa vietaa lieto echo, jo tas buus aatraak.

Siikaak par to ieksh:

http://www.phpbuilder.com/columns/weerning...209.php3?page=3

 

taa vietaa, lai rakstiitu

<code><font color="#000000">

<font color="#0000CC"><?
</font><font color="#006600">print(</font><font color="#CC0000">"<h1>Tu sniedzi šādu informāciju $vards :<h1><table>n"</font><font color="#006600">);
</font><font color="#0000CC">?></font>
</font>
</code>

pameegjini shaadu pierakstu:

<code><font color="#000000">
<font color="#0000CC"><?
</font><font color="#006600">echo </font><font color="#CC0000">'<h1>Tu sniedzi šādu informāciju '</font><font color="#006600">.</font><font color="#0000CC">$vards</font><font color="#006600">.</font><font color="#CC0000">' :<h1><table>'</font><font color="#006600">.</font><font color="#CC0000">"n"</font><font color="#006600">;
</font><font color="#0000CC">?></font>
</font>
</code>

probleema ir taada, ka php meegjina parseet visu, kas ir ieksh peedinjaam un tur zuud mili sekundes, jo lielaaks blaakjis, jo vairaak zuud attieciigi. lielaa projektaa tas summeejas un ir bremze :)

 

p.s.

pirms "n" ieksh peedinjaam ir shkjeersviitra pa kreisi. te skripts to izravee :(

Link to comment
Share on other sites

Es veel piebildiishu ka veel labaak ir lietot

<code><font color="#000000">
<h1>Tu sniedzi šādu informāciju:<h1><table>
<tr><td>Vārds:</td><td><b><font color="#0000CC"><? </font><font color="#006600">echo </font><font color="#0000CC">$vards</font><font color="#006600">; </font><font color="#0000CC">?></font></b></td></tr>
<tr><td>Uzvārds:</td><td><b><font color="#0000CC"><? </font><font color="#006600">echo </font><font color="#0000CC">$uzvards</font><font color="#006600">; </font><font color="#0000CC">?></font></b></td></tr>
<tr><td>Vecums:</td><td><b><font color="#0000CC"><? </font><font color="#006600">echo </font><font color="#0000CC">$vecums</font><font color="#006600">; </font><font color="#0000CC">?></font></b></td></tr>
<tr><td>E-mails:</td><td><b><font color="#0000CC"><? </font><font color="#006600">echo </font><font color="#0000CC">$mails</font><font color="#006600">; </font><font color="#0000CC">?></font></b></td></tr>
<tr><td>Adrese:</td><td><b><font color="#0000CC"><? </font><font color="#006600">echo </font><font color="#0000CC">$adrese</font><font color="#006600">; </font><font color="#0000CC">?></font></b></td></tr>
<tr><td>Telefons:</td><td><b><font color="#0000CC"><? </font><font color="#006600">echo </font><font color="#0000CC">$telefons</font><font color="#006600">; </font><font color="#0000CC">?></font></b></td></tr></font>
</code>

 

Shaadi buus krietni aatraak.. mazaak kjepigaak un saprotamaak..

 

Bet lai tas stradaatu vispaar tad jaizdara viena no sekoshaam lietaam (personiigi mazaaks kjeepas labad iesaku pirmo):

 

1) jaaotrod php.ini (uz Windows parasti zem C:/Windows uz Linux /usr/local/lib/) un jaizlabo tajaa viena rindinja

register_globals=Off

uz

register_globals=On

 

un jaarestartee Apache (buutu veelams ja STOP un START nevis RESTART)

 

vai arii..

 

2) shajaa gadijumaa forms.php saakumaa ielikt

<code><font color="#000000">
<font color="#0000CC"><?
[url=http://lv.php.net/extract]extract[/url]</font><font color="#006600">(</font><font color="#0000CC">$_POST</font><font color="#006600">, </font><font color="#0000CC">EXTR_SKIP</font><font color="#006600">);
</font><font color="#0000CC">?></font>
</font>
</code>

shaadi $_POST[vaards] vietaa vareesim lietot arii $vaards

Link to comment
Share on other sites

Es veel piebildiishu ka veel labaak ir lietot

<code><font color="#000000">
<h1>Tu sniedzi šādu informāciju:<h1><table>
<tr><td>Vārds:</td><td><b><font color="#0000CC"><? </font><font color="#006600">echo </font><font color="#0000CC">$vards</font><font color="#006600">; </font><font color="#0000CC">?></font></b></td></tr>
<tr><td>Uzvārds:</td><td><b><font color="#0000CC"><? </font><font color="#006600">echo </font><font color="#0000CC">$uzvards</font><font color="#006600">; </font><font color="#0000CC">?></font></b></td></tr>
<tr><td>Vecums:</td><td><b><font color="#0000CC"><? </font><font color="#006600">echo </font><font color="#0000CC">$vecums</font><font color="#006600">; </font><font color="#0000CC">?></font></b></td></tr>
<tr><td>E-mails:</td><td><b><font color="#0000CC"><? </font><font color="#006600">echo </font><font color="#0000CC">$mails</font><font color="#006600">; </font><font color="#0000CC">?></font></b></td></tr>
<tr><td>Adrese:</td><td><b><font color="#0000CC"><? </font><font color="#006600">echo </font><font color="#0000CC">$adrese</font><font color="#006600">; </font><font color="#0000CC">?></font></b></td></tr>
<tr><td>Telefons:</td><td><b><font color="#0000CC"><? </font><font color="#006600">echo </font><font color="#0000CC">$telefons</font><font color="#006600">; </font><font color="#0000CC">?></font></b></td></tr>
</font>
</code>

 

Shaadi buus krietni aatraak.. mazaak kjepigaak un saprotamaak..

nuuu .. shaubos gan .. ja saaksies kaut kaadi IF - then - else .. tad tu man liekas, ka smagi lamaasies, ja kaadreiz buus kods jaalabo .. :unsure:

 

ir taads jeedziens kaa izskata atdaliishana no koda .. ;)

Link to comment
Share on other sites

Kur saaksies if then else?

 

PHP ir 'dirty hack html-embeded-language'.. un principaa nekas nav jaatdala.

Svariigs ir izpildes aatrums kaa arii koda vizuaalais pieraksts..

Piedod man bet echo "<html> ..... "; (t.i. izvadiit lietas kas nekad nemainiisies lieki liekot paarserim taam iet cauri) nafig nav vajadziigs.. saakotneejaa piemeeraa vadot visus html tagus laukaa tu zaudee uzskatamiibu kur tad reaali ir dinamiskais kontents..

 

Un par lietaam kuras ir testeetas un diezgan ilgaa laikaa atsradaatas nav pamats shaubiities..

Link to comment
Share on other sites

Kur saaksies if then else?

 

PHP ir 'dirty hack html-embeded-language'.. un principaa nekas nav jaatdala.

Svariigs ir izpildes aatrums kaa arii koda vizuaalais pieraksts..

Piedod man bet echo "<html> ..... "; (t.i. izvadiit lietas kas nekad nemainiisies lieki liekot paarserim taam iet cauri) nafig nav vajadziigs.. saakotneejaa piemeeraa vadot visus html tagus laukaa tu zaudee uzskatamiibu kur tad reaali ir dinamiskais kontents..

 

Un par lietaam kuras ir testeetas un diezgan ilgaa laikaa atsradaatas nav pamats shaubiities..

neviens jau te nerunaa par

<code><font color="#000000">
<font color="#0000CC"><? </font><font color="#006600">echo </font><font color="#CC0000">'<html>....'</font><font color="#006600">; </font><font color="#0000CC">?></font>
</font>
</code>

prieksh tam ir citas lietas ;)

 

kas attiecas uz koda vizuaalo izskatu .. tad nedomaaju, ka tas tavs dotais piemeers buutu baisi labi paarskataams .. labi, varbuut shajaa mazajaa piemeeraa arii ir iespeejams tiiri fiksi pielabot ko vaig .. bet ka saaktos kaut kas lielaaks, ta gan vareetu buut smagas probleemas ..

 

mosh arii man nav taisniiba .. bet nu man taads pieraksts nepatiik .. :lol:

Link to comment
Share on other sites

Mans variants:

Datus saglabā nelielā datubāzīte.

Izmantojamie faili:

index.html, forms.php, dati.txt.

Sākam :)

index.html saturs:

<code><font color="#000000">
<HTML>
<head><title>hei, beibe!</title></head>
<body>
<form action="forms.php" method="post">
<h1>Ievadi savu info</h1>
<table>
<tr><td>Vārds:</td><td><input type="text" name="vards"></td></tr>
<tr><td>Uzvārds:</td><td><input type="text" name="uzvards"></td></tr>
<tr><td>Vecums:</td><td><input type="text" name="vecums"></td></tr>
<tr><td>E-mails:</td><td><input type="text" name="mails"></td></tr>
<tr><td>Adrese:</td><td><input type="text" name="adrese"></td></tr>
<tr><td>Telefons:</td><td><input type="text" name="telefons"></td></tr>
<tr><td></td><td><input type="reset" name="reset" value="Dzēst">
<input type="submit" name="submit" value="Tālāk"></td></tr>
</table></form>
</body>
</HTML></font>
</code>

forms.php saturs:

<code><font color="#000000">

<font color="#0000CC"><?php
</font><font color="#FF9900">#dati saglabābas datubāzē, šajā gadījumā dati.txt
</font><font color="#0000CC">$datufails </font><font color="#006600">= </font><font color="#CC0000">"dati.txt"</font><font color="#006600">; </font><font color="#FF9900">// datu fails
</font><font color="#006600">echo </font><font color="#CC0000">"<b>$vards</b> sniedza šādu informāciju:<table>n"</font><font color="#006600">; </font><font color="#FF9900">//lietotājam redzamā informācija
</font><font color="#006600">echo </font><font color="#CC0000">"<tr><td>Vārds:</td><td><b>$vards</b></td></tr>n"</font><font color="#006600">;
echo </font><font color="#CC0000">"<tr><td>Uzvārds:</td><td><b>$uzvards</b></td></tr>n"</font><font color="#006600">;
echo </font><font color="#CC0000">"<tr><td>Vecums:</td><td><b>$vecums</b></td></tr>n"</font><font color="#006600">;
echo </font><font color="#CC0000">"<tr><td>E-mails:</td><td><b>$mails</b></td></tr>n"</font><font color="#006600">;
echo </font><font color="#CC0000">"<tr><td>Adrese:</td><td><b>$adrese</b></td></tr>n"</font><font color="#006600">;
echo </font><font color="#CC0000">"<tr><td>Telefons:</td><td><b>$telefons</b></td></tr></table>n"</font><font color="#006600">;
</font><font color="#FF9900"># dati ierakstās failā un lietotājam nav redzami
# $write ieraksta datus atdalot ar simbolu :|:
</font><font color="#0000CC">$write </font><font color="#006600">= </font><font color="#CC0000">"$vards:|:$uzvards:|:$vecums:|:$mails:|:$adrese:|:$telefonsrn"</font><font color="#006600">;
</font><font color="#FF9900"># vārdam jābūt kautkādam ierakstītam vārdam :))
</font><font color="#006600">if (</font><font color="#0000CC">$vards </font><font color="#006600">!= </font><font color="#CC0000">""</font><font color="#006600">)  {
</font><font color="#0000CC">$fd </font><font color="#006600">= </font><font color="#0000CC">fopen </font><font color="#006600">(</font><font color="#0000CC">$datufails</font><font color="#006600">, </font><font color="#CC0000">"a+"</font><font color="#006600">);
</font><font color="#0000CC">fwrite </font><font color="#006600">(</font><font color="#0000CC">$fd</font><font color="#006600">, </font><font color="#0000CC">$write</font><font color="#006600">);
</font><font color="#0000CC">[url=http://lv.php.net/fclose]fclose[/url]</font><font color="#006600">(</font><font color="#0000CC">$fd</font><font color="#006600">);
}
if (</font><font color="#0000CC">$vards </font><font color="#006600">== </font><font color="#CC0000">""</font><font color="#006600">){
echo </font><font color="#CC0000">"<b>Aizmirsi ierakstīt savu vārdu !</b>"</font><font color="#006600">;
}
</font><font color="#0000CC">?></font>
</font>
</code>

dati.txt saturs pagaidām tukšs

Vajadzētu strādāt ;)

Link to comment
Share on other sites

Kaklz, K|ng!

 

nu echo "<td>.." ir ekvivalents echo "<html>.." jo taads pats tags kuram gar php nav nekaadas daljas..

 

Protams par gaumi nestriidas un katrs kodee kaa veelas, tachu ir slikti savu kodeeshanas stilu maaciit/raadiit citiem ja tas veel leens, nekorekts un teikshu pat ugly..

Un smagas probleemas rodas tieshi shaados variantos..

Nu shajaa gadijumaa varbuut arii tas nav tik aktuaali jo piemeers un risinaajums ir mazinsh, tachu diezva cienijamais Kaklz ir kodeejis kaut ko lielaaku ja apgalvo ka shaadi izbeegsim no probleemaam sarezgjitaakos projektos ;)

 

Golden Rules for optimizing your pages

http://www.phpbuilder.com/columns/weerning...209.php3?page=4

 

Taa kaa luudzu pirms dodiet koda piemeerus ieveerojiet vismaz dazhus pamatprincipus un "labas uzvediibas (ptfu kodeeshanas) ieteikumus"..

http://phpbuilder.com/columns/tim20010101.php3

http://marc.theaimsgroup.com/?l=php-pear&m...3413001842&q=p3

Link to comment
Share on other sites

tachu diezva cienijamais Kaklz ir kodeejis kaut ko lielaaku ja apgalvo ka shaadi izbeegsim no probleemaam sarezgjitaakos projektos ;)

ir ir gadiijies, vari nesatraukties .. :)

 

ir gadiijies arii parakaaties pa tevis piedaavaatajaa stilaa rakstiitajiem skriptiem .. un godiigi sakot, man tas galiigi nemaz nepatika - pazuud nojeega par to, kur mekleet vienu vai otru fiichu, kas jaaizlabo, jaanovaac vai kaa savaadaak. Pilniigi pieljauju domu, ka tie skripti, kas man bija jaalabo bija rakstiiti absoluuti liiki un tur nebija nekaadas struktuuras, taapeec arii man taa visa bauda pazuda .. tachu pats labpraataak dodu priekshroku output gjenereet tikai vienaa vietaa, nevis visa skripta garumaa .. ;)

 

<code><font color="#000000">

	<table cellpadding="0" cellspacing="0" height="490" border="0" align="left" bgcolor="#ffffcc" align="center" width="800">
		 <font color="#0000CC"><? </font><font color="#006600">if(!</font><font color="#0000CC">[url=http://lv.php.net/array_key_exists]array_key_exists[/url]</font><font color="#006600">(</font><font color="#CC0000">'S_ID'</font><font color="#006600">,</font><font color="#0000CC">$PageContext</font><font color="#006600">-></font><font color="#0000CC">PageParameters</font><font color="#006600">)): </font><font color="#0000CC">?>
</font>				<tr><td width="20"> </td></tr>
			<font color="#0000CC"><?</font><font color="#006600">endif; </font><font color="#0000CC">?>
</font>			 <tr>
			<font color="#0000CC"><? </font><font color="#006600">if(!</font><font color="#0000CC">[url=http://lv.php.net/array_key_exists]array_key_exists[/url]</font><font color="#006600">(</font><font color="#CC0000">'S_ID'</font><font color="#006600">,</font><font color="#0000CC">$PageContext</font><font color="#006600">-></font><font color="#0000CC">PageParameters</font><font color="#006600">)): </font><font color="#0000CC">?>
</font>				<td width="20"> </td>
			<font color="#0000CC"><?php
			</font><font color="#006600">else:  </font><font color="#0000CC">?>
</font>				<td width="5"> </td>
			<font color="#0000CC"><?</font><font color="#006600">endif; </font><font color="#0000CC">?>
</font>				<td valign="top" height="30" align="left" colspan="2">
			<font color="#0000CC"><?php
			</font><font color="#006600">if(</font><font color="#0000CC">[url=http://lv.php.net/array_key_exists]array_key_exists[/url]</font><font color="#006600">(</font><font color="#CC0000">'S_ID'</font><font color="#006600">,</font><font color="#0000CC">$PageContext</font><font color="#006600">-></font><font color="#0000CC">PageParameters</font><font color="#006600">)): </font><font color="#0000CC">?>
</font>				<p align="center">Change your details</p>
			<font color="#0000CC"><?php
			</font><font color="#006600">else:  </font><font color="#0000CC">?>
</font>				  <font class="text4">    <b>Register</b> as a Free Member</font>
				 <hr size="1" color="#333399" width="740">
			<font color="#0000CC"><?</font><font color="#006600">endif; </font><font color="#0000CC">?>
</font>				</td>
		</tr>
</font>
</code>

 

skaisti vai ne?

 

prieksh nopietnaam lietaam ir veerts padomaat par kaut ko liidziigu template engine .. ;)

Link to comment
Share on other sites

Kaklz, K|ng!

Nekad neko neesmu kodējis :P :blink:

Vienkārši piedalos loģiska uzdevuma risināšanā :D

Taa kaa luudzu pirms dodiet koda piemeerus ieveerojiet vismaz dazhus pamatprincipus un "labas uzvediibas (ptfu kodeeshanas) ieteikumus"..

Ko ta Tu gribēji, ja paši ņēmēji sev dod kodus :)

Link to comment
Share on other sites

Kompromatus velkam laukaa ... :))

Es roku uz sirdes uzliekot varu teikt, ka nevienu web pasūtījumu tā arī neesmu veicis un nevienu taisnu kodu neesmu uzrakstījis, bet inline HTML iekš PHP nav nekāds labais tonis.

 

Atdalīt itkā nemainīgo HTML kodu no PHP dinamiskā satura ir ātrs, bet nekādā gadījumā tālejošs pasākums.

Ko darīsim, ja pēkšņi pilnībā mainām lapas izskatu? Vai sākam meklēt kurā vietā kas drukājās laukā, kurā vietā dati tika sagatavoti? (Iekš OOP atrodam klasi, kas atbild par kaut kādas satura vienības parādīšanu un to tad arī labojam - bet te jāmeklē viscaur).

 

Par šablonu lietām. Ticēju šabloniem, līdz nonācu http://www.phppatterns.com

Padomājiet cik failos tiek turēti šabloni un cik tad ir mobili šie šabloni pie dizaina maiņas (nē, nu par inline HTML vispār nav ko teikt). Šablonus ir vērts lietot tikai reizē ar spēcīgu caching gan klienta, gan servera pusē, pretējā gadījumā pie sīkumainas informācijas (kad šablonā ir daudzi jūtīgie lauciņi), notiek visai ilga šo jūtīgo vietu meklēšana un aizpildīšana. Lieks darbiņš, ko OOPiskā risinājumā var aizmirst. Tāpat šīs kaudzes ar šablonfailiem ...

 

Tātad pašlaik esmu nonācis līdz slēdzienam, ka tālejošā projektā par procedurālu kodu jāaizmirst un viss jāmet pa objektiem. Dizainera rokās tiek dots CSS un tikai. Tajā tiek norādīts viss, kas skar lapas izskatu. Tā vairs nebūs, ka vienā tabulas rūtiņā ir dizaina bilde un blakus ir raksta virsraksts - PHP ģenerē pamatstruktūras un tām pievieno klašu atribūtus, kurus iekš stylesheetiem atliek aprakstiit "dizaineriem" (pašam, bet biku vēlāk :D). Pārējo XHTML ģenerēšanu var uzticēt tam domātām klasēm.

Link to comment
Share on other sites


×
×
  • Create New...