» »

php pomoč

php pomoč

kodsiti1 ::

Pozdravljeni, potreboval bi pomoč in sicer v skripti za registriranje uporabnike, potreboval pa bi 2 stvari.
1.) Kako naj naredim da bo Checkbox potrebno obkljukati in da brez njega ni mogoce opraviti registracije(tako kot je v skripti če je prostorček prazen za katerokoli drugo polje, sem probal za checkbox ampak ne deluje, o phpju imam pa bolj malo znanja)
2.) Referral ni nujno in je samo v nekaterih primerih. Sedaj pa kako bi naredil da v primeru da bi bil link referral(v kodi je narejeno da se v tem primeru pokaže novo oknco v katerem je številka referrala in je readonly) da bi se ta referral ob registraciji vpisal tudi v mysql bazo ker trenutno se ne, in ja sem naredil novo vrstico 'referrer' v mysql...

<?php

		
		if (isset($_POST['registerBtn']))
		{	

			$username = $_POST['username'];
			$password = $_POST['password'];
			$rpassword = $_POST['rpassword'];
			$email = $_POST['email'];
			$errors = array();
			$checkUsername = $odb -> prepare("SELECT COUNT(*) FROM `users` WHERE `username` = :username");
			$checkUsername -> execute(array(':username' => $username));
			$countUsername = $checkUsername -> fetchColumn(0);
			if ($checkUsername > 0)
			{
				$errors['Username is already taken'];
			}
			if (!ctype_alnum($username) || strlen($username) < 4 || strlen($username) > 15)
			{
				$errors[] = 'Username Must Be  Alphanumberic And 4-15 characters in length';
			}
			if (!filter_var($email, FILTER_VALIDATE_EMAIL))
			{
				$errors[] = 'Email is invalid';
			}
			if (empty($username) || empty($password) || empty($rpassword) || empty($email))
			{
				$errors[] = 'Please fill in all fields';
			}
			if ($password != $rpassword)
			{
				$errors[] = 'Passwords do not match';
			}
			if (empty($errors))
			{
				$insertUser = $odb -> prepare("INSERT INTO `users` VALUES(NULL, :username, :password, :email, 0, 0, 0, 0)");
				$insertUser -> execute(array(':username' => $username, ':password' => SHA1($password), ':email' => $email));
				echo '<div class="alert success"><p><strong>SUCCESS: </strong>User has been registered.  Redirecting....</p></div><meta http-equiv="refresh" content="3;url=login.php">';
			}
			else
			{
				echo '<div class="alert error"><p><strong>ERROR:</strong><br />';
				foreach($errors as $error)
				{
					echo '-'.$error.'<br />';
				}
				echo '</div>';
			}
		}
		?>


se drug del
 <form action="" id="validate" class="form" method="POST">
    			<p class="inline-small-label">
					<label for="username">Username</label>
					<input type="text" name="username" id="username" maxlength="15" class="required">
				</p>
		    <p class="inline-small-label">
					<label for="password">Password</label>
					<input type="password" name="password" id="password"  class="required">
				</p>
							<p class="inline-small-label">
					<label for="username">Repeat Pass</label>
					<input type="password" name="rpassword" id="rpass"  class="required">
				</p>
					<p class="inline-small-label">
					<label for="username">Email</label>
					<input type="text" name="email" id="email"  class="required">
				</p>

<?php if(isset($_GET['ref'])){?>
	<label for="input01"><strong>Referrer ID</strong></label>
	   <input type="text" name="referral" id="referral" value="<?php echo $_GET['ref']; ?>" readonly="readonly"></p>
	   <?php } ?>
    			<p>
					<label><input type="checkbox" id="checkbox">DA</label>
				</p>



Če bi znal kdo pomagat oz. napisat novo kodo bi bil zelo hvaležen :D
  • poskusilo klonirati: kodsiti1 ()

kodsiti1 ::

evo prosim moderatorja ce lahko zapre, sem prestavil v drugo temo mislim da je tista tematika bolj ugodna
php pomoč

Ziga Dolhar ::

Za začetek - daj checkboxu attribut name.

Kje se ti pa ustavi pri preverjanju, ali je checkbox označen ali ne?
https://dolhar.si/

kodsiti1 ::

Aja minogrede skripta je delujoča, jaz sem dodal le ta checkbox kot label, ampak ni nobenega phpja ki bi to preveril, ker ne vem kako, to je potrebno dodati :c

Pa rad bi še vdelal za referrer...ko bi le znal... Saj nekaj improviziram samo porabim zlo veliko casa pa se rata mi ne.

satko ::

za checkbox lahko preveriš če je obkljukan z
if(isset($_POST['checkbox']) == false){$errors[] = 'Checkbox ni nastavljen';}


tisto glede refferal pa nevem če sem razumel najbolje, ampak načeloma lahko podobno logiko

if(isset($_POST['referal'])){//Vstaviš $_POST['referal'] v bazo}

kodsiti1 ::

E hvala ti za checkbox dela.


Glede referrala sem pa pač mislil, da se nebo vsak registriral preko referrala, če se bo bo pa v linku register.php?ref=številka in sej je v kodi da se pojavi novo oknce kjer piše referral... Ampak ni pa nikjer v phpju da bi se to vpisalo v mysql bazo, in to je tisto kar hočem.

Glede tega pa nevem kam naj to vstavim oz. kako...mislim da bi bilo treba v tem del kode samo nimam pojma kako in če se da IF vstavljat tu vmes
                $insertUser = $odb -> prepare("INSERT INTO `users` VALUES(NULL, :username, :password, :email, 0, 0, 0, 0)");
                $insertUser -> execute(array(':username' => $username, ':password' => SHA1($password), ':email' => $email));

satko ::

če insertaš na ta način, morajo biti vpisani podatki v istem zaporedju kot si sledijo stolpci

ker ne poznam strukture tvoje tabele predvidevajmo, da je recimo zadnji stolpec refferal

$referral = $_POST['referral'];

if(empty($referral)){
$sql = "INSERT INTO `users` VALUES(NULL, :username, :password, :email, 0, 0, 0, 0, NULL)"
$arr = array(':username' => $username, ':password' => SHA1($password), ':email' => $email));
}
else{
$sql = "INSERT INTO `users` VALUES(NULL, :username, :password, :email, 0, 0, 0, 0, :referral)"
$arr = array(':username' => $username, ':password' => SHA1($password), ':email' => $email, ':referral' => $referral));
}

$insertUser = $odb -> prepare($sql);
$insertUser -> execute($arr);

Zgodovina sprememb…

  • spremenil: satko ()

kodsiti1 ::

ja hvala sem zrihtal in deluje.

Sedaj imam pa še eno drugo stvar in sicer prejšna osnova je bila takšna in je delovala.
$usernamesql = $odb -> prepare("SELECT `username` FROM `users` WHERE `id` = :id");
			  $usernamesql -> execute(array(":id" => (int)$user_id));
			  $username = $usernamesql -> fetchColumn(0);

			  $data = array(
				':tid' => $txn_id, 
				':plan' => (int)$membership_id,
				':email' => $_POST['payer_email'],
				':user' => (int)$user_id,
				':paid' => (float)$mc_gross, 
			  );
			  $odb -> setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
			  $insertsql = $odb -> prepare("INSERT INTO `payments` VALUES(NULL, :paid, :plan, :user, :email, :tid, UNIX_TIMESTAMP())");
			  $insertsql -> execute($data);
                          
			 


Sedaj pa bi jaz rad da se zapiše v tabelo tudi referral številka(ta številka je zapisana v tabeli "users" vrstica referral). In sem naredil takole, nevem pa če je prav ali ni, morda kdo ve če je in ali bo delovalo?

 $usernamesql = $odb -> prepare("SELECT `username` FROM `users` WHERE `id` = :id");
			  $usernamesql -> execute(array(":id" => (int)$user_id));
			  $username = $usernamesql -> fetchColumn(0);
                          
                          $refsql = $odb -> prepare("SELECT `referral` FROM `users` WHERE `id` = :id");
			  $refsql -> execute(array(":id" => (int)$ref_id));
			  $ref = $refsql -> fetchColumn(0);

			   $data = array(
				':tid' => $txn_id, 
				':plan' => (int)$membership_id,
				':email' => $_POST['payer_email'],
				':user' => (int)$user_id,
				':paid' => (float)$mc_gross, 
				':ref' => (int)$ref_id,
			  );
			  $odb -> setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
			  $insertsql = $odb -> prepare("INSERT INTO `payments` VALUES(NULL, :paid, :plan, :user, :email, :tid, UNIX_TIMESTAMP(), :ref)");
			  $insertsql -> execute($data);



Z tisto "select" vrstico je mišljeno da najde referral številko pod userjem z katerim se ujema številka njegovega računa ki je znana.... Samo nevem če sem pravilno napisal kodo in bo poiskalo referral številko ali id številko?

Zgodovina sprememb…

  • spremenilo: kodsiti1 ()

satko ::

zgleda že prav, edino ni najbolj smotrno da dvakrat kličeš sql bazo, sploh glede na to da podajaš iste parametre. To lahko vse narediš z enim select stavkom

recimo tako:

$usernamesql = $odb -> prepare("SELECT `username`, `referral` FROM `users` WHERE `id` = :id");
             $usernamesql -> execute(array(":id" => (int)$user_id));
             $username = $usernamesql -> fetchColumn(0);
             $ref = $usernamesql -> fetchColumn(1); //ker smo referral podali na drugem mestu, bo v rezultatu v drugem stolpcu

Zgodovina sprememb…

  • spremenil: satko ()

kodsiti1 ::

Ok hvala sem do sedaj vse popravil in evo sedaj pa nova stvar :)

In sicer tale koda deluje
$SQLGetLogs = $odb -> query("SELECT `payments`.*, `plans`.`name` AS `planname`, `users`.`username` FROM `payments` LEFT JOIN `plans` ON `payments`.`plan` = `plans`.`ID` LEFT JOIN `users` ON `payments`.`user` = `users`.`ID` ORDER BY `ID` DESC");
				while($getInfo = $SQLGetLogs -> fetch(PDO::FETCH_ASSOC))
				{
					$user = $getInfo['username'];
					$plan = $getInfo['planname'];
					$email = $getInfo['email'];
					$tid = $getInfo['tid'];
					$amount = $getInfo['paid'];
					$date = date("m-d-Y, h:i:s a" ,$getInfo['date']);

Naloga je da dobi podatke o transakcijah, in deluje, samo jaz bi rad da dobi samo tiste transakcije, kjer se referral številka v payments tabeli ujema z številko uporabnika.
In predvidevam da bi moral dodati to kodo.
WHERE 'ref' = ':id'


Ampak problem je ker nevem kam naj to vstavim? Sem probaval pa mi vedno javi error "
Fatal error: Call to a member function fetch()" Za to vrstico(BREZ TE "where ref=id" pa normalno deluje!)
while($getInfo = $SQLGetLogs -> fetch(PDO::FETCH_ASSOC))


Ce kdo morda ve, kam bi moral vriniti tole where ref = id kodo?

fx ::

Zanima me, kako lahko rešim težavo. Namreč s PHP in MySQL generiram PDF dokument, katerega predhodno v brskalniku pregledaš in nato ga shraniš.
Pri shranjevanju, želim da v oknu zapiše ustrezno poljubno ime in ne ime dokumenta (v mojem primeru pdf.php).
Uporabljam mPDF, kateri pozna naslednji ukaz

$mpdf->Output("poljubno ime dokumenta.pdf", "I");


Slednja vrstica zelo lepo deluje v FF in Chromu v IE11 pa ne.

Moje vprašanje je, če obstaja kaj takega, da v brskalniku vidiš URL : http://domena.eu/poljubno ime dokumenta.pdf v resnici je to http://domena.eu/pdf.php?id=12345 in ko shraniš ti kar ponudi ime dokumenta in ne *.php

Hvala,
Lep pozdrav,

fx

Ziga Dolhar ::

Ti morda ne deluje zaradi presledkov? Kaj se zgodi, če presledke nadomestiš z %20?
https://dolhar.si/

fx ::

Se vedno v IE 11 ne dela, ce dodam %20 ali pa odstranim presledke, mi pri shranjevanju ponuja ime pdf da naj tako shranim.
Lep pozdrav,

fx

fx ::

Trenutno sem naredil tako, da php pogleda kateri brskalnik uporablja uporabnik in če je IE potem začasno shrani datoteko na strežnik in uporabnika preusmeri na imenovano datoteko in potem ko izbereš shrani lepo izpiše ime dokumenta, kakor sem želel s presledki in podobno.

Hvala za trud.
Lep pozdrav,

fx


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

php vprašanje.

Oddelek: Programiranje
162247 (1491) fx
»

[php] preverjanje online uporabnikov

Oddelek: Programiranje
262064 (1720) cobrica
»

Problem z DNS (non-improving refferal)

Oddelek: Omrežja in internet
325414 (5139) SasoS
»

problem z phpjem

Oddelek: Izdelava spletišč
304253 (3666) snow
»

Zelo enostavna PHP skripta, ki ne dela - help :(

Oddelek: Izdelava spletišč
131558 (1323) snow

Več podobnih tem